Flow Visualisation
type_mat2x3.hpp
Go to the documentation of this file.
1 
29 #ifndef glm_core_type_mat2x3
30 #define glm_core_type_mat2x3
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 tmat2x3
53  {
54  enum ctor{null};
55  typedef T value_type;
56  typedef std::size_t size_type;
57  typedef tvec3<T> col_type;
58  typedef tvec2<T> row_type;
59  typedef tmat2x3<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[2];
70 
71  public:
72  // Constructors
74  GLM_FUNC_DECL tmat2x3(tmat2x3 const & m);
75 
76  GLM_FUNC_DECL explicit tmat2x3(
77  ctor);
78  GLM_FUNC_DECL explicit tmat2x3(
79  value_type const & s);
80  GLM_FUNC_DECL explicit tmat2x3(
81  value_type const & x0, value_type const & y0, value_type const & z0,
82  value_type const & x1, value_type const & y1, value_type const & z1);
83  GLM_FUNC_DECL explicit tmat2x3(
84  col_type const & v0,
85  col_type const & v1);
86 
88  // Conversions
89  template <typename U>
90  GLM_FUNC_DECL explicit tmat2x3(
91  U const & x);
92 
93  template <typename X1, typename Y1, typename Z1, typename X2, typename Y2, typename Z2>
94  GLM_FUNC_DECL explicit tmat2x3(
95  X1 const & x1, Y1 const & y1, Z1 const & z1,
96  X2 const & x2, Y2 const & y2, Z2 const & z2);
97 
98  template <typename U, typename V>
99  GLM_FUNC_DECL explicit tmat2x3(
100  tvec3<U> const & v1,
101  tvec3<V> const & v2);
102 
104  // Matrix conversion
105  template <typename U>
106  GLM_FUNC_DECL explicit tmat2x3(tmat2x3<U> const & m);
107 
108  GLM_FUNC_DECL explicit tmat2x3(tmat2x2<T> const & x);
109  GLM_FUNC_DECL explicit tmat2x3(tmat3x3<T> const & x);
110  GLM_FUNC_DECL explicit tmat2x3(tmat4x4<T> const & x);
111  GLM_FUNC_DECL explicit tmat2x3(tmat2x4<T> const & x);
112  GLM_FUNC_DECL explicit tmat2x3(tmat3x2<T> const & x);
113  GLM_FUNC_DECL explicit tmat2x3(tmat3x4<T> const & x);
114  GLM_FUNC_DECL explicit tmat2x3(tmat4x2<T> const & x);
115  GLM_FUNC_DECL explicit tmat2x3(tmat4x3<T> const & x);
116 
117  // Accesses
118  GLM_FUNC_DECL col_type & operator[](size_type i);
119  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
120 
121  // Unary updatable operators
123  template <typename U>
125  template <typename U>
126  GLM_FUNC_DECL tmat2x3<T> & operator+= (U const & s);
127  template <typename U>
129  template <typename U>
130  GLM_FUNC_DECL tmat2x3<T> & operator-= (U const & s);
131  template <typename U>
133  template <typename U>
134  GLM_FUNC_DECL tmat2x3<T> & operator*= (U const & s);
135  template <typename U>
137  template <typename U>
138  GLM_FUNC_DECL tmat2x3<T> & operator/= (U const & s);
139 
142  };
143 
144  // Binary operators
145  template <typename T>
147  tmat2x3<T> const & m,
148  typename tmat2x3<T>::value_type const & s);
149 
150  template <typename T>
152  tmat2x3<T> const & m1,
153  tmat2x3<T> const & m2);
154 
155  template <typename T>
157  tmat2x3<T> const & m,
158  typename tmat2x3<T>::value_type const & s);
159 
160  template <typename T>
162  tmat2x3<T> const & m1,
163  tmat2x3<T> const & m2);
164 
165  template <typename T>
167  tmat2x3<T> const & m,
168  typename tmat2x3<T>::value_type const & s);
169 
170  template <typename T>
172  typename tmat2x3<T>::value_type const & s,
173  tmat2x3<T> const & m);
174 
175  template <typename T>
177  tmat2x3<T> const & m,
178  typename tmat2x3<T>::row_type const & v);
179 
180  template <typename T>
182  typename tmat2x3<T>::col_type const & v,
183  tmat2x3<T> const & m);
184 
185  template <typename T>
187  tmat2x3<T> const & m1,
188  tmat2x2<T> const & m2);
189 
190  template <typename T>
192  tmat2x3<T> const & m1,
193  tmat3x2<T> const & m2);
194 
195  template <typename T>
197  tmat2x3<T> const & m1,
198  tmat4x2<T> const & m2);
199 
200  template <typename T>
202  tmat2x3<T> const & m,
203  typename tmat2x3<T>::value_type const & s);
204 
205  template <typename T>
207  typename tmat2x3<T>::value_type const & s,
208  tmat2x3<T> const & m);
209 
210  // Unary constant operators
211  template <typename T>
213  tmat2x3<T> const & m);
214 
215  template <typename T>
217  tmat2x3<T> const & m,
218  int);
219 
220  template <typename T>
222  tmat2x3<T> const & m,
223  int);
224 
225 } //namespace detail
226 
229 
236 
243 
250 
252 }//namespace glm
253 
254 #ifndef GLM_EXTERNAL_TEMPLATE
255 #include "type_mat2x3.inl"
256 #endif
257 
258 #endif //glm_core_type_mat2x3
GLM_FUNC_DECL half operator--(half const &s, int)
Definition: type_half.inl:356
std::size_t size_type
Definition: type_mat2x3.hpp:56
#define GLM_CONSTEXPR
Definition: _detail.hpp:479
Definition: type_mat2x2.hpp:45
Definition: type_mat2x2.hpp:48
Definition: type_mat2x2.hpp:42
GLM_FUNC_DECL GLM_CONSTEXPR size_type length() const
Definition: type_mat2x3.inl:33
Definition: _detail.hpp:38
Definition: type_mat2x2.hpp:38
Definition: _swizzle.hpp:43
Definition: type_mat2x3.hpp:54
tvec2< T > row_type
Definition: type_mat2x3.hpp:58
GLM_FUNC_DECL half operator+(half const &s1, half const &s2)
Definition: type_half.inl:330
GLM_FUNC_DECL tmat2x3()
Definition: type_mat2x3.inl:79
static GLM_FUNC_DECL size_type col_size()
Definition: type_mat2x3.inl:39
GLM_FUNC_DECL tmat2x3< T > & operator--()
Definition: type_mat2x3.inl:385
GLM_FUNC_DECL half operator-(half const &s1, half const &s2)
Definition: type_half.inl:335
GLM_FUNC_DECL tmat2x3< T > & operator+=(U const &s)
GLM_FUNC_DECL tmat2x3< T > & operator*=(U const &s)
GLM_FUNC_DECL half operator++(half const &s, int)
Definition: type_half.inl:361
GLM_FUNC_DECL tmat2x3< T > & operator/=(U const &s)
T value_type
Definition: type_mat2x3.hpp:55
Definition: type_mat2x2.hpp:39
GLM_FUNC_DECL tmat2x3< T > & operator=(tmat2x3< T > const &m)
Definition: type_mat2x3.inl:273
detail::tmat2x3< mediump_float > mediump_mat2x3
Definition: type_mat2x3.hpp:242
GLM_FUNC_DECL tmat2x3< T > & operator++()
Definition: type_mat2x3.inl:377
Definition: type_mat2x2.hpp:44
Definition: type_mat2x2.hpp:47
Definition: type_mat2x2.hpp:41
tvec3< T > col_type
Definition: type_mat2x3.hpp:57
static GLM_FUNC_DECL size_type row_size()
Definition: type_mat2x3.inl:45
GLM_FUNC_DECL half operator*(half const &s1, half const &s2)
Definition: type_half.inl:340
detail::tmat2x3< highp_float > highp_mat2x3
Definition: type_mat2x3.hpp:249
tmat3x2< T > transpose_type
Definition: type_mat2x3.hpp:60
GLM_FUNC_DECL tmat2x3< T > & operator-=(U const &s)
GLM_FUNC_DECL half operator/(half const &s1, half const &s2)
Definition: type_half.inl:345
detail::tmat2x3< lowp_float > lowp_mat2x3
Definition: type_mat2x3.hpp:235
GLM_FUNC_DECL col_type & operator[](size_type i)
Definition: type_mat2x3.inl:56
Definition: type_mat2x2.hpp:46
Definition: type_mat2x2.hpp:49
Definition: type_mat2x2.hpp:43
#define GLM_FUNC_DECL
Definition: setup.hpp:678
tmat2x3< T > type
Definition: type_mat2x3.hpp:59
ctor
Definition: type_mat2x3.hpp:54