Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef glm_core_type_mat2x3
00030 #define glm_core_type_mat2x3
00031
00032 #include "type_mat.hpp"
00033
00034 namespace glm{
00035 namespace detail
00036 {
00037 template <typename T> struct tvec1;
00038 template <typename T> struct tvec2;
00039 template <typename T> struct tvec3;
00040 template <typename T> struct tvec4;
00041 template <typename T> struct tmat2x2;
00042 template <typename T> struct tmat2x3;
00043 template <typename T> struct tmat2x4;
00044 template <typename T> struct tmat3x2;
00045 template <typename T> struct tmat3x3;
00046 template <typename T> struct tmat3x4;
00047 template <typename T> struct tmat4x2;
00048 template <typename T> struct tmat4x3;
00049 template <typename T> struct tmat4x4;
00050
00053 template <typename T>
00054 struct tmat2x3
00055 {
00056 enum ctor{null};
00057 typedef T value_type;
00058 typedef std::size_t size_type;
00059 typedef tvec3<T> col_type;
00060 typedef tvec2<T> row_type;
00061 GLM_FUNC_DECL size_type length() const;
00062 static GLM_FUNC_DECL size_type col_size();
00063 static GLM_FUNC_DECL size_type row_size();
00064
00065 typedef tmat2x3<T> type;
00066 typedef tmat3x2<T> transpose_type;
00067
00068 private:
00069
00070 col_type value[2];
00071
00072 public:
00073
00074 GLM_FUNC_DECL tmat2x3();
00075 GLM_FUNC_DECL tmat2x3(tmat2x3 const & m);
00076
00077 GLM_FUNC_DECL explicit tmat2x3(
00078 ctor);
00079 GLM_FUNC_DECL explicit tmat2x3(
00080 value_type const & s);
00081 GLM_FUNC_DECL explicit tmat2x3(
00082 value_type const & x0, value_type const & y0, value_type const & z0,
00083 value_type const & x1, value_type const & y1, value_type const & z1);
00084 GLM_FUNC_DECL explicit tmat2x3(
00085 col_type const & v0,
00086 col_type const & v1);
00087
00089
00090 template <typename U>
00091 GLM_FUNC_DECL explicit tmat2x3(
00092 U const & x);
00093
00094 template <typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2>
00095 GLM_FUNC_DECL explicit tmat2x3(
00096 X1 const & x1, Y1 const & y1, Z1 const & z1,
00097 X2 const & x2, Y2 const & y2, Z2 const & z2);
00098
00099 template <typename U, typename V>
00100 GLM_FUNC_DECL explicit tmat2x3(
00101 tvec3<U> const & v1,
00102 tvec3<V> const & v2);
00103
00105
00106 template <typename U>
00107 GLM_FUNC_DECL explicit tmat2x3(tmat2x3<U> const & m);
00108
00109 GLM_FUNC_DECL explicit tmat2x3(tmat2x2<T> const & x);
00110 GLM_FUNC_DECL explicit tmat2x3(tmat3x3<T> const & x);
00111 GLM_FUNC_DECL explicit tmat2x3(tmat4x4<T> const & x);
00112 GLM_FUNC_DECL explicit tmat2x3(tmat2x4<T> const & x);
00113 GLM_FUNC_DECL explicit tmat2x3(tmat3x2<T> const & x);
00114 GLM_FUNC_DECL explicit tmat2x3(tmat3x4<T> const & x);
00115 GLM_FUNC_DECL explicit tmat2x3(tmat4x2<T> const & x);
00116 GLM_FUNC_DECL explicit tmat2x3(tmat4x3<T> const & x);
00117
00118
00119 col_type & operator[](size_type i);
00120 col_type const & operator[](size_type i) const;
00121
00122
00123 GLM_FUNC_DECL tmat2x3<T> & operator= (tmat2x3<T> const & m);
00124 template <typename U>
00125 GLM_FUNC_DECL tmat2x3<T> & operator= (tmat2x3<U> const & m);
00126 template <typename U>
00127 GLM_FUNC_DECL tmat2x3<T> & operator+= (U const & s);
00128 template <typename U>
00129 GLM_FUNC_DECL tmat2x3<T> & operator+= (tmat2x3<U> const & m);
00130 template <typename U>
00131 GLM_FUNC_DECL tmat2x3<T> & operator-= (U const & s);
00132 template <typename U>
00133 GLM_FUNC_DECL tmat2x3<T> & operator-= (tmat2x3<U> const & m);
00134 template <typename U>
00135 GLM_FUNC_DECL tmat2x3<T> & operator*= (U const & s);
00136 template <typename U>
00137 GLM_FUNC_DECL tmat2x3<T> & operator*= (tmat2x3<U> const & m);
00138 template <typename U>
00139 GLM_FUNC_DECL tmat2x3<T> & operator/= (U const & s);
00140
00141 GLM_FUNC_DECL tmat2x3<T> & operator++ ();
00142 GLM_FUNC_DECL tmat2x3<T> & operator-- ();
00143 };
00144
00145
00146 template <typename T>
00147 tmat2x3<T> operator+ (
00148 tmat2x3<T> const & m,
00149 typename tmat2x3<T>::value_type const & s);
00150
00151 template <typename T>
00152 tmat2x3<T> operator+ (
00153 tmat2x3<T> const & m1,
00154 tmat2x3<T> const & m2);
00155
00156 template <typename T>
00157 tmat2x3<T> operator- (
00158 tmat2x3<T> const & m,
00159 typename tmat2x3<T>::value_type const & s);
00160
00161 template <typename T>
00162 tmat2x3<T> operator- (
00163 tmat2x3<T> const & m1,
00164 tmat2x3<T> const & m2);
00165
00166 template <typename T>
00167 tmat2x3<T> operator* (
00168 tmat2x3<T> const & m,
00169 typename tmat2x3<T>::value_type const & s);
00170
00171 template <typename T>
00172 tmat2x3<T> operator* (
00173 typename tmat2x3<T>::value_type const & s,
00174 tmat2x3<T> const & m);
00175
00176 template <typename T>
00177 typename tmat2x3<T>::col_type operator* (
00178 tmat2x3<T> const & m,
00179 typename tmat2x3<T>::row_type const & v);
00180
00181 template <typename T>
00182 typename tmat2x3<T>::row_type operator* (
00183 typename tmat2x3<T>::col_type const & v,
00184 tmat2x3<T> const & m);
00185
00186 template <typename T>
00187 tmat2x3<T> operator* (
00188 tmat2x3<T> const & m1,
00189 tmat2x2<T> const & m2);
00190
00191 template <typename T>
00192 tmat3x3<T> operator* (
00193 tmat2x3<T> const & m1,
00194 tmat3x2<T> const & m2);
00195
00196 template <typename T>
00197 tmat4x3<T> operator* (
00198 tmat2x3<T> const & m1,
00199 tmat4x2<T> const & m2);
00200
00201 template <typename T>
00202 tmat2x3<T> operator/ (
00203 tmat2x3<T> const & m,
00204 typename tmat2x3<T>::value_type const & s);
00205
00206 template <typename T>
00207 tmat2x3<T> operator/ (
00208 typename tmat2x3<T>::value_type const & s,
00209 tmat2x3<T> const & m);
00210
00211
00212 template <typename T>
00213 tmat2x3<T> const operator- (
00214 tmat2x3<T> const & m);
00215
00216 template <typename T>
00217 tmat2x3<T> const operator-- (
00218 tmat2x3<T> const & m,
00219 int);
00220
00221 template <typename T>
00222 tmat2x3<T> const operator++ (
00223 tmat2x3<T> const & m,
00224 int);
00225
00226 }
00227
00232 typedef detail::tmat2x3<lowp_float> lowp_mat2x3;
00233
00238 typedef detail::tmat2x3<mediump_float> mediump_mat2x3;
00239
00244 typedef detail::tmat2x3<highp_float> highp_mat2x3;
00245
00246 }
00247
00248 #ifndef GLM_EXTERNAL_TEMPLATE
00249 #include "type_mat2x3.inl"
00250 #endif
00251
00252 #endif //glm_core_type_mat2x3