From 045448fa080c82e6bb5245c6295c47db56e35839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 8 Feb 2015 13:29:25 +0100 Subject: [PATCH] Added DimensionTraits::RangeType and RangeTypeFor. --- src/Magnum/DimensionTraits.h | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/Magnum/DimensionTraits.h b/src/Magnum/DimensionTraits.h index 7a1f6e131..cd7ccef31 100644 --- a/src/Magnum/DimensionTraits.h +++ b/src/Magnum/DimensionTraits.h @@ -51,6 +51,14 @@ template struct DimensionTraits { */ typedef U VectorType; + /** + * @brief Range type + * + * @ref Math::Range1D, @ref Math::Range2D or @ref Math::Range3D based on + * dimension count. + */ + typedef U RangeType; + /** * @brief Matrix type * @@ -69,6 +77,14 @@ See @ref DimensionTraits::VectorType for more information. */ template using VectorTypeFor = typename DimensionTraits::VectorType; +/** +@brief Range type for given dimension count and type + +Convenience alternative to `typename DimensionTraits::RangeType`. +See @ref DimensionTraits::RangeType for more information. +*/ +template using RangeTypeFor = typename DimensionTraits::RangeType; + /** @brief Matrix type for given dimension count and type @@ -83,6 +99,7 @@ template struct DimensionTraits<1, T> { DimensionTraits() = delete; typedef Math::Vector<1, T> VectorType; + typedef Math::Range1D RangeType; }; /* Two dimensions - integral */ @@ -90,6 +107,7 @@ template struct DimensionTraits<2, T> { DimensionTraits() = delete; typedef Math::Vector2 VectorType; + typedef Math::Range2D RangeType; }; /* Two dimensions - floating-point */ @@ -97,6 +115,7 @@ template<> struct DimensionTraits<2, Float> { DimensionTraits() = delete; typedef Math::Vector2 VectorType; + typedef Math::Range2D RangeType; typedef Math::Matrix3 MatrixType; }; #ifndef MAGNUM_TARGET_GLES @@ -104,6 +123,7 @@ template<> struct DimensionTraits<2, Double> { DimensionTraits() = delete; typedef Math::Vector2 VectorType; + typedef Math::Range2D RangeType; typedef Math::Matrix3 MatrixType; }; #endif @@ -113,6 +133,7 @@ template struct DimensionTraits<3, T> { DimensionTraits() = delete; typedef Math::Vector3 VectorType; + typedef Math::Range3D RangeType; }; /* Three dimensions - floating-point */ @@ -120,6 +141,7 @@ template<> struct DimensionTraits<3, Float> { DimensionTraits() = delete; typedef Math::Vector3 VectorType; + typedef Math::Range3D RangeType; typedef Math::Matrix4 MatrixType; }; #ifndef MAGNUM_TARGET_GLES @@ -127,6 +149,7 @@ template<> struct DimensionTraits<3, Double> { DimensionTraits() = delete; typedef Math::Vector3 VectorType; + typedef Math::Range3D RangeType; typedef Math::Matrix4 MatrixType; }; #endif