29#ifndef _CEGUIVector_h_
30#define _CEGUIVector_h_
32#include "CEGUI/UDim.h"
62 inline Vector2(
const T x,
const T y):
106 return Vector2(d_x + vec.d_x, d_y + vec.d_y);
111 return Vector2(d_x - vec.d_x, d_y - vec.d_y);
116 return Vector2(d_x * vec.d_x, d_y * vec.d_y);
121 return Vector2(d_x / vec.d_x, d_y / vec.d_y);
124 inline Vector2 operator*(
const T c)
const
126 return Vector2(d_x * c, d_y * c);
129 inline Vector2& operator*=(
const T c)
137 inline Vector2 operator/(
const T c)
const
139 return Vector2(d_x / c, d_y / c);
142 inline bool operator==(
const Vector2& vec)
const
144 return ((d_x == vec.d_x) && (d_y == vec.d_y));
147 inline bool operator!=(
const Vector2& vec)
const
149 return !(operator==(vec));
157 s <<
"CEGUI::Vector2<" <<
typeid(T).name() <<
">(" << v.d_x <<
", " << v.d_y <<
")";
164 return Vector2(TypeSensitiveZero<T>(), TypeSensitiveZero<T>());
170 return Vector2(TypeSensitiveOne<T>(), TypeSensitiveOne<T>());
176 return Vector2(TypeSensitiveOne<T>(), TypeSensitiveZero<T>());
182 return Vector2(TypeSensitiveZero<T>(), TypeSensitiveOne<T>());
190typedef Vector2<float> Vector2f;
193inline Vector2<UDim> operator * (
const Vector2<UDim>& v,
const float c)
195 return Vector2<UDim>(v.d_x * c, v.d_y * c);
198typedef Vector2<UDim> UVector2;
217 typedef T value_type;
222 inline Vector3(
const T x,
const T y,
const T z):
240 inline bool operator==(
const Vector3& vec)
const
242 return ((d_x == vec.d_x) && (d_y == vec.d_y) && (d_z == vec.d_z));
245 inline bool operator!=(
const Vector3& vec)
const
247 return !(operator==(vec));
250 inline Vector3 operator*(
const T c)
const
252 return Vector3(d_x * c, d_y * c, d_z * c);
257 return Vector3(d_x + v.d_x, d_y + v.d_y, d_z + v.d_z);
262 return Vector3(d_x - v.d_x, d_y - v.d_y, d_z - v.d_z);
270 s <<
"CEGUI::Vector3<" <<
typeid(T).name() <<
">(" << v.d_x <<
", " << v.d_y <<
", " << v.d_z <<
")";
277 return Vector3(TypeSensitiveZero<T>(), TypeSensitiveZero<T>(), TypeSensitiveZero<T>());
283 return Vector3(TypeSensitiveOne<T>(), TypeSensitiveOne<T>(), TypeSensitiveOne<T>());
289 return Vector3(TypeSensitiveOne<T>(), TypeSensitiveZero<T>(), TypeSensitiveZero<T>());
295 return Vector3(TypeSensitiveZero<T>(), TypeSensitiveOne<T>(), TypeSensitiveZero<T>());
301 return Vector3(TypeSensitiveZero<T>(), TypeSensitiveZero<T>(), TypeSensitiveOne<T>());
310typedef Vector3<float> Vector3f;
Definition: MemoryAllocatedObject.h:110
Class used as a two dimensional vector (aka a Point)
Definition: Vector.h:55
static Vector2 zero()
finger saving alias for Vector2(0, 0)
Definition: Vector.h:162
static Vector2 one_x()
finger saving alias for Vector2(1, 0)
Definition: Vector.h:174
static Vector2 one()
finger saving alias for Vector2(1, 1)
Definition: Vector.h:168
friend std::ostream & operator<<(std::ostream &s, const Vector2 &v)
allows writing the vector2 to std ostream
Definition: Vector.h:155
static Vector2 one_y()
finger saving alias for Vector2(0, 1)
Definition: Vector.h:180
Class used as a three dimensional vector.
Definition: Vector.h:215
static Vector3 one_x()
finger saving alias for Vector3(1, 0, 0)
Definition: Vector.h:287
static Vector3 one()
finger saving alias for Vector3(1, 1, 1)
Definition: Vector.h:281
static Vector3 one_z()
finger saving alias for Vector3(0, 0, 1)
Definition: Vector.h:299
static Vector3 one_y()
finger saving alias for Vector3(0, 1, 0)
Definition: Vector.h:293
friend std::ostream & operator<<(std::ostream &s, const Vector3 &v)
allows writing the vector3 to std ostream
Definition: Vector.h:268
static Vector3 zero()
finger saving alias for Vector3(0, 0, 0)
Definition: Vector.h:275
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1