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_mat4x2
00030 #define glm_core_type_mat4x2
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 tmat4x2
00055 {
00056 enum ctor{null};
00057 typedef T value_type;
00058 typedef std::size_t size_type;
00059 typedef tvec2<T> col_type;
00060 typedef tvec4<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 tmat4x2<T> type;
00066 typedef tmat2x4<T> transpose_type;
00067
00068 private:
00069
00070 col_type value[4];
00071
00072 public:
00073
00074 GLM_FUNC_DECL tmat4x2();
00075 GLM_FUNC_DECL tmat4x2(tmat4x2 const & m);
00076
00077 GLM_FUNC_DECL explicit tmat4x2(
00078 ctor Null);
00079 GLM_FUNC_DECL explicit tmat4x2(
00080 value_type const & x);
00081 GLM_FUNC_DECL explicit tmat4x2(
00082 value_type const & x0, value_type const & y0,
00083 value_type const & x1, value_type const & y1,
00084 value_type const & x2, value_type const & y2,
00085 value_type const & x3, value_type const & y3);
00086 GLM_FUNC_DECL explicit tmat4x2(
00087 col_type const & v0,
00088 col_type const & v1,
00089 col_type const & v2,
00090 col_type const & v3);
00091
00093
00094 template <typename U>
00095 GLM_FUNC_DECL explicit tmat4x2(
00096 U const & x);
00097
00098 template
00099 <
00100 typename X1, typename Y1,
00101 typename X2, typename Y2,
00102 typename X3, typename Y3,
00103 typename X4, typename Y4
00104 >
00105 GLM_FUNC_DECL explicit tmat4x2(
00106 X1 const & x1, Y1 const & y1,
00107 X2 const & x2, Y2 const & y2,
00108 X3 const & x3, Y3 const & y3,
00109 X4 const & x4, Y4 const & y4);
00110
00111 template <typename V1, typename V2, typename V3, typename V4>
00112 GLM_FUNC_DECL explicit tmat4x2(
00113 tvec2<V1> const & v1,
00114 tvec2<V2> const & v2,
00115 tvec2<V3> const & v3,
00116 tvec2<V4> const & v4);
00117
00118
00119 template <typename U>
00120 GLM_FUNC_DECL explicit tmat4x2(tmat4x2<U> const & m);
00121
00122 GLM_FUNC_DECL explicit tmat4x2(tmat2x2<T> const & x);
00123 GLM_FUNC_DECL explicit tmat4x2(tmat3x3<T> const & x);
00124 GLM_FUNC_DECL explicit tmat4x2(tmat4x4<T> const & x);
00125 GLM_FUNC_DECL explicit tmat4x2(tmat2x3<T> const & x);
00126 GLM_FUNC_DECL explicit tmat4x2(tmat3x2<T> const & x);
00127 GLM_FUNC_DECL explicit tmat4x2(tmat2x4<T> const & x);
00128 GLM_FUNC_DECL explicit tmat4x2(tmat4x3<T> const & x);
00129 GLM_FUNC_DECL explicit tmat4x2(tmat3x4<T> const & x);
00130
00131
00132 GLM_FUNC_DECL col_type & operator[](size_type i);
00133 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
00134
00135
00136 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<T> const & m);
00137 template <typename U>
00138 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<U> const & m);
00139 template <typename U>
00140 GLM_FUNC_DECL tmat4x2<T>& operator+= (U const & s);
00141 template <typename U>
00142 GLM_FUNC_DECL tmat4x2<T>& operator+= (tmat4x2<U> const & m);
00143 template <typename U>
00144 GLM_FUNC_DECL tmat4x2<T>& operator-= (U const & s);
00145 template <typename U>
00146 GLM_FUNC_DECL tmat4x2<T>& operator-= (tmat4x2<U> const & m);
00147 template <typename U>
00148 GLM_FUNC_DECL tmat4x2<T>& operator*= (U const & s);
00149 template <typename U>
00150 GLM_FUNC_DECL tmat4x2<T>& operator*= (tmat4x2<U> const & m);
00151 template <typename U>
00152 GLM_FUNC_DECL tmat4x2<T>& operator/= (U const & s);
00153
00154 GLM_FUNC_DECL tmat4x2<T>& operator++ ();
00155 GLM_FUNC_DECL tmat4x2<T>& operator-- ();
00156 };
00157
00158
00159 template <typename T>
00160 tmat4x2<T> operator+ (
00161 tmat4x2<T> const & m,
00162 typename tmat4x2<T>::value_type const & s);
00163
00164 template <typename T>
00165 tmat4x2<T> operator+ (
00166 tmat4x2<T> const & m1,
00167 tmat4x2<T> const & m2);
00168
00169 template <typename T>
00170 tmat4x2<T> operator- (
00171 tmat4x2<T> const & m,
00172 typename tmat4x2<T>::value_type const & s);
00173
00174 template <typename T>
00175 tmat4x2<T> operator- (
00176 tmat4x2<T> const & m1,
00177 tmat4x2<T> const & m2);
00178
00179 template <typename T>
00180 tmat4x2<T> operator* (
00181 tmat4x2<T> const & m,
00182 typename tmat4x2<T>::value_type const & s);
00183
00184 template <typename T>
00185 tmat4x2<T> operator* (
00186 typename tmat4x2<T>::value_type const & s,
00187 tmat4x2<T> const & m);
00188
00189 template <typename T>
00190 typename tmat4x2<T>::col_type operator* (
00191 tmat4x2<T> const & m,
00192 typename tmat4x2<T>::row_type const & v);
00193
00194 template <typename T>
00195 typename tmat4x2<T>::row_type operator* (
00196 typename tmat4x2<T>::col_type const & v,
00197 tmat4x2<T> const & m);
00198
00199 template <typename T>
00200 tmat2x2<T> operator* (
00201 tmat4x2<T> const & m1,
00202 tmat2x4<T> const & m2);
00203
00204 template <typename T>
00205 tmat4x2<T> operator/ (
00206 tmat4x2<T> const & m,
00207 typename tmat4x2<T>::value_type const & s);
00208
00209 template <typename T>
00210 tmat4x2<T> operator/ (
00211 typename tmat4x2<T>::value_type const & s,
00212 tmat4x2<T> const & m);
00213
00214
00215 template <typename T>
00216 tmat4x2<T> const operator- (
00217 tmat4x2<T> const & m);
00218
00219 template <typename T>
00220 tmat4x2<T> const operator-- (
00221 tmat4x2<T> const & m,
00222 int);
00223
00224 template <typename T>
00225 tmat4x2<T> const operator++ (
00226 tmat4x2<T> const & m,
00227 int);
00228
00229 }
00230
00235 typedef detail::tmat4x2<lowp_float> lowp_mat4x2;
00236
00241 typedef detail::tmat4x2<mediump_float> mediump_mat4x2;
00242
00247 typedef detail::tmat4x2<highp_float> highp_mat4x2;
00248
00249 }
00250
00251 #ifndef GLM_EXTERNAL_TEMPLATE
00252 #include "type_mat4x2.inl"
00253 #endif
00254
00255 #endif //glm_core_type_mat4x2