Back to Mame

0.9.8: scalar_multiplication.hpp Source File

3rdparty/glm/doc/api/a00096_source.html

latest5.5 KB
Original Source

| | 0.9.8 |

scalar_multiplication.hpp

Go to the documentation of this file.

1

13 #pragma once

14

15 #include "../detail/setup.hpp"

16

17 #if !GLM_HAS_TEMPLATE_ALIASES && !(GLM_COMPILER & GLM_COMPILER_GCC)

18 # error "GLM_GTX_scalar_multiplication requires C++11 support or alias templates and if not support for GCC"

19 #endif

20

21 #include "../vec2.hpp"

22 #include "../vec3.hpp"

23 #include "../vec4.hpp"

24 #include "../mat2x2.hpp"

25 #include <type_traits>

26

27 namespace glm

28 {

29template <typename T, typename Vec>

30using return_type_scalar_multiplication = typename std::enable_if<

31 !std::is_same<T, float>::value // T may not be a float

32 && std::is_arithmetic<T>::value, Vec // But it may be an int or double (no vec3 or mat3, ...)

33 >::type;

34

35 #define GLM_IMPLEMENT_SCAL_MULT(Vec) \

36 template <typename T> \

37 return_type_scalar_multiplication<T, Vec> \

38 operator*(T const & s, Vec rh){ \

39 return rh *= static_cast<float>(s); \

40 } \

41 \

42 template <typename T> \

43 return_type_scalar_multiplication<T, Vec> \

44 operator*(Vec lh, T const & s){ \

45 return lh *= static_cast<float>(s); \

46 } \

47 \

48 template <typename T> \

49 return_type_scalar_multiplication<T, Vec> \

50 operator/(Vec lh, T const & s){ \

51 return lh *= 1.0f / s; \

52 }

53

54 GLM_IMPLEMENT_SCAL_MULT(vec2)

55 GLM_IMPLEMENT_SCAL_MULT(vec3)

56 GLM_IMPLEMENT_SCAL_MULT(vec4)

57

58 GLM_IMPLEMENT_SCAL_MULT(mat2)

59 GLM_IMPLEMENT_SCAL_MULT(mat2x3)

60 GLM_IMPLEMENT_SCAL_MULT(mat2x4)

61 GLM_IMPLEMENT_SCAL_MULT(mat3x2)

62 GLM_IMPLEMENT_SCAL_MULT(mat3)

63 GLM_IMPLEMENT_SCAL_MULT(mat3x4)

64 GLM_IMPLEMENT_SCAL_MULT(mat4x2)

65 GLM_IMPLEMENT_SCAL_MULT(mat4x3)

66 GLM_IMPLEMENT_SCAL_MULT(mat4)

67

68 #undef GLM_IMPLEMENT_SCAL_MULT

69 } // namespace glm

glm::mat2x4

highp_mat2x4 mat2x4

2 columns of 4 components matrix of floating-point numbers.

Definition: type_mat.hpp:369

glm::mat2

mat2x2 mat2

2 columns of 2 components matrix of floating-point numbers.

Definition: type_mat.hpp:406

glm::mat2x3

highp_mat2x3 mat2x3

2 columns of 3 components matrix of floating-point numbers.

Definition: type_mat.hpp:364

glm::vec4

highp_vec4 vec4

4 components vector of floating-point numbers.

Definition: type_vec.hpp:466

glm::mat3x2

highp_mat3x2 mat3x2

3 columns of 2 components matrix of floating-point numbers.

Definition: type_mat.hpp:374

glm::mat3x4

highp_mat3x4 mat3x4

3 columns of 4 components matrix of floating-point numbers.

Definition: type_mat.hpp:384

glm::mat3

mat3x3 mat3

3 columns of 3 components matrix of floating-point numbers.

Definition: type_mat.hpp:411

glm

Definition: _noise.hpp:11

glm::mat4

mat4x4 mat4

4 columns of 4 components matrix of floating-point numbers.

Definition: type_mat.hpp:416

glm::mat4x2

highp_mat4x2 mat4x2

4 columns of 2 components matrix of floating-point numbers.

Definition: type_mat.hpp:389

glm::vec3

highp_vec3 vec3

3 components vector of floating-point numbers.

Definition: type_vec.hpp:461

glm::vec2

highp_vec2 vec2

2 components vector of floating-point numbers.

Definition: type_vec.hpp:456

glm::mat4x3

highp_mat4x3 mat4x3

4 columns of 3 components matrix of floating-point numbers.

Definition: type_mat.hpp:394


Generated by 1.8.10