MyGUI
3.2.1
Main Page
Related Pages
Namespaces
Data Structures
Files
Examples
File List
Globals
mygui
MyGUIEngine
include
MyGUI_TCoord.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_TCOORD_H__
8
#define __MyGUI_TCOORD_H__
9
10
#include "
MyGUI_Prerequest.h
"
11
#include "
MyGUI_TPoint.h
"
12
#include "
MyGUI_TSize.h
"
13
14
namespace
MyGUI
15
{
16
namespace
types
17
{
18
19
template
<
typename
T>
20
struct
TCoord
21
{
22
T
left
;
23
T
top
;
24
T
width
;
25
T
height
;
26
27
TCoord
() :
28
left
(0),
29
top
(0),
30
width
(0),
31
height
(0)
32
{
33
}
34
35
TCoord
(T
const
& _left, T
const
& _top, T
const
& _width, T
const
& _height) :
36
left
(_left),
37
top
(_top),
38
width
(_width),
39
height
(_height)
40
{
41
}
42
43
TCoord
(
TCoord
const
& _obj) :
44
left
(_obj.
left
),
45
top
(_obj.
top
),
46
width
(_obj.
width
),
47
height
(_obj.
height
)
48
{
49
}
50
51
TCoord
(
TPoint<T>
const
& _point,
TSize<T>
const
& _size) :
52
left
(_point.
left
),
53
top
(_point.
top
),
54
width
(_size.
width
),
55
height
(_size.
height
)
56
{
57
}
58
59
TCoord
&
operator -=
(
TCoord
const
& _obj)
60
{
61
left
-= _obj.
left
;
62
top
-= _obj.
top
;
63
width
-= _obj.
width
;
64
height
-= _obj.
height
;
65
return
*
this
;
66
}
67
68
TCoord
&
operator +=
(
TCoord
const
& _obj)
69
{
70
left
+= _obj.
left
;
71
top
+= _obj.
top
;
72
width
+= _obj.
width
;
73
height
+= _obj.
height
;
74
return
*
this
;
75
}
76
77
TCoord
operator -
(
TCoord
const
& _obj)
const
78
{
79
return
TCoord
(
left
- _obj.
left
,
top
- _obj.
top
,
width
- _obj.
width
,
height
- _obj.
height
);
80
}
81
82
TCoord
operator -
(
TPoint<T>
const
& _obj)
const
83
{
84
return
TCoord
(
left
- _obj.
left
,
top
- _obj.
top
,
width
,
height
);
85
}
86
87
TCoord
operator -
(
TSize<T>
const
& _obj)
const
88
{
89
return
TCoord
(
left
,
top
,
width
- _obj.
width
,
height
- _obj.
height
);
90
}
91
92
TCoord
operator +
(
TCoord
const
& _obj)
const
93
{
94
return
TCoord
(
left
+ _obj.
left
,
top
+ _obj.
top
,
width
+ _obj.
width
,
height
+ _obj.
height
);
95
}
96
97
TCoord
operator +
(
TPoint<T>
const
& _obj)
const
98
{
99
return
TCoord
(
left
+ _obj.
left
,
top
+ _obj.
top
,
width
,
height
);
100
}
101
102
TCoord
operator +
(
TSize<T>
const
& _obj)
const
103
{
104
return
TCoord
(
left
,
top
,
width
+ _obj.
width
,
height
+ _obj.
height
);
105
}
106
107
TCoord
&
operator =
(
TCoord
const
& _obj)
108
{
109
left
= _obj.
left
;
110
top
= _obj.
top
;
111
width
= _obj.
width
;
112
height
= _obj.
height
;
113
return
*
this
;
114
}
115
116
template
<
typename
U >
117
TCoord
&
operator =
(
TCoord<U>
const
& _obj)
118
{
119
left
= _obj.
left
;
120
top
= _obj.
top
;
121
width
= _obj.
width
;
122
height
= _obj.
height
;
123
return
*
this
;
124
}
125
126
TCoord
&
operator =
(
TPoint<T>
const
& _obj)
127
{
128
left
= _obj.
left
;
129
top
= _obj.
top
;
130
return
*
this
;
131
}
132
133
TCoord
&
operator =
(
TSize<T>
const
& _obj)
134
{
135
width
= _obj.
width
;
136
height
= _obj.
height
;
137
return
*
this
;
138
}
139
140
bool
operator ==
(
TCoord
const
& _obj)
const
141
{
142
return
((
left
== _obj.
left
) && (
top
== _obj.
top
) && (
width
== _obj.
width
) && (
height
== _obj.
height
));
143
}
144
145
bool
operator !=
(
TCoord
const
& _obj)
const
146
{
147
return
!((
left
== _obj.
left
) && (
top
== _obj.
top
) && (
width
== _obj.
width
) && (
height
== _obj.
height
));
148
}
149
150
T
right
()
const
151
{
152
return
left
+
width
;
153
}
154
155
T
bottom
()
const
156
{
157
return
top
+
height
;
158
}
159
160
void
clear
()
161
{
162
left
=
top
=
width
=
height
= 0;
163
}
164
165
void
set
(T
const
& _left, T
const
& _top, T
const
& _width, T
const
& _height)
166
{
167
left
= _left;
168
top
= _top;
169
width
= _width;
170
height
= _height;
171
}
172
173
void
swap
(
TCoord
& _value)
174
{
175
TCoord
tmp = _value;
176
_value = *
this
;
177
*
this
= tmp;
178
}
179
180
bool
empty
()
const
181
{
182
return
((
left
== 0) && (
top
== 0) && (
width
== 0) && (
height
== 0));
183
}
184
185
TPoint<T>
point
()
const
186
{
187
return
TPoint<T>
(
left
,
top
);
188
}
189
190
TSize<T>
size
()
const
191
{
192
return
TSize<T>
(
width
,
height
);
193
}
194
195
bool
inside
(
const
TPoint<T>
& _value)
const
196
{
197
return
((_value.
left
>=
left
) && (_value.
left
<=
right
()) && (_value.
top
>=
top
) && (_value.
top
<=
bottom
()));
198
}
199
200
std::string
print
()
const
201
{
202
std::ostringstream stream;
203
stream << *
this
;
204
return
stream.str();
205
}
206
207
static
TCoord<T>
parse
(
const
std::string& _value)
208
{
209
TCoord<T>
result;
210
std::istringstream stream(_value);
211
stream >> result.
left
>> result.
top
>> result.
width
>> result.
height
;
212
if
(stream.fail())
213
{
214
return
TCoord<T>
();
215
}
216
else
217
{
218
int
item = stream.get();
219
while
(item != -1)
220
{
221
if
(item !=
' '
&& item !=
'\t'
)
222
return
TCoord<T>
();
223
item = stream.get();
224
}
225
}
226
return
result;
227
}
228
229
friend
std::ostream& operator << (std::ostream& _stream, const TCoord<T>& _value)
230
{
231
_stream << _value.
left
<<
" "
<< _value.top <<
" "
<< _value.width <<
" "
<< _value.height;
232
return
_stream;
233
}
234
235
friend
std::istream&
operator >>
(std::istream& _stream,
TCoord<T>
& _value)
236
{
237
_stream >> _value.
left
>> _value.
top
>> _value.
width
>> _value.
height
;
238
if
(_stream.fail())
239
_value.
clear
();
240
return
_stream;
241
}
242
};
243
244
}
// namespace types
245
246
}
// namespace MyGUI
247
248
#endif // __MyGUI_TCOORD_H__
Generated on Wed Aug 20 2014 00:03:33 for MyGUI by
1.8.3.1