type_mat3x2.hpp
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_mat3x2
00030 #define glm_core_type_mat3x2
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 tmat3x2
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 tvec3<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 tmat3x2<T> type;
00066                 typedef tmat2x3<T> transpose_type;
00067 
00068         private:
00069                 // Data
00070                 col_type value[3];
00071 
00072         public:
00073                 // Constructors
00074                 GLM_FUNC_DECL tmat3x2();
00075                 GLM_FUNC_DECL tmat3x2(tmat3x2 const & m);
00076 
00077                 GLM_FUNC_DECL explicit tmat3x2(
00078                         ctor);
00079                 GLM_FUNC_DECL explicit tmat3x2(
00080                         value_type const & s);
00081                 GLM_FUNC_DECL explicit tmat3x2(
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                 GLM_FUNC_DECL explicit tmat3x2(
00086                         col_type const & v0, 
00087                         col_type const & v1,
00088                         col_type const & v2);
00089 
00091                 // Conversions
00092                 template <typename U> 
00093                 GLM_FUNC_DECL explicit tmat3x2(
00094             U const & x);
00095                         
00096                 template 
00097         <
00098             typename X1, typename Y1, 
00099             typename X2, typename Y2, 
00100             typename X3, typename Y3
00101         > 
00102                 GLM_FUNC_DECL explicit tmat3x2(
00103             X1 const & x1, Y1 const & y1, 
00104             X2 const & x2, Y2 const & y2,
00105             X3 const & x3, Y3 const & y3);
00106                         
00107                 template <typename V1, typename V2, typename V3> 
00108                 GLM_FUNC_DECL explicit tmat3x2(
00109             tvec2<V1> const & v1, 
00110             tvec2<V2> const & v2,
00111             tvec2<V3> const & v3);
00112             
00113                 // Matrix conversions
00114                 template <typename U> 
00115                 GLM_FUNC_DECL explicit tmat3x2(tmat3x2<U> const & m);
00116 
00117                 GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T> const & x);
00118                 GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T> const & x);
00119                 GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T> const & x);
00120                 GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T> const & x);
00121                 GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T> const & x);
00122                 GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T> const & x);
00123                 GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T> const & x);
00124                 GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T> const & x);
00125 
00126                 // Accesses
00127                 GLM_FUNC_DECL col_type & operator[](size_type i);
00128                 GLM_FUNC_DECL col_type const & operator[](size_type i) const;
00129 
00130                 // Unary updatable operators
00131                 GLM_FUNC_DECL tmat3x2<T> & operator=  (tmat3x2<T> const & m);
00132                 template <typename U> 
00133                 GLM_FUNC_DECL tmat3x2<T> & operator=  (tmat3x2<U> const & m);
00134                 template <typename U> 
00135                 GLM_FUNC_DECL tmat3x2<T> & operator+= (U const & s);
00136                 template <typename U> 
00137                 GLM_FUNC_DECL tmat3x2<T> & operator+= (tmat3x2<U> const & m);
00138                 template <typename U> 
00139                 GLM_FUNC_DECL tmat3x2<T> & operator-= (U const & s);
00140                 template <typename U> 
00141                 GLM_FUNC_DECL tmat3x2<T> & operator-= (tmat3x2<U> const & m);
00142                 template <typename U> 
00143                 GLM_FUNC_DECL tmat3x2<T> & operator*= (U const & s);
00144                 template <typename U> 
00145                 GLM_FUNC_DECL tmat3x2<T> & operator*= (tmat3x2<U> const & m);
00146                 template <typename U> 
00147                 GLM_FUNC_DECL tmat3x2<T> & operator/= (U const & s);
00148 
00149                 GLM_FUNC_DECL tmat3x2<T> & operator++ ();
00150                 GLM_FUNC_DECL tmat3x2<T> & operator-- ();
00151         };
00152 
00153         // Binary operators
00154         template <typename T> 
00155         tmat3x2<T> operator+ (
00156                 tmat3x2<T> const & m, 
00157                 typename tmat3x2<T>::value_type const & s);
00158             
00159         template <typename T> 
00160         tmat3x2<T> operator+ (
00161                 tmat3x2<T> const & m1, 
00162                 tmat3x2<T> const & m2);
00163             
00164         template <typename T> 
00165         tmat3x2<T> operator- (
00166                 tmat3x2<T> const & m, 
00167                 typename tmat3x2<T>::value_type const & s);
00168 
00169         template <typename T> 
00170         tmat3x2<T> operator- (
00171                 tmat3x2<T> const & m1, 
00172                 tmat3x2<T> const & m2);
00173 
00174         template <typename T> 
00175         tmat3x2<T> operator* (
00176                 tmat3x2<T> const & m, 
00177                 typename tmat3x2<T>::value_type const & s);
00178 
00179         template <typename T> 
00180         tmat3x2<T> operator* (
00181                 typename tmat3x2<T>::value_type const & s, 
00182                 tmat3x2<T> const & m);
00183 
00184         template <typename T>
00185         typename tmat3x2<T>::col_type operator* (
00186                 tmat3x2<T> const & m, 
00187                 typename tmat3x2<T>::row_type const & v);
00188 
00189         template <typename T> 
00190         typename tmat3x2<T>::row_type operator* (
00191                 typename tmat3x2<T>::col_type const & v,
00192                 tmat3x2<T> const & m);
00193 
00194         template <typename T>
00195         tmat2x2<T> operator* (
00196                 tmat3x2<T> const & m1, 
00197                 tmat2x3<T> const & m2);
00198                 
00199         template <typename T>
00200         tmat3x2<T> operator* (
00201                 tmat3x2<T> const & m1, 
00202                 tmat3x3<T> const & m2);
00203                 
00204         template <typename T>
00205         tmat4x2<T> operator* (
00206                 tmat3x2<T> const & m1, 
00207                 tmat4x3<T> const & m2);
00208 
00209         template <typename T> 
00210         tmat3x2<T> operator/ (
00211                 tmat3x2<T> const & m, 
00212                 typename tmat3x2<T>::value_type const & s);
00213 
00214         template <typename T> 
00215         tmat3x2<T> operator/ (
00216                 typename tmat3x2<T>::value_type const & s, 
00217                 tmat3x2<T> const & m);
00218 
00219         // Unary constant operators
00220         template <typename T> 
00221         tmat3x2<T> const operator-  (
00222                 tmat3x2<T> const & m);
00223 
00224         template <typename T> 
00225         tmat3x2<T> const operator-- (
00226                 tmat3x2<T> const & m, 
00227                 int);
00228 
00229         template <typename T> 
00230         tmat3x2<T> const operator++ (
00231                 tmat3x2<T> const & m, 
00232                 int);
00233 
00234 } //namespace detail
00235 
00238 
00244         typedef detail::tmat3x2<lowp_float>             lowp_mat3x2;
00245     
00251         typedef detail::tmat3x2<mediump_float>  mediump_mat3x2;
00252     
00258         typedef detail::tmat3x2<highp_float>    highp_mat3x2;
00259 
00261 }//namespace glm
00262 
00263 #ifndef GLM_EXTERNAL_TEMPLATE
00264 #include "type_mat3x2.inl"
00265 #endif
00266 
00267 #endif //glm_core_type_mat3x2