CrossFramework Library
|
00001 00006 #if defined(XBASE_INCLUDED_VECTOR2I_HPP) 00007 #else 00008 #define XBASE_INCLUDED_VECTOR2I_HPP 00009 00010 //------------------------------------------------------------ 00011 #include <XBase/BuiltInTypes.hpp> 00012 #include <XBase/ShortString.hpp> 00013 00014 //------------------------------------------------------------ 00015 namespace XBase { 00016 struct Vector2POD; 00017 struct Vector3iPOD; 00018 struct Vector4iPOD; 00019 } 00020 00021 //------------------------------------------------------------ 00022 namespace XBase { 00024 00025 00031 struct Vector2iPOD 00032 { 00033 //============================================================ 00035 00036 static const Vector2iPOD Zero(); 00037 static const Vector2iPOD One(); 00038 static const Vector2iPOD Min(); 00039 static const Vector2iPOD Max(); 00040 static const Vector2iPOD UnitX(); 00041 static const Vector2iPOD UnitY(); 00042 static const Vector2iPOD NegUnitX(); 00043 static const Vector2iPOD NegUnitY(); 00044 00045 00046 //============================================================ 00048 00049 s32 x; 00050 s32 y; 00051 00052 00053 //============================================================ 00055 00056 const Vector2iPOD toX0()const; 00057 const Vector2iPOD to0Y()const; 00058 const Vector2iPOD toXX()const; 00059 const Vector2iPOD toYX()const; 00060 const Vector2iPOD toYY()const; 00061 const Vector3iPOD toXY0()const; 00062 const Vector3iPOD toXXX()const; 00063 const Vector3iPOD toYYY()const; 00064 const Vector4iPOD toXY00()const; 00065 const Vector4iPOD toXXXX()const; 00066 const Vector4iPOD toYYYY()const; 00067 const Vector2POD toXYf()const; 00069 00070 //============================================================ 00072 00073 bool equals( const Vector2iPOD& )const; 00074 00075 00076 //============================================================ 00078 00079 const Vector2iPOD add( s32 )const; 00080 const Vector2iPOD sub( s32 )const; 00081 const Vector2iPOD mul( s32 )const; 00082 const Vector2iPOD div( s32 )const; 00083 const Vector2iPOD add( const Vector2iPOD& )const; 00084 const Vector2iPOD sub( const Vector2iPOD& )const; 00085 const Vector2iPOD mul( const Vector2iPOD& )const; 00086 const Vector2iPOD div( const Vector2iPOD& )const; 00087 void addAssign( s32 ); 00088 void subAssign( s32 ); 00089 void mulAssign( s32 ); 00090 void divAssign( s32 ); 00091 void addAssign( const Vector2iPOD& ); 00092 void subAssign( const Vector2iPOD& ); 00093 void mulAssign( const Vector2iPOD& ); 00094 void divAssign( const Vector2iPOD& ); 00095 00096 00097 //============================================================ 00099 00100 const Vector2iPOD operator+( s32 )const; 00101 const Vector2iPOD operator-( s32 )const; 00102 const Vector2iPOD operator*( s32 )const; 00103 const Vector2iPOD operator/( s32 )const; 00104 const Vector2iPOD operator+( const Vector2iPOD& )const; 00105 const Vector2iPOD operator-( const Vector2iPOD& )const; 00106 const Vector2iPOD operator*( const Vector2iPOD& )const; 00107 const Vector2iPOD operator/( const Vector2iPOD& )const; 00108 const Vector2iPOD operator-()const; 00109 Vector2iPOD& operator+=( s32 ); 00110 Vector2iPOD& operator-=( s32 ); 00111 Vector2iPOD& operator*=( s32 ); 00112 Vector2iPOD& operator/=( s32 ); 00113 Vector2iPOD& operator+=( const Vector2iPOD& ); 00114 Vector2iPOD& operator-=( const Vector2iPOD& ); 00115 Vector2iPOD& operator*=( const Vector2iPOD& ); 00116 Vector2iPOD& operator/=( const Vector2iPOD& ); 00117 00118 00119 //============================================================ 00121 00122 const Vector2iPOD min( const Vector2iPOD& )const; 00123 const Vector2iPOD max( const Vector2iPOD& )const; 00124 00125 00126 //============================================================ 00128 00129 const Vector2iPOD clamp( const Vector2iPOD& aMin , const Vector2iPOD& aMax )const; 00130 const Vector2iPOD clampPositive()const; 00131 const Vector2iPOD clampNegative()const; 00132 00133 00134 //============================================================ 00136 00137 const Vector2iPOD abs()const; 00138 const Vector2iPOD neg()const; 00139 bool isPositive()const; 00140 00141 00142 //============================================================ 00144 00145 bool isZero()const; 00146 00147 00148 //============================================================ 00150 00151 00152 const ShortString toShortString()const; 00154 }; 00155 00157 class Vector2i : public Vector2iPOD 00158 { 00159 public: 00160 //============================================================ 00162 00163 Vector2i(); 00164 Vector2i( const Vector2iPOD& aXY ); 00165 Vector2i( s32 aV ); 00166 Vector2i( s32 aX , s32 aY ); 00167 00168 }; 00169 00171 typedef Vector2iPOD Vec2i; 00173 } 00174 //------------------------------------------------------------ 00175 #endif 00176 // EOF