00001
00002
00004
00005
00006
00007
00009
00010 #ifndef glm_core_type_mat4x3
00011 #define glm_core_type_mat4x3
00012
00013 #include "type_mat.hpp"
00014
00015 namespace glm{
00016 namespace detail
00017 {
00018 template <typename T> struct tvec1;
00019 template <typename T> struct tvec2;
00020 template <typename T> struct tvec3;
00021 template <typename T> struct tvec4;
00022 template <typename T> struct tmat2x2;
00023 template <typename T> struct tmat2x3;
00024 template <typename T> struct tmat2x4;
00025 template <typename T> struct tmat3x2;
00026 template <typename T> struct tmat3x3;
00027 template <typename T> struct tmat3x4;
00028 template <typename T> struct tmat4x2;
00029 template <typename T> struct tmat4x3;
00030 template <typename T> struct tmat4x4;
00031
00034 template <typename T>
00035 struct tmat4x3
00036 {
00037 enum ctor{null};
00038 typedef T value_type;
00039 typedef std::size_t size_type;
00040 typedef tvec3<T> col_type;
00041 typedef tvec4<T> row_type;
00042 static GLM_FUNC_DECL size_type col_size();
00043 static GLM_FUNC_DECL size_type row_size();
00044
00045 typedef tmat4x3<T> type;
00046 typedef tmat3x4<T> transpose_type;
00047
00048 private:
00049
00050 col_type value[4];
00051
00052 public:
00053
00054 GLM_FUNC_DECL tmat4x3();
00055 GLM_FUNC_DECL tmat4x3(tmat4x3 const & m);
00056
00057 GLM_FUNC_DECL explicit tmat4x3(
00058 ctor Null);
00059 GLM_FUNC_DECL explicit tmat4x3(
00060 value_type const & x);
00061 GLM_FUNC_DECL explicit tmat4x3(
00062 value_type const & x0, value_type const & y0, value_type const & z0,
00063 value_type const & x1, value_type const & y1, value_type const & z1,
00064 value_type const & x2, value_type const & y2, value_type const & z2,
00065 value_type const & x3, value_type const & y3, value_type const & z3);
00066 GLM_FUNC_DECL explicit tmat4x3(
00067 col_type const & v0,
00068 col_type const & v1,
00069 col_type const & v2,
00070 col_type const & v3);
00071
00073
00074 template <typename U>
00075 GLM_FUNC_DECL explicit tmat4x3(
00076 U const & x);
00077
00078 template <
00079 typename X1, typename Y1, typename Z1,
00080 typename X2, typename Y2, typename Z2,
00081 typename X3, typename Y3, typename Z3,
00082 typename X4, typename Y4, typename Z4>
00083 GLM_FUNC_DECL explicit tmat4x3(
00084 X1 const & x1, Y1 const & y1, Z1 const & z1,
00085 X2 const & x2, Y2 const & y2, Z2 const & z2,
00086 X3 const & x3, Y3 const & y3, Z3 const & z3,
00087 X4 const & x4, Y4 const & y4, Z4 const & z4);
00088
00089 template <typename V1, typename V2, typename V3, typename V4>
00090 GLM_FUNC_DECL explicit tmat4x3(
00091 tvec3<V1> const & v1,
00092 tvec3<V2> const & v2,
00093 tvec3<V3> const & v3,
00094 tvec3<V4> const & v4);
00095
00096
00097 template <typename U>
00098 GLM_FUNC_DECL explicit tmat4x3(tmat4x3<U> const & m);
00099
00100 GLM_FUNC_DECL explicit tmat4x3(tmat2x2<T> const & x);
00101 GLM_FUNC_DECL explicit tmat4x3(tmat3x3<T> const & x);
00102 GLM_FUNC_DECL explicit tmat4x3(tmat4x4<T> const & x);
00103 GLM_FUNC_DECL explicit tmat4x3(tmat2x3<T> const & x);
00104 GLM_FUNC_DECL explicit tmat4x3(tmat3x2<T> const & x);
00105 GLM_FUNC_DECL explicit tmat4x3(tmat2x4<T> const & x);
00106 GLM_FUNC_DECL explicit tmat4x3(tmat4x2<T> const & x);
00107 GLM_FUNC_DECL explicit tmat4x3(tmat3x4<T> const & x);
00108
00109
00110 col_type & operator[](size_type i);
00111 col_type const & operator[](size_type i) const;
00112
00113
00114 GLM_FUNC_DECL tmat4x3<T> & operator= (tmat4x3<T> const & m);
00115 template <typename U>
00116 GLM_FUNC_DECL tmat4x3<T> & operator= (tmat4x3<U> const & m);
00117 template <typename U>
00118 GLM_FUNC_DECL tmat4x3<T> & operator+= (U const & s);
00119 template <typename U>
00120 GLM_FUNC_DECL tmat4x3<T> & operator+= (tmat4x3<U> const & m);
00121 template <typename U>
00122 GLM_FUNC_DECL tmat4x3<T> & operator-= (U const & s);
00123 template <typename U>
00124 GLM_FUNC_DECL tmat4x3<T> & operator-= (tmat4x3<U> const & m);
00125 template <typename U>
00126 GLM_FUNC_DECL tmat4x3<T> & operator*= (U const & s);
00127 template <typename U>
00128 GLM_FUNC_DECL tmat4x3<T> & operator*= (tmat4x3<U> const & m);
00129 template <typename U>
00130 GLM_FUNC_DECL tmat4x3<T> & operator/= (U const & s);
00131
00132 GLM_FUNC_DECL tmat4x3<T> & operator++ ();
00133 GLM_FUNC_DECL tmat4x3<T> & operator-- ();
00134 };
00135
00136
00137 template <typename T>
00138 tmat4x3<T> operator+ (
00139 tmat4x3<T> const & m,
00140 typename tmat4x3<T>::value_type const & s);
00141
00142 template <typename T>
00143 tmat4x3<T> operator+ (
00144 tmat4x3<T> const & m1,
00145 tmat4x3<T> const & m2);
00146
00147 template <typename T>
00148 tmat4x3<T> operator- (
00149 tmat4x3<T> const & m,
00150 typename tmat4x3<T>::value_type const & s);
00151
00152 template <typename T>
00153 tmat4x3<T> operator- (
00154 tmat4x3<T> const & m1,
00155 tmat4x3<T> const & m2);
00156
00157 template <typename T>
00158 tmat4x3<T> operator* (
00159 tmat4x3<T> const & m,
00160 typename tmat4x3<T>::value_type const & s);
00161
00162 template <typename T>
00163 tmat4x3<T> operator* (
00164 typename tmat4x3<T>::value_type const & s,
00165 tmat4x3<T> const & m);
00166
00167 template <typename T>
00168 typename tmat4x3<T>::col_type operator* (
00169 tmat4x3<T> const & m,
00170 typename tmat4x3<T>::row_type const & v);
00171
00172 template <typename T>
00173 typename tmat4x3<T>::row_type operator* (
00174 typename tmat4x3<T>::col_type const & v,
00175 tmat4x3<T> const & m);
00176
00177 template <typename T>
00178 tmat3x3<T> operator* (
00179 tmat4x3<T> const & m1,
00180 tmat3x4<T> const & m2);
00181
00182 template <typename T>
00183 tmat4x3<T> operator/ (
00184 tmat4x3<T> const & m,
00185 typename tmat4x3<T>::value_type const & s);
00186
00187 template <typename T>
00188 tmat4x3<T> operator/ (
00189 typename tmat4x3<T>::value_type const & s,
00190 tmat4x3<T> const & m);
00191
00192
00193 template <typename T>
00194 tmat4x3<T> const operator- (
00195 tmat4x3<T> const & m);
00196
00197 template <typename T>
00198 tmat4x3<T> const operator-- (
00199 tmat4x3<T> const & m,
00200 int);
00201
00202 template <typename T>
00203 tmat4x3<T> const operator++ (
00204 tmat4x3<T> const & m,
00205 int);
00206
00207 }
00208
00209 namespace core{
00210 namespace type{
00211 namespace precision
00212 {
00217 typedef detail::tmat4x3<lowp_float> lowp_mat4x3;
00218
00223 typedef detail::tmat4x3<mediump_float> mediump_mat4x3;
00224
00229 typedef detail::tmat4x3<highp_float> highp_mat4x3;
00230
00231 }
00232 }
00233 }
00234 }
00235
00236 #ifndef GLM_EXTERNAL_TEMPLATE
00237 #include "type_mat4x3.inl"
00238 #endif //GLM_EXTERNAL_TEMPLATE
00239
00240 #endif//glm_core_type_mat4x3