PSMoveService
half_float.hpp
Go to the documentation of this file.
1 
37 #ifndef GLM_GTC_half_float
38 #define GLM_GTC_half_float GLM_VERSION
39 
40 // Dependency:
41 #include "../glm.hpp"
42 
43 #if(defined(GLM_MESSAGES) && !defined(glm_ext))
44 # pragma message("GLM: GLM_GTC_half_float extension included")
45 #endif
46 
47 namespace glm{
48 namespace detail
49 {
50 #if(GLM_COMPONENT == GLM_COMPONENT_CXX98)
51  template <>
52  struct tvec2<half>
53  {
54  enum ctor{null};
55  typedef half value_type;
56  typedef std::size_t size_type;
57 
58  GLM_FUNC_DECL size_type length() const;
59  static GLM_FUNC_DECL size_type value_size();
60 
61  typedef tvec2<half> type;
62  typedef tvec2<bool> bool_type;
63 
65  // Data
66 
67  half x, y;
68 
70  // Accesses
71 
72  half & operator[](size_type i);
73  half const & operator[](size_type i) const;
74 
76  // Implicit basic constructors
77 
78  tvec2();
79  tvec2(tvec2<half> const & v);
80 
82  // Explicit basic constructors
83 
84  explicit tvec2(ctor);
85  explicit tvec2(
86  half const & s);
87  explicit tvec2(
88  half const & s1,
89  half const & s2);
90 
92  // Swizzle constructors
93 
94  tvec2(tref2<half> const & r);
95 
97  // Convertion scalar constructors
98 
100  template <typename U>
101  explicit tvec2(U const & x);
103  template <typename U, typename V>
104  explicit tvec2(U const & x, V const & y);
105 
107  // Convertion vector constructors
108 
110  template <typename U>
111  explicit tvec2(tvec2<U> const & v);
113  template <typename U>
114  explicit tvec2(tvec3<U> const & v);
116  template <typename U>
117  explicit tvec2(tvec4<U> const & v);
118 
120  // Unary arithmetic operators
121 
122  tvec2<half>& operator= (tvec2<half> const & v);
123 
124  tvec2<half>& operator+=(half const & s);
125  tvec2<half>& operator+=(tvec2<half> const & v);
126  tvec2<half>& operator-=(half const & s);
127  tvec2<half>& operator-=(tvec2<half> const & v);
128  tvec2<half>& operator*=(half const & s);
129  tvec2<half>& operator*=(tvec2<half> const & v);
130  tvec2<half>& operator/=(half const & s);
131  tvec2<half>& operator/=(tvec2<half> const & v);
132  tvec2<half>& operator++();
133  tvec2<half>& operator--();
134 
136  // Swizzle operators
137 
138  half swizzle(comp X) const;
139  tvec2<half> swizzle(comp X, comp Y) const;
140  tvec3<half> swizzle(comp X, comp Y, comp Z) const;
141  tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) const;
142  tref2<half> swizzle(comp X, comp Y);
143  };
144 
145  template <>
146  struct tvec3<half>
147  {
148  enum ctor{null};
149  typedef half value_type;
150  typedef std::size_t size_type;
151  GLM_FUNC_DECL size_type length() const;
152  static GLM_FUNC_DECL size_type value_size();
153 
154  typedef tvec3<half> type;
155  typedef tvec3<bool> bool_type;
156 
158  // Data
159 
160  half x, y, z;
161 
163  // Accesses
164 
165  half & operator[](size_type i);
166  half const & operator[](size_type i) const;
167 
169  // Implicit basic constructors
170 
171  tvec3();
172  tvec3(tvec3<half> const & v);
173 
175  // Explicit basic constructors
176 
177  explicit tvec3(ctor);
178  explicit tvec3(
179  half const & s);
180  explicit tvec3(
181  half const & s1,
182  half const & s2,
183  half const & s3);
184 
186  // Swizzle constructors
187 
188  tvec3(tref3<half> const & r);
189 
191  // Convertion scalar constructors
192 
194  template <typename U>
195  explicit tvec3(U const & x);
197  template <typename U, typename V, typename W>
198  explicit tvec3(U const & x, V const & y, W const & z);
199 
201  // Convertion vector constructors
202 
204  template <typename A, typename B>
205  explicit tvec3(tvec2<A> const & v, B const & s);
207  template <typename A, typename B>
208  explicit tvec3(A const & s, tvec2<B> const & v);
210  template <typename U>
211  explicit tvec3(tvec3<U> const & v);
213  template <typename U>
214  explicit tvec3(tvec4<U> const & v);
215 
217  // Unary arithmetic operators
218 
219  tvec3<half>& operator= (tvec3<half> const & v);
220 
221  tvec3<half>& operator+=(half const & s);
222  tvec3<half>& operator+=(tvec3<half> const & v);
223  tvec3<half>& operator-=(half const & s);
224  tvec3<half>& operator-=(tvec3<half> const & v);
225  tvec3<half>& operator*=(half const & s);
226  tvec3<half>& operator*=(tvec3<half> const & v);
227  tvec3<half>& operator/=(half const & s);
228  tvec3<half>& operator/=(tvec3<half> const & v);
229  tvec3<half>& operator++();
230  tvec3<half>& operator--();
231 
233  // Swizzle operators
234 
235  half swizzle(comp X) const;
236  tvec2<half> swizzle(comp X, comp Y) const;
237  tvec3<half> swizzle(comp X, comp Y, comp Z) const;
238  tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) const;
239  tref3<half> swizzle(comp X, comp Y, comp Z);
240  };
241 
242  template <>
243  struct tvec4<half>
244  {
245  enum ctor{null};
246  typedef half value_type;
247  typedef std::size_t size_type;
248  GLM_FUNC_DECL size_type length() const;
249  static GLM_FUNC_DECL size_type value_size();
250 
251  typedef tvec4<half> type;
252  typedef tvec4<bool> bool_type;
253 
255  // Data
256 
257  half x, y, z, w;
258 
260  // Accesses
261 
262  half & operator[](size_type i);
263  half const & operator[](size_type i) const;
264 
266  // Implicit basic constructors
267 
268  tvec4();
269  tvec4(tvec4<half> const & v);
270 
272  // Explicit basic constructors
273 
274  explicit tvec4(ctor);
275  explicit tvec4(
276  half const & s);
277  explicit tvec4(
278  half const & s0,
279  half const & s1,
280  half const & s2,
281  half const & s3);
282 
284  // Swizzle constructors
285 
286  tvec4(tref4<half> const & r);
287 
289  // Convertion scalar constructors
290 
292  template <typename U>
293  explicit tvec4(U const & x);
295  template <typename A, typename B, typename C, typename D>
296  explicit tvec4(A const & x, B const & y, C const & z, D const & w);
297 
299  // Convertion vector constructors
300 
302  template <typename A, typename B, typename C>
303  explicit tvec4(tvec2<A> const & v, B const & s1, C const & s2);
305  template <typename A, typename B, typename C>
306  explicit tvec4(A const & s1, tvec2<B> const & v, C const & s2);
308  template <typename A, typename B, typename C>
309  explicit tvec4(A const & s1, B const & s2, tvec2<C> const & v);
311  template <typename A, typename B>
312  explicit tvec4(tvec3<A> const & v, B const & s);
314  template <typename A, typename B>
315  explicit tvec4(A const & s, tvec3<B> const & v);
317  template <typename A, typename B>
318  explicit tvec4(tvec2<A> const & v1, tvec2<B> const & v2);
320  template <typename U>
321  explicit tvec4(tvec4<U> const & v);
322 
324  // Unary arithmetic operators
325 
326  tvec4<half>& operator= (tvec4<half> const & v);
327 
328  tvec4<half>& operator+=(half const & s);
329  tvec4<half>& operator+=(tvec4<half> const & v);
330  tvec4<half>& operator-=(half const & s);
331  tvec4<half>& operator-=(tvec4<half> const & v);
332  tvec4<half>& operator*=(half const & s);
333  tvec4<half>& operator*=(tvec4<half> const & v);
334  tvec4<half>& operator/=(half const & s);
335  tvec4<half>& operator/=(tvec4<half> const & v);
336  tvec4<half>& operator++();
337  tvec4<half>& operator--();
338 
340  // Swizzle operators
341 
342  half swizzle(comp X) const;
343  tvec2<half> swizzle(comp X, comp Y) const;
344  tvec3<half> swizzle(comp X, comp Y, comp Z) const;
345  tvec4<half> swizzle(comp X, comp Y, comp Z, comp W) const;
346  tref4<half> swizzle(comp X, comp Y, comp Z, comp W);
347  };
348 #endif//(GLM_COMPONENT == GLM_COMPONENT_CXX98)
349 }
350 //namespace detail
351 
354 
358 
362 
366 
370 
374 
378 
382 
386 
390 
394 
398 
402 
406 
410 
414 
418 
420 }// namespace glm
421 
422 #include "half_float.inl"
423 
424 #endif//GLM_GTC_half_float
detail::tmat3x2< detail::half > hmat3x2
3 * 2 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:397
detail::tmat4x3< detail::half > hmat4x3
4 * 3 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:413
detail::tmat2x4< detail::half > hmat2x4
2 * 4 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:393
Definition: type_mat2x2.hpp:45
Definition: type_mat2x2.hpp:48
Definition: type_mat2x2.hpp:42
detail::tvec4< detail::half > hvec4
Vector of 4 half-precision floating-point numbers.
Definition: half_float.hpp:369
Definition: _detail.hpp:38
Definition: type_mat2x2.hpp:38
detail::half half
Type for half-precision floating-point numbers.
Definition: half_float.hpp:357
detail::tmat3x4< detail::half > hmat3x4
3 * 4 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:405
OpenGL Mathematics (glm.g-truc.net)
detail::tmat4x2< detail::half > hmat4x2
4 * 2 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:409
detail::tmat3x3< detail::half > hmat3
3 * 3 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:377
detail::tmat2x2< detail::half > hmat2x2
2 * 2 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:385
detail::tmat4x4< detail::half > hmat4
4 * 4 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:381
Definition: type_mat2x2.hpp:39
Definition: type_mat2x2.hpp:44
Definition: type_mat2x2.hpp:47
Definition: type_mat2x2.hpp:41
16-bit floating point type.
Definition: type_half.hpp:44
detail::tmat4x4< detail::half > hmat4x4
4 * 4 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:417
Definition: type_mat2x2.hpp:40
detail::tmat2x2< detail::half > hmat2
2 * 2 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:373
detail::tvec3< detail::half > hvec3
Vector of 3 half-precision floating-point numbers.
Definition: half_float.hpp:365
detail::tmat2x3< detail::half > hmat2x3
2 * 3 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:389
detail::tvec2< detail::half > hvec2
Vector of 2 half-precision floating-point numbers.
Definition: half_float.hpp:361
detail::tmat3x3< detail::half > hmat3x3
3 * 3 matrix of half-precision floating-point numbers.
Definition: half_float.hpp:401
Definition: type_mat2x2.hpp:46
Definition: type_mat2x2.hpp:49
Definition: type_mat2x2.hpp:43