type_mat3x2.hpp
Go to the documentation of this file.
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 #ifndef glm_core_type_mat3x2
30 #define glm_core_type_mat3x2
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 tmat3x2
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 tvec3<T> row_type;
59  typedef tmat3x2<T> type;
60  typedef tmat2x3<T> transpose_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[3];
70 
71  public:
72  // Constructors
73  GLM_FUNC_DECL tmat3x2();
74  GLM_FUNC_DECL tmat3x2(tmat3x2 const & m);
75 
76  GLM_FUNC_DECL explicit tmat3x2(
77  ctor);
78  GLM_FUNC_DECL explicit tmat3x2(
79  value_type const & s);
80  GLM_FUNC_DECL explicit tmat3x2(
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  GLM_FUNC_DECL explicit tmat3x2(
85  col_type const & v0,
86  col_type const & v1,
87  col_type const & v2);
88 
90  // Conversions
91  template <typename U>
92  GLM_FUNC_DECL explicit tmat3x2(
93  U const & x);
94 
95  template
96  <
97  typename X1, typename Y1,
98  typename X2, typename Y2,
99  typename X3, typename Y3
100  >
101  GLM_FUNC_DECL explicit tmat3x2(
102  X1 const & x1, Y1 const & y1,
103  X2 const & x2, Y2 const & y2,
104  X3 const & x3, Y3 const & y3);
105 
106  template <typename V1, typename V2, typename V3>
107  GLM_FUNC_DECL explicit tmat3x2(
108  tvec2<V1> const & v1,
109  tvec2<V2> const & v2,
110  tvec2<V3> const & v3);
111 
112  // Matrix conversions
113  template <typename U>
114  GLM_FUNC_DECL explicit tmat3x2(tmat3x2<U> const & m);
115 
116  GLM_FUNC_DECL explicit tmat3x2(tmat2x2<T> const & x);
117  GLM_FUNC_DECL explicit tmat3x2(tmat3x3<T> const & x);
118  GLM_FUNC_DECL explicit tmat3x2(tmat4x4<T> const & x);
119  GLM_FUNC_DECL explicit tmat3x2(tmat2x3<T> const & x);
120  GLM_FUNC_DECL explicit tmat3x2(tmat2x4<T> const & x);
121  GLM_FUNC_DECL explicit tmat3x2(tmat3x4<T> const & x);
122  GLM_FUNC_DECL explicit tmat3x2(tmat4x2<T> const & x);
123  GLM_FUNC_DECL explicit tmat3x2(tmat4x3<T> const & x);
124 
125  // Accesses
126  GLM_FUNC_DECL col_type & operator[](size_type i);
127  GLM_FUNC_DECL col_type const & operator[](size_type i) const;
128 
129  // Unary updatable operators
130  GLM_FUNC_DECL tmat3x2<T> & operator= (tmat3x2<T> const & m);
131  template <typename U>
132  GLM_FUNC_DECL tmat3x2<T> & operator= (tmat3x2<U> const & m);
133  template <typename U>
134  GLM_FUNC_DECL tmat3x2<T> & operator+= (U const & s);
135  template <typename U>
136  GLM_FUNC_DECL tmat3x2<T> & operator+= (tmat3x2<U> const & m);
137  template <typename U>
138  GLM_FUNC_DECL tmat3x2<T> & operator-= (U const & s);
139  template <typename U>
140  GLM_FUNC_DECL tmat3x2<T> & operator-= (tmat3x2<U> const & m);
141  template <typename U>
142  GLM_FUNC_DECL tmat3x2<T> & operator*= (U const & s);
143  template <typename U>
144  GLM_FUNC_DECL tmat3x2<T> & operator*= (tmat3x2<U> const & m);
145  template <typename U>
146  GLM_FUNC_DECL tmat3x2<T> & operator/= (U const & s);
147 
148  GLM_FUNC_DECL tmat3x2<T> & operator++ ();
149  GLM_FUNC_DECL tmat3x2<T> & operator-- ();
150  };
151 
152  // Binary operators
153  template <typename T>
154  tmat3x2<T> operator+ (
155  tmat3x2<T> const & m,
156  typename tmat3x2<T>::value_type const & s);
157 
158  template <typename T>
159  tmat3x2<T> operator+ (
160  tmat3x2<T> const & m1,
161  tmat3x2<T> const & m2);
162 
163  template <typename T>
164  tmat3x2<T> operator- (
165  tmat3x2<T> const & m,
166  typename tmat3x2<T>::value_type const & s);
167 
168  template <typename T>
169  tmat3x2<T> operator- (
170  tmat3x2<T> const & m1,
171  tmat3x2<T> const & m2);
172 
173  template <typename T>
174  tmat3x2<T> operator* (
175  tmat3x2<T> const & m,
176  typename tmat3x2<T>::value_type const & s);
177 
178  template <typename T>
179  tmat3x2<T> operator* (
180  typename tmat3x2<T>::value_type const & s,
181  tmat3x2<T> const & m);
182 
183  template <typename T>
184  typename tmat3x2<T>::col_type operator* (
185  tmat3x2<T> const & m,
186  typename tmat3x2<T>::row_type const & v);
187 
188  template <typename T>
189  typename tmat3x2<T>::row_type operator* (
190  typename tmat3x2<T>::col_type const & v,
191  tmat3x2<T> const & m);
192 
193  template <typename T>
194  tmat2x2<T> operator* (
195  tmat3x2<T> const & m1,
196  tmat2x3<T> const & m2);
197 
198  template <typename T>
199  tmat3x2<T> operator* (
200  tmat3x2<T> const & m1,
201  tmat3x3<T> const & m2);
202 
203  template <typename T>
204  tmat4x2<T> operator* (
205  tmat3x2<T> const & m1,
206  tmat4x3<T> const & m2);
207 
208  template <typename T>
209  tmat3x2<T> operator/ (
210  tmat3x2<T> const & m,
211  typename tmat3x2<T>::value_type const & s);
212 
213  template <typename T>
214  tmat3x2<T> operator/ (
215  typename tmat3x2<T>::value_type const & s,
216  tmat3x2<T> const & m);
217 
218  // Unary constant operators
219  template <typename T>
220  tmat3x2<T> const operator- (
221  tmat3x2<T> const & m);
222 
223  template <typename T>
224  tmat3x2<T> const operator-- (
225  tmat3x2<T> const & m,
226  int);
227 
228  template <typename T>
229  tmat3x2<T> const operator++ (
230  tmat3x2<T> const & m,
231  int);
232 } //namespace detail
233 
236 
242  typedef detail::tmat3x2<lowp_float> lowp_mat3x2;
243 
249  typedef detail::tmat3x2<mediump_float> mediump_mat3x2;
250 
256  typedef detail::tmat3x2<highp_float> highp_mat3x2;
257 
259 }//namespace glm
260 
261 #ifndef GLM_EXTERNAL_TEMPLATE
262 #include "type_mat3x2.inl"
263 #endif
264 
265 #endif //glm_core_type_mat3x2