Flow Visualisation
type_mat4x2.hpp
Go to the documentation of this file.
1 
29 #ifndef glm_core_type_mat4x2
30 #define glm_core_type_mat4x2
31 
32 #include "type_mat.hpp"
33 
34 namespace glm{
35 namespace detail
36 {
37  template <typename T> struct tvec1;
38  template <typename T> struct tvec2;
39  template <typename T> struct tvec3;
40  template <typename T> struct tvec4;
41  template <typename T> struct tmat2x2;
42  template <typename T> struct tmat2x3;
43  template <typename T> struct tmat2x4;
44  template <typename T> struct tmat3x2;
45  template <typename T> struct tmat3x3;
46  template <typename T> struct tmat3x4;
47  template <typename T> struct tmat4x2;
48  template <typename T> struct tmat4x3;
49  template <typename T> struct tmat4x4;
50 
51  template <typename T>
52  struct tmat4x2
53  {
54  enum ctor{null};
55  typedef T value_type;
56  typedef std::size_t size_type;
57  typedef tvec2<T> col_type;
58  typedef tvec4<T> row_type;
59  typedef tmat4x2<T> type;
61 
62  static GLM_FUNC_DECL size_type col_size();
63  static GLM_FUNC_DECL size_type row_size();
64 
65  GLM_FUNC_DECL GLM_CONSTEXPR size_type length() const;
66 
67  private:
68  // Data
69  col_type value[4];
70 
71  public:
72  // Constructors
74  GLM_FUNC_DECL tmat4x2(tmat4x2 const & m);
75 
76  GLM_FUNC_DECL explicit tmat4x2(
77  ctor Null);
78  GLM_FUNC_DECL explicit tmat4x2(
79  value_type const & x);
80  GLM_FUNC_DECL explicit tmat4x2(
81  value_type const & x0, value_type const & y0,
82  value_type const & x1, value_type const & y1,
83  value_type const & x2, value_type const & y2,
84  value_type const & x3, value_type const & y3);
85  GLM_FUNC_DECL explicit tmat4x2(
86  col_type const & v0,
87  col_type const & v1,
88  col_type const & v2,
89  col_type const & v3);
90 
92  // Conversions
93  template <typename U>
94  GLM_FUNC_DECL explicit tmat4x2(
95  U const & x);
96 
97  template
98  <
99  typename X1, typename Y1,
100  typename X2, typename Y2,
101  typename X3, typename Y3,
102  typename X4, typename Y4
103  >
104  GLM_FUNC_DECL explicit tmat4x2(
105  X1 const & x1, Y1 const & y1,
106  X2 const & x2, Y2 const & y2,
107  X3 const & x3, Y3 const & y3,
108  X4 const & x4, Y4 const & y4);
109 
110  template <typename V1, typename V2, typename V3, typename V4>
111  GLM_FUNC_DECL explicit tmat4x2(
112  tvec2<V1> const & v1,
113  tvec2<V2> const & v2,
114  tvec2<V3> const & v3,
115  tvec2<V4> const & v4);
116 
117  // Matrix conversions
118  template <typename U>
119  GLM_FUNC_DECL explicit tmat4x2(tmat4x2<U> const & m);
120 
121  GLM_FUNC_DECL explicit tmat4x2(tmat2x2<T> const & x);
122  GLM_FUNC_DECL explicit tmat4x2(tmat3x3<T> const & x);
123  GLM_FUNC_DECL explicit tmat4x2(tmat4x4<T> const & x);
124  GLM_FUNC_DECL explicit tmat4x2(tmat2x3<T> const & x);
125  GLM_FUNC_DECL explicit tmat4x2(tmat3x2<T> const & x);
126  GLM_FUNC_DECL explicit tmat4x2(tmat2x4<T> const & x);
127  GLM_FUNC_DECL explicit tmat4x2(tmat4x3<T> const & x);
128  GLM_FUNC_DECL explicit tmat4x2(tmat3x4<T> const & x);
129 
130  // Accesses
131  GLM_FUNC_DECL col_type & operator[](size_type i);
132  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
133 
134  // Unary updatable operators
136  template <typename U>
138  template <typename U>
139  GLM_FUNC_DECL tmat4x2<T>& operator+= (U const & s);
140  template <typename U>
142  template <typename U>
143  GLM_FUNC_DECL tmat4x2<T>& operator-= (U const & s);
144  template <typename U>
146  template <typename U>
147  GLM_FUNC_DECL tmat4x2<T>& operator*= (U const & s);
148  template <typename U>
150  template <typename U>
151  GLM_FUNC_DECL tmat4x2<T>& operator/= (U const & s);
152 
155  };
156 
157  // Binary operators
158  template <typename T>
160  tmat4x2<T> const & m,
161  typename tmat4x2<T>::value_type const & s);
162 
163  template <typename T>
165  tmat4x2<T> const & m1,
166  tmat4x2<T> const & m2);
167 
168  template <typename T>
170  tmat4x2<T> const & m,
171  typename tmat4x2<T>::value_type const & s);
172 
173  template <typename T>
175  tmat4x2<T> const & m1,
176  tmat4x2<T> const & m2);
177 
178  template <typename T>
180  tmat4x2<T> const & m,
181  typename tmat4x2<T>::value_type const & s);
182 
183  template <typename T>
185  typename tmat4x2<T>::value_type const & s,
186  tmat4x2<T> const & m);
187 
188  template <typename T>
190  tmat4x2<T> const & m,
191  typename tmat4x2<T>::row_type const & v);
192 
193  template <typename T>
195  typename tmat4x2<T>::col_type const & v,
196  tmat4x2<T> const & m);
197 
198  template <typename T>
200  tmat4x2<T> const & m1,
201  tmat3x4<T> const & m2);
202 
203  template <typename T>
205  tmat4x2<T> const & m1,
206  tmat4x4<T> const & m2);
207 
208  template <typename T>
210  tmat4x3<T> const & m1,
211  tmat2x4<T> const & m2);
212 
213  template <typename T>
215  tmat4x2<T> const & m,
216  typename tmat4x2<T>::value_type const & s);
217 
218  template <typename T>
220  typename tmat4x2<T>::value_type const & s,
221  tmat4x2<T> const & m);
222 
223  // Unary constant operators
224  template <typename T>
226  tmat4x2<T> const & m);
227 
228  template <typename T>
230  tmat4x2<T> const & m,
231  int);
232 
233  template <typename T>
235  tmat4x2<T> const & m,
236  int);
237 } //namespace detail
238 
241 
248 
255 
262 
264 }//namespace glm
265 
266 #ifndef GLM_EXTERNAL_TEMPLATE
267 #include "type_mat4x2.inl"
268 #endif
269 
270 #endif //glm_core_type_mat4x2
GLM_FUNC_DECL half operator--(half const &s, int)
Definition: type_half.inl:356
GLM_FUNC_DECL tmat4x2< T > & operator+=(U const &s)
GLM_FUNC_DECL tmat4x2< T > & operator--()
Definition: type_mat4x2.inl:448
GLM_FUNC_DECL tmat4x2< T > & operator-=(U const &s)
#define GLM_CONSTEXPR
Definition: _detail.hpp:479
Definition: type_mat2x2.hpp:45
Definition: type_mat2x2.hpp:48
Definition: type_mat2x2.hpp:42
Definition: _detail.hpp:38
detail::tmat4x2< highp_float > highp_mat4x2
Definition: type_mat4x2.hpp:261
Definition: type_mat2x2.hpp:38
Definition: type_mat4x2.hpp:54
static GLM_FUNC_DECL size_type col_size()
Definition: type_mat4x2.inl:39
Definition: _swizzle.hpp:43
ctor
Definition: type_mat4x2.hpp:54
GLM_FUNC_DECL tmat4x2< T > & operator*=(U const &s)
GLM_FUNC_DECL tmat4x2()
Definition: type_mat4x2.inl:79
GLM_FUNC_DECL tmat4x2< T > & operator=(tmat4x2< T > const &m)
Definition: type_mat4x2.inl:318
GLM_FUNC_DECL half operator+(half const &s1, half const &s2)
Definition: type_half.inl:330
GLM_FUNC_DECL half operator-(half const &s1, half const &s2)
Definition: type_half.inl:335
GLM_FUNC_DECL half operator++(half const &s, int)
Definition: type_half.inl:361
GLM_FUNC_DECL tmat4x2< T > & operator/=(U const &s)
tvec4< T > row_type
Definition: type_mat4x2.hpp:58
tmat2x4< T > transpose_type
Definition: type_mat4x2.hpp:60
GLM_FUNC_DECL tmat4x2< T > & operator++()
Definition: type_mat4x2.inl:438
std::size_t size_type
Definition: type_mat4x2.hpp:56
Definition: type_mat2x2.hpp:44
Definition: type_mat2x2.hpp:47
Definition: type_mat2x2.hpp:41
GLM_FUNC_DECL half operator*(half const &s1, half const &s2)
Definition: type_half.inl:340
GLM_FUNC_DECL col_type & operator[](size_type i)
Definition: type_mat4x2.inl:56
Definition: type_mat2x2.hpp:40
T value_type
Definition: type_mat4x2.hpp:55
GLM_FUNC_DECL half operator/(half const &s1, half const &s2)
Definition: type_half.inl:345
tmat4x2< T > type
Definition: type_mat4x2.hpp:59
Definition: type_mat2x2.hpp:46
Definition: type_mat2x2.hpp:49
Definition: type_mat2x2.hpp:43
GLM_FUNC_DECL GLM_CONSTEXPR size_type length() const
Definition: type_mat4x2.inl:33
#define GLM_FUNC_DECL
Definition: setup.hpp:678
detail::tmat4x2< mediump_float > mediump_mat4x2
Definition: type_mat4x2.hpp:254
static GLM_FUNC_DECL size_type row_size()
Definition: type_mat4x2.inl:45
tvec2< T > col_type
Definition: type_mat4x2.hpp:57
detail::tmat4x2< lowp_float > lowp_mat4x2
Definition: type_mat4x2.hpp:247