MyGUI 3.2.2

MyGUI_TSize.h
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 #ifndef MYGUI_TSIZE_H_
8 #define MYGUI_TSIZE_H_
9
10 #include "MyGUI_Prerequest.h"
11
12 namespace MyGUI
13 {
14 namespace types
15 {
16
17 template<typename T>
18 struct TSize
19 {
20 T width;
21 T height;
22
23 TSize() :
24 width(0),
25 height(0)
26 {
27 }
28
29 TSize(T const& _width, T const& _height) :
30 width(_width),
31 height(_height)
32 {
33 }
34
35 TSize(TSize const& _obj) :
36 width(_obj.width),
37 height(_obj.height)
38 {
39 }
40
41 TSize& operator -= (TSize const& _obj)
42 {
43 width -= _obj.width;
44 height -= _obj.height;
45 return *this;
46 }
47
48 TSize& operator += (TSize const& _obj)
49 {
50 width += _obj.width;
51 height += _obj.height;
52 return *this;
53 }
54
55 TSize operator - (TSize const& _obj) const
56 {
57 return TSize(width - _obj.width, height - _obj.height);
58 }
59
60 TSize operator + (TSize const& _obj) const
61 {
62 return TSize(width + _obj.width, height + _obj.height);
63 }
64
65 TSize& operator = (TSize const& _obj)
66 {
67 width = _obj.width;
68 height = _obj.height;
69 return *this;
70 }
71
72 template<typename U>
73 TSize& operator = (TSize<U> const& _obj)
74 {
75 width = _obj.width;
76 height = _obj.height;
77 return *this;
78 }
79
80 bool operator == (TSize const& _obj) const
81 {
82 return ((width == _obj.width) && (height == _obj.height));
83 }
84
85 bool operator != (TSize const& _obj) const
86 {
87 return !((width == _obj.width) && (height == _obj.height));
88 }
89
90 void clear()
91 {
92 width = height = 0;
93 }
94
95 void set(T const& _width, T const& _height)
96 {
97 width = _width;
98 height = _height;
99 }
100
101 void swap(TSize& _value)
102 {
103 TSize tmp = _value;
104 _value = *this;
105 *this = tmp;
106 }
107
108 bool empty() const
109 {
110 return ((width == 0) && (height == 0));
111 }
112
113 std::string print() const
114 {
115 std::ostringstream stream;
116 stream << *this;
117 return stream.str();
118 }
119
120 static TSize<T> parse(const std::string& _value)
121 {
122 TSize<T> result;
123 std::istringstream stream(_value);
124 stream >> result.width >> result.height;
125 if (stream.fail())
126 {
127 return TSize<T>();
128 }
129 else
130 {
131 int item = stream.get();
132 while (item != -1)
133 {
134 if (item != ' ' && item != '\t')
135 return TSize<T>();
136 item = stream.get();
137 }
138 }
139 return result;
140 }
141
142 friend std::ostream& operator << (std::ostream& _stream, const TSize<T>& _value)
143 {
144 _stream << _value.width << " " << _value.height;
145 return _stream;
146 }
147
148 friend std::istream& operator >> (std::istream& _stream, TSize<T>& _value)
149 {
150 _stream >> _value.width >> _value.height;
151 if (_stream.fail())
152 _value.clear();
153 return _stream;
154 }
155 };
156
157 } // namespace types
158
159 } // namespace MyGUI
160
161 #endif // MYGUI_TSIZE_H_
MyGUI::types::TSize::TSize
TSize()
Definition: MyGUI_TSize.h:23
MyGUI::types::TSize::operator==
bool operator==(TSize const &_obj) const
Definition: MyGUI_TSize.h:80
MyGUI_Prerequest.h
MyGUI::types::TSize::empty
bool empty() const
Definition: MyGUI_TSize.h:108
MyGUI::types::TSize
Definition: MyGUI_TSize.h:18
MyGUI::types::TSize::print
std::string print() const
Definition: MyGUI_TSize.h:113
MyGUI::types::TSize::operator-=
TSize & operator-=(TSize const &_obj)
Definition: MyGUI_TSize.h:41
MyGUI::types::TSize::operator!=
bool operator!=(TSize const &_obj) const
Definition: MyGUI_TSize.h:85
MyGUI::types::TSize::TSize
TSize(TSize const &_obj)
Definition: MyGUI_TSize.h:35
MyGUI::types::TSize::parse
static TSize< T > parse(const std::string &_value)
Definition: MyGUI_TSize.h:120
MyGUI::types::TSize::clear
void clear()
Definition: MyGUI_TSize.h:90
MyGUI::types::TSize::operator+=
TSize & operator+=(TSize const &_obj)
Definition: MyGUI_TSize.h:48
MyGUI
Definition: MyGUI_ActionController.h:14
MyGUI::types::TSize::width
T width
Definition: MyGUI_TSize.h:20
MyGUI::types::TSize::operator-
TSize operator-(TSize const &_obj) const
Definition: MyGUI_TSize.h:55
MyGUI::types::TSize::TSize
TSize(T const &_width, T const &_height)
Definition: MyGUI_TSize.h:29
MyGUI::types::TSize::operator=
TSize & operator=(TSize const &_obj)
Definition: MyGUI_TSize.h:65
MyGUI::types::TSize::operator+
TSize operator+(TSize const &_obj) const
Definition: MyGUI_TSize.h:60
MyGUI::types::TSize::height
T height
Definition: MyGUI_TSize.h:21
MyGUI::types::TSize::swap
void swap(TSize &_value)
Definition: MyGUI_TSize.h:101
MyGUI::types::TSize::operator>>
friend std::istream & operator>>(std::istream &_stream, TSize< T > &_value)
Definition: MyGUI_TSize.h:148