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 } 00018 00019 //------------------------------------------------------------ 00020 namespace XBase { 00022 00023 00027 struct Vector2iPOD 00028 { 00029 //============================================================ 00031 00032 static const Vector2iPOD Zero(); 00033 static const Vector2iPOD One(); 00034 static const Vector2iPOD Min(); 00035 static const Vector2iPOD Max(); 00036 static const Vector2iPOD UnitX(); 00037 static const Vector2iPOD UnitY(); 00038 static const Vector2iPOD NegUnitX(); 00039 static const Vector2iPOD NegUnitY(); 00040 00041 00042 //============================================================ 00044 00045 s32 x; 00046 s32 y; 00047 00048 00049 //============================================================ 00051 00052 const Vector2iPOD toX0()const; 00053 const Vector2iPOD to0Y()const; 00054 const Vector2iPOD toXX()const; 00055 const Vector2iPOD toYX()const; 00056 const Vector2iPOD toYY()const; 00057 const Vector2POD toXYf()const; 00059 00060 //============================================================ 00062 00063 bool equals( const Vector2iPOD& )const; 00064 00065 00066 //============================================================ 00068 00069 const Vector2iPOD add( s32 )const; 00070 const Vector2iPOD sub( s32 )const; 00071 const Vector2iPOD mul( s32 )const; 00072 const Vector2iPOD div( s32 )const; 00073 const Vector2iPOD add( const Vector2iPOD& )const; 00074 const Vector2iPOD sub( const Vector2iPOD& )const; 00075 const Vector2iPOD mul( const Vector2iPOD& )const; 00076 const Vector2iPOD div( const Vector2iPOD& )const; 00077 void addAssign( s32 ); 00078 void subAssign( s32 ); 00079 void mulAssign( s32 ); 00080 void divAssign( s32 ); 00081 void addAssign( const Vector2iPOD& ); 00082 void subAssign( const Vector2iPOD& ); 00083 void mulAssign( const Vector2iPOD& ); 00084 void divAssign( const Vector2iPOD& ); 00085 00086 00087 //============================================================ 00089 00090 const Vector2iPOD operator+( s32 )const; 00091 const Vector2iPOD operator-( s32 )const; 00092 const Vector2iPOD operator*( s32 )const; 00093 const Vector2iPOD operator/( s32 )const; 00094 const Vector2iPOD operator+( const Vector2iPOD& )const; 00095 const Vector2iPOD operator-( const Vector2iPOD& )const; 00096 const Vector2iPOD operator*( const Vector2iPOD& )const; 00097 const Vector2iPOD operator/( const Vector2iPOD& )const; 00098 const Vector2iPOD operator-()const; 00099 Vector2iPOD& operator+=( s32 ); 00100 Vector2iPOD& operator-=( s32 ); 00101 Vector2iPOD& operator*=( s32 ); 00102 Vector2iPOD& operator/=( s32 ); 00103 Vector2iPOD& operator+=( const Vector2iPOD& ); 00104 Vector2iPOD& operator-=( const Vector2iPOD& ); 00105 Vector2iPOD& operator*=( const Vector2iPOD& ); 00106 Vector2iPOD& operator/=( const Vector2iPOD& ); 00107 00108 00109 //============================================================ 00111 00112 const Vector2iPOD min( const Vector2iPOD& )const; 00113 const Vector2iPOD max( const Vector2iPOD& )const; 00114 00115 00116 //============================================================ 00118 00119 const Vector2iPOD clamp( const Vector2iPOD& aMin , const Vector2iPOD& aMax )const; 00120 const Vector2iPOD clampPositive()const; 00121 const Vector2iPOD clampNegative()const; 00122 00123 00124 //============================================================ 00126 00127 const Vector2iPOD abs()const; 00128 const Vector2iPOD neg()const; 00129 bool isPositive()const; 00130 00131 00132 //============================================================ 00134 00135 bool isZero()const; 00136 00137 00138 //============================================================ 00140 00141 00142 const ShortString toShortString()const; 00144 }; 00145 00147 class Vector2i : public Vector2iPOD 00148 { 00149 public: 00150 //============================================================ 00152 00153 Vector2i(); 00154 Vector2i( const Vector2iPOD& aXY ); 00155 Vector2i( s32 aX , s32 aY ); 00156 00157 }; 00159 } 00160 //------------------------------------------------------------ 00161 #endif 00162 // EOF