33 #include "CEGUI/UDim.h"
34 #include "CEGUI/Vector.h"
68 public AllocatedObject<Size<T> >
76 inline Size(
const T width,
const T height):
81 inline Size(
const Size& v):
86 inline bool operator==(
const Size& other)
const
88 return d_width == other.d_width && d_height == other.d_height;
91 inline bool operator!=(
const Size& other)
const
93 return !operator==(other);
96 inline Size operator*(
const T c)
const
98 return Size(d_width * c, d_height * c);
101 inline Size operator*(
const Size& s)
const
103 return Size(d_width * s.d_width, d_height * s.d_height);
106 inline Size operator*(
const Vector2f& vec)
const
108 return Size(d_width * vec.d_x, d_height * vec.d_y);
111 inline Size operator+(
const Size& s)
const
113 return Size(d_width + s.d_width, d_height + s.d_height);
116 inline Size operator-(
const Size& s)
const
118 return Size(d_width - s.d_width, d_height - s.d_height);
121 inline void clamp(
const Size& min,
const Size& max)
123 assert(min.d_width <= max.d_width);
124 assert(min.d_height <= max.d_height);
126 if (d_width < min.d_width)
127 d_width = min.d_width;
128 else if (d_width > max.d_width)
129 d_width = max.d_width;
131 if (d_height < min.d_height)
132 d_height = min.d_height;
133 else if (d_height > max.d_height)
134 d_height = max.d_height;
137 inline void scaleToAspect(
AspectMode mode, T ratio)
142 if(d_width <= 0 && d_height <= 0)
147 const T expectedWidth = d_height * ratio;
148 const bool keepHeight = (mode ==
AM_SHRINK) ?
149 expectedWidth <= d_width : expectedWidth >= d_width;
153 d_width = expectedWidth;
157 d_height = d_width / ratio;
166 s <<
"CEGUI::Size<" <<
typeid(T).name() <<
">(" << v.d_width <<
", " << v.d_height <<
")";
173 return Size(side, side);
179 return square(TypeSensitiveZero<T>());
185 return square(TypeSensitiveOne<T>());
191 return Size(TypeSensitiveOne<T>(), TypeSensitiveZero<T>());
197 return Size(TypeSensitiveOne<T>(), TypeSensitiveZero<T>());
205 typedef Size<float> Sizef;
206 typedef Size<UDim> USize;
208 inline USize operator*(
const USize& i,
float x)
210 return i * UDim(x,x);
215 #endif // end of guard _CEGUISize_h_