- Main Page
- Related Pages
- Modules
- Files

- File List

type_mat4x2.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_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;
60 typedef tmat2x4<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[4];
70
71 public:
72 // Constructors
73 GLM_FUNC_DECL tmat4x2();
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
135 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<T> const & m);
136 template <typename U>
137 GLM_FUNC_DECL tmat4x2<T>& operator= (tmat4x2<U> const & m);
138 template <typename U>
139 GLM_FUNC_DECL tmat4x2<T>& operator+= (U const & s);
140 template <typename U>
141 GLM_FUNC_DECL tmat4x2<T>& operator+= (tmat4x2<U> const & m);
142 template <typename U>
143 GLM_FUNC_DECL tmat4x2<T>& operator-= (U const & s);
144 template <typename U>
145 GLM_FUNC_DECL tmat4x2<T>& operator-= (tmat4x2<U> const & m);
146 template <typename U>
147 GLM_FUNC_DECL tmat4x2<T>& operator*= (U const & s);
148 template <typename U>
149 GLM_FUNC_DECL tmat4x2<T>& operator*= (tmat4x2<U> const & m);
150 template <typename U>
151 GLM_FUNC_DECL tmat4x2<T>& operator/= (U const & s);
152
153 GLM_FUNC_DECL tmat4x2<T>& operator++ ();
154 GLM_FUNC_DECL tmat4x2<T>& operator-- ();
155 };
156
157 // Binary operators
158 template <typename T>
159 tmat4x2<T> operator+ (
160 tmat4x2<T> const & m,
161 typename tmat4x2<T>::value_type const & s);
162
163 template <typename T>
164 tmat4x2<T> operator+ (
165 tmat4x2<T> const & m1,
166 tmat4x2<T> const & m2);
167
168 template <typename T>
169 tmat4x2<T> operator- (
170 tmat4x2<T> const & m,
171 typename tmat4x2<T>::value_type const & s);
172
173 template <typename T>
174 tmat4x2<T> operator- (
175 tmat4x2<T> const & m1,
176 tmat4x2<T> const & m2);
177
178 template <typename T>
179 tmat4x2<T> operator* (
180 tmat4x2<T> const & m,
181 typename tmat4x2<T>::value_type const & s);
182
183 template <typename T>
184 tmat4x2<T> operator* (
185 typename tmat4x2<T>::value_type const & s,
186 tmat4x2<T> const & m);
187
188 template <typename T>
189 typename tmat4x2<T>::col_type operator* (
190 tmat4x2<T> const & m,
191 typename tmat4x2<T>::row_type const & v);
192
193 template <typename T>
194 typename tmat4x2<T>::row_type operator* (
195 typename tmat4x2<T>::col_type const & v,
196 tmat4x2<T> const & m);
197
198 template <typename T>
199 tmat3x2<T> operator* (
200 tmat4x2<T> const & m1,
201 tmat3x4<T> const & m2);
202
203 template <typename T>
204 tmat4x2<T> operator* (
205 tmat4x2<T> const & m1,
206 tmat4x4<T> const & m2);
207
208 template <typename T>
209 tmat2x3<T> operator* (
210 tmat4x3<T> const & m1,
211 tmat2x4<T> const & m2);
212
213 template <typename T>
214 tmat4x2<T> operator/ (
215 tmat4x2<T> const & m,
216 typename tmat4x2<T>::value_type const & s);
217
218 template <typename T>
219 tmat4x2<T> operator/ (
220 typename tmat4x2<T>::value_type const & s,
221 tmat4x2<T> const & m);
222
223 // Unary constant operators
224 template <typename T>
225 tmat4x2<T> const operator- (
226 tmat4x2<T> const & m);
227
228 template <typename T>
229 tmat4x2<T> const operator-- (
230 tmat4x2<T> const & m,
231 int);
232
233 template <typename T>
234 tmat4x2<T> const operator++ (
235 tmat4x2<T> const & m,
236 int);
237 } //namespace detail
238
241
247 typedef detail::tmat4x2<lowp_float> lowp_mat4x2;
248
254 typedef detail::tmat4x2<mediump_float> mediump_mat4x2;
255
261 typedef detail::tmat4x2<highp_float> highp_mat4x2;
262
264 }//namespace glm
265
266 #ifndef GLM_EXTERNAL_TEMPLATE
267 #include "type_mat4x2.inl"
268 #endif
269
270 #endif //glm_core_type_mat4x2