Browse Source

Added convenience BoolVector2, BoolVector3 and BoolVector4 typedefs.

pull/338/head
Vladimír Vondruš 7 years ago
parent
commit
988a33c000
  1. 2
      doc/changelog.dox
  2. 2
      doc/snippets/MagnumMath.cpp
  3. 2
      doc/types.dox
  4. 24
      src/Magnum/Magnum.h
  5. 4
      src/Magnum/Math/BoolVector.h

2
doc/changelog.dox

@ -114,6 +114,8 @@ See also:
- @ref Math::Frustum::begin() / @ref Math::Frustum::end() accessors for - @ref Math::Frustum::begin() / @ref Math::Frustum::end() accessors for
easy range-for access to @ref Math::Frustum planes easy range-for access to @ref Math::Frustum planes
- Added convenience @ref BoolVector2, @ref BoolVector3 and @ref BoolVector4
typedefs to the root namespace
@subsubsection changelog-latest-new-platform Platform libraries @subsubsection changelog-latest-new-platform Platform libraries

2
doc/snippets/MagnumMath.cpp

@ -283,7 +283,7 @@ static_cast<void>(min);
static_cast<void>(max); static_cast<void>(max);
/* [matrix-vector-operations-compare] */ /* [matrix-vector-operations-compare] */
Math::BoolVector<3> largerOrEqual = a >= b; // {false, true, true} BoolVector3 largerOrEqual = a >= b; // {false, true, true}
bool anySmaller = (a < b).any(); // true bool anySmaller = (a < b).any(); // true
bool allLarger = (a > b).all(); // false bool allLarger = (a > b).all(); // false
/* [matrix-vector-operations-compare] */ /* [matrix-vector-operations-compare] */

2
doc/types.dox

@ -69,7 +69,7 @@ underlying type.
| Magnum vector type | Equivalent GLSL type | | Magnum vector type | Equivalent GLSL type |
| ---------------------------------------------- | ------------------------- | | ---------------------------------------------- | ------------------------- |
| @ref Math::BoolVector "Math::BoolVector<2>", @ref Math::BoolVector "Math::BoolVector<3>", @ref Math::BoolVector "Math::BoolVector<4>" | @glsl bvec2 @ce, @glsl bvec3 @ce, @glsl bvec4 @ce | | @ref BoolVector2, @ref BoolVector3, @ref BoolVector4 | @glsl bvec2 @ce, @glsl bvec3 @ce, @glsl bvec4 @ce |
| @ref Vector2, @ref Vector3, @ref Color3, @ref Vector4, @ref Color4 | @glsl vec2 @ce, @glsl vec3 @ce, @glsl vec4 @ce | | @ref Vector2, @ref Vector3, @ref Color3, @ref Vector4, @ref Color4 | @glsl vec2 @ce, @glsl vec3 @ce, @glsl vec4 @ce |
| @ref Vector2ui, @ref Vector3ui, @ref Vector4ui | @glsl uvec2 @ce, @glsl uvec3 @ce, @glsl uvec4 @ce | | @ref Vector2ui, @ref Vector3ui, @ref Vector4ui | @glsl uvec2 @ce, @glsl uvec3 @ce, @glsl uvec4 @ce |
| @ref Vector2i, @ref Vector3i, @ref Vector4i | @glsl ivec2 @ce, @glsl ivec3 @ce, @glsl ivec4 @ce | | @ref Vector2i, @ref Vector3i, @ref Vector4i | @glsl ivec2 @ce, @glsl ivec3 @ce, @glsl ivec4 @ce |

24
src/Magnum/Magnum.h

@ -233,6 +233,30 @@ typedef float Float;
/** @brief Half (16bit) */ /** @brief Half (16bit) */
typedef Math::Half Half; typedef Math::Half Half;
/**
@brief Two-component bool vector
Equivalent to GLSL @glsl bvec2 @ce.
@m_keyword{bvec2,GLSL bvec2,}
*/
typedef Math::BoolVector<2> BoolVector2;
/**
@brief Three-component bool vector
Equivalent to GLSL @glsl bvec3 @ce.
@m_keyword{bvec3,GLSL bvec3,}
*/
typedef Math::BoolVector<3> BoolVector3;
/**
@brief Four-component bool vector
Equivalent to GLSL @glsl bvec4 @ce.
@m_keyword{bvec4,GLSL bvec4,}
*/
typedef Math::BoolVector<4> BoolVector4;
/** /**
@brief Two-component float vector @brief Two-component float vector

4
src/Magnum/Math/BoolVector.h

@ -82,9 +82,7 @@ way as if the variables were just scalars:
@snippet MagnumMath.cpp BoolVector-boolean @snippet MagnumMath.cpp BoolVector-boolean
@m_keyword{bvec2,GLSL bvec2,} @see @ref Magnum::BoolVector2, @ref Magnum::BoolVector3, @ref Magnum::BoolVector4
@m_keyword{bvec3,GLSL bvec3,}
@m_keyword{bvec4,GLSL bvec4,}
*/ */
template<std::size_t size> class BoolVector { template<std::size_t size> class BoolVector {
static_assert(size != 0, "BoolVector cannot have zero elements"); static_assert(size != 0, "BoolVector cannot have zero elements");

Loading…
Cancel
Save