diff --git a/src/Magnum/AbstractTexture.cpp b/src/Magnum/AbstractTexture.cpp index 50e0671a1..3c0e3d092 100644 --- a/src/Magnum/AbstractTexture.cpp +++ b/src/Magnum/AbstractTexture.cpp @@ -1261,7 +1261,7 @@ template void MAGNUM_EXPORT AbstractTexture::image<1>(GLint, BufferImage<1>&, Bu template void MAGNUM_EXPORT AbstractTexture::image<2>(GLint, BufferImage<2>&, BufferUsage); template void MAGNUM_EXPORT AbstractTexture::image<3>(GLint, BufferImage<3>&, BufferUsage); -template void AbstractTexture::subImage(const GLint level, const RangeTypeFor& range, Image& image) { +template void AbstractTexture::subImage(const GLint level, const typename DimensionTraits::RangeType& range, Image& image) { createIfNotAlready(); const Math::Vector size = range.size(); @@ -1279,7 +1279,7 @@ template void MAGNUM_EXPORT AbstractTexture::subImage<1>(GLint, const Range1Di&, template void MAGNUM_EXPORT AbstractTexture::subImage<2>(GLint, const Range2Di&, Image<2>&); template void MAGNUM_EXPORT AbstractTexture::subImage<3>(GLint, const Range3Di&, Image<3>&); -template void AbstractTexture::subImage(const GLint level, const RangeTypeFor& range, BufferImage& image, const BufferUsage usage) { +template void AbstractTexture::subImage(const GLint level, const typename DimensionTraits::RangeType& range, BufferImage& image, const BufferUsage usage) { createIfNotAlready(); const Math::Vector size = range.size(); diff --git a/src/Magnum/AbstractTexture.h b/src/Magnum/AbstractTexture.h index 55bd966fd..563ab7745 100644 --- a/src/Magnum/AbstractTexture.h +++ b/src/Magnum/AbstractTexture.h @@ -381,8 +381,8 @@ class MAGNUM_EXPORT AbstractTexture: public AbstractObject { #ifndef MAGNUM_TARGET_GLES template void image(GLint level, Image& image); template void image(GLint level, BufferImage& image, BufferUsage usage); - template void subImage(GLint level, const RangeTypeFor& range, Image& image); - template void subImage(GLint level, const RangeTypeFor& range, BufferImage& image, BufferUsage usage); + template void subImage(GLint level, const typename DimensionTraits::RangeType& range, Image& image); + template void subImage(GLint level, const typename DimensionTraits::RangeType& range, BufferImage& image, BufferUsage usage); #endif GLenum _target; diff --git a/src/Magnum/DimensionTraits.h b/src/Magnum/DimensionTraits.h index 375e70bed..ea94f5fb6 100644 --- a/src/Magnum/DimensionTraits.h +++ b/src/Magnum/DimensionTraits.h @@ -103,7 +103,11 @@ template struct DimensionTraits<1, T> { DimensionTraits() = delete; typedef Math::Vector<1, T> VectorType; + #ifndef CORRADE_GCC46_COMPATIBILITY typedef Math::Range1D RangeType; + #else + typedef Math::Range<1, T> RangeType; + #endif }; /* Two dimensions - integral */ diff --git a/src/Magnum/SceneGraph/AbstractCamera.hpp b/src/Magnum/SceneGraph/AbstractCamera.hpp index 126431bfb..4040ffd18 100644 --- a/src/Magnum/SceneGraph/AbstractCamera.hpp +++ b/src/Magnum/SceneGraph/AbstractCamera.hpp @@ -47,7 +47,7 @@ template typename DimensionTraits::scaling(Math::Vector::pad( + return DimensionTraits::MatrixType::scaling(Math::Vector::pad( (relativeAspectRatio.x() > relativeAspectRatio.y()) == (aspectRatioPolicy == AspectRatioPolicy::Extend) ? Vector2(relativeAspectRatio.y()/relativeAspectRatio.x(), T(1)) : Vector2(T(1), relativeAspectRatio.x()/relativeAspectRatio.y()), T(1))); diff --git a/src/Magnum/SceneGraph/AbstractTranslation.h b/src/Magnum/SceneGraph/AbstractTranslation.h index 75441b522..2c0479a95 100644 --- a/src/Magnum/SceneGraph/AbstractTranslation.h +++ b/src/Magnum/SceneGraph/AbstractTranslation.h @@ -88,7 +88,7 @@ class AbstractTranslation: public AbstractTransformation { * or @ref Magnum::SceneGraph::AbstractTranslation::translateLocal() "translateLocal()" * instead. */ - CORRADE_DEPRECATED("use translate() or translateLocal() instead") AbstractTranslation& translate(const VectorTypeFor& vector, TransformationType type) { + CORRADE_DEPRECATED("use translate() or translateLocal() instead") AbstractTranslation& translate(const typename DimensionTraits::VectorType& vector, TransformationType type) { return type == TransformationType::Global ? translate(vector) : translateLocal(vector); } #endif diff --git a/src/Magnum/SceneGraph/AbstractTranslationRotation2D.h b/src/Magnum/SceneGraph/AbstractTranslationRotation2D.h index a12ac67e9..d6d77145d 100644 --- a/src/Magnum/SceneGraph/AbstractTranslationRotation2D.h +++ b/src/Magnum/SceneGraph/AbstractTranslationRotation2D.h @@ -89,16 +89,16 @@ template class AbstractBasicTranslationRotation2D: public AbstractTrans return *this; } AbstractBasicTranslationRotation2D& translate(const Math::Vector2& vector) { - AbstractBasicTranslation2D::translate(vector); + AbstractTranslation<2, T>::translate(vector); return *this; } AbstractBasicTranslationRotation2D& translateLocal(const Math::Vector2& vector) { - AbstractBasicTranslation2D::translateLocal(vector); + AbstractTranslation<2, T>::translateLocal(vector); return *this; } #ifdef MAGNUM_BUILD_DEPRECATED CORRADE_DEPRECATED("use translate() or translateLocal() instead") AbstractBasicTranslationRotation2D& translate(const Math::Vector2& vector, TransformationType type) { - AbstractBasicTranslation2D::translate(vector, type); + AbstractTranslation<2, T>::translate(vector, type); return *this; } #endif diff --git a/src/Magnum/SceneGraph/AbstractTranslationRotation3D.h b/src/Magnum/SceneGraph/AbstractTranslationRotation3D.h index 8ff622330..93fd650e6 100644 --- a/src/Magnum/SceneGraph/AbstractTranslationRotation3D.h +++ b/src/Magnum/SceneGraph/AbstractTranslationRotation3D.h @@ -213,16 +213,16 @@ template class AbstractBasicTranslationRotation3D: public AbstractTrans return *this; } AbstractBasicTranslationRotation3D& translate(const Math::Vector3& vector) { - AbstractBasicTranslation3D::translate(vector); + AbstractTranslation<3, T>::translate(vector); return *this; } AbstractBasicTranslationRotation3D& translateLocal(const Math::Vector3& vector) { - AbstractBasicTranslation3D::translateLocal(vector); + AbstractTranslation<3, T>::translateLocal(vector); return *this; } #ifdef MAGNUM_BUILD_DEPRECATED CORRADE_DEPRECATED("use translate() or translateLocal() instead") AbstractBasicTranslationRotation3D& translate(const Math::Vector2& vector, TransformationType type) { - AbstractBasicTranslation3D::translate(vector, type); + AbstractTranslation<3, T>::translate(vector, type); return *this; } #endif diff --git a/src/Magnum/Texture.cpp b/src/Magnum/Texture.cpp index 79e9ab3a3..b9a373145 100644 --- a/src/Magnum/Texture.cpp +++ b/src/Magnum/Texture.cpp @@ -83,7 +83,7 @@ template MAGNUM_EXPORT BufferImage<2> Texture<2>::image(Int, BufferImage<2>&&, B template MAGNUM_EXPORT BufferImage<3> Texture<3>::image(Int, BufferImage<3>&&, BufferUsage); #endif -template Image Texture::subImage(const Int level, const RangeTypeFor& range, Image&& image) { +template Image Texture::subImage(const Int level, const typename DimensionTraits::RangeType& range, Image&& image) { this->subImage(level, range, image); return std::move(image); } @@ -94,7 +94,7 @@ template MAGNUM_EXPORT Image<2> Texture<2>::subImage(Int, const Range2Di&, Image template MAGNUM_EXPORT Image<3> Texture<3>::subImage(Int, const Range3Di&, Image<3>&&); #endif -template BufferImage Texture::subImage(const Int level, const RangeTypeFor& range, BufferImage&& image, const BufferUsage usage) { +template BufferImage Texture::subImage(const Int level, const typename DimensionTraits::RangeType& range, BufferImage&& image, const BufferUsage usage) { this->subImage(level, range, image, usage); return std::move(image); } diff --git a/src/Magnum/Texture.h b/src/Magnum/Texture.h index 1ad5e3482..3bfc75139 100644 --- a/src/Magnum/Texture.h +++ b/src/Magnum/Texture.h @@ -712,7 +712,7 @@ template class Texture: public AbstractTexture { * @requires_gl Texture image queries are not available in OpenGL ES. * See @ref Framebuffer::read() for possible workaround. */ - void subImage(Int level, const RangeTypeFor& range, Image& image) { + void subImage(Int level, const typename DimensionTraits::RangeType& range, Image& image) { AbstractTexture::subImage(level, range, image); } @@ -723,7 +723,7 @@ template class Texture: public AbstractTexture { * Image2D image = texture.subImage(0, rect, {ColorFormat::RGBA, ColorType::UnsignedByte}); * @endcode */ - Image subImage(Int level, const RangeTypeFor& range, Image&& image); + Image subImage(Int level, const typename DimensionTraits::RangeType& range, Image&& image); /** * @brief Read range of given texture mip level to buffer image @@ -738,7 +738,7 @@ template class Texture: public AbstractTexture { * @requires_gl Texture image queries are not available in OpenGL ES. * See @ref Framebuffer::read() for possible workaround. */ - void subImage(Int level, const RangeTypeFor& range, BufferImage& image, BufferUsage usage) { + void subImage(Int level, const typename DimensionTraits::RangeType& range, BufferImage& image, BufferUsage usage) { AbstractTexture::subImage(level, range, image, usage); } @@ -749,7 +749,7 @@ template class Texture: public AbstractTexture { * BufferImage2D image = texture.subImage(0, rect, {ColorFormat::RGBA, ColorType::UnsignedByte}, BufferUsage::StaticRead); * @endcode */ - BufferImage subImage(Int level, const RangeTypeFor& range, BufferImage&& image, BufferUsage usage); + BufferImage subImage(Int level, const typename DimensionTraits::RangeType& range, BufferImage&& image, BufferUsage usage); #endif /** diff --git a/src/Magnum/TextureArray.cpp b/src/Magnum/TextureArray.cpp index 470362849..22b2b349f 100644 --- a/src/Magnum/TextureArray.cpp +++ b/src/Magnum/TextureArray.cpp @@ -65,12 +65,12 @@ template BufferImage TextureArray Image TextureArray::subImage(const Int level, const RangeTypeFor& range, Image&& image) { +template Image TextureArray::subImage(const Int level, const typename DimensionTraits::RangeType& range, Image&& image) { this->subImage(level, range, image); return std::move(image); } -template BufferImage TextureArray::subImage(const Int level, const RangeTypeFor& range, BufferImage&& image, const BufferUsage usage) { +template BufferImage TextureArray::subImage(const Int level, const typename DimensionTraits::RangeType& range, BufferImage&& image, const BufferUsage usage) { this->subImage(level, range, image, usage); return std::move(image); } diff --git a/src/Magnum/TextureArray.h b/src/Magnum/TextureArray.h index 0ba00affc..c6568a1f3 100644 --- a/src/Magnum/TextureArray.h +++ b/src/Magnum/TextureArray.h @@ -390,15 +390,15 @@ template class TextureArray: public AbstractTexture { BufferImage image(Int level, BufferImage&& image, BufferUsage usage); /** - * @copybrief Texture::subImage(Int, const RangeTypeFor&, Image&) + * @copybrief Texture::subImage(Int, const typename DimensionTraits::RangeType&, Image&) * - * See @ref Texture::subImage(Int, const RangeTypeFor&, Image&) + * See @ref Texture::subImage(Int, const typename DimensionTraits::RangeType&, Image&) * for more information. * @requires_gl45 Extension @extension{ARB,get_texture_sub_image} * @requires_gl Texture image queries are not available in OpenGL ES. * See @ref Framebuffer::read() for possible workaround. */ - void subImage(Int level, const RangeTypeFor& range, Image& image) { + void subImage(Int level, const typename DimensionTraits::RangeType& range, Image& image) { AbstractTexture::subImage(level, range, image); } @@ -409,18 +409,18 @@ template class TextureArray: public AbstractTexture { * Image3D image = texture.subImage(0, range, {ColorFormat::RGBA, ColorType::UnsignedByte}); * @endcode */ - Image subImage(Int level, const RangeTypeFor& range, Image&& image); + Image subImage(Int level, const typename DimensionTraits::RangeType& range, Image&& image); /** - * @copybrief Texture::subImage(Int, const RangeTypeFor&, BufferImage&, BufferUsage) + * @copybrief Texture::subImage(Int, const typename DimensionTraits::RangeType&, BufferImage&, BufferUsage) * - * See @ref Texture::subImage(Int, const RangeTypeFor&, BufferImage&, BufferUsage) + * See @ref Texture::subImage(Int, const typename DimensionTraits::RangeType&, BufferImage&, BufferUsage) * for more information. * @requires_gl45 Extension @extension{ARB,get_texture_sub_image} * @requires_gl Texture image queries are not available in OpenGL ES. * See @ref Framebuffer::read() for possible workaround. */ - void subImage(Int level, const RangeTypeFor& range, BufferImage& image, BufferUsage usage) { + void subImage(Int level, const typename DimensionTraits::RangeType& range, BufferImage& image, BufferUsage usage) { AbstractTexture::subImage(level, range, image, usage); } @@ -431,7 +431,7 @@ template class TextureArray: public AbstractTexture { * BufferImage3D image = texture.subImage(0, range, {ColorFormat::RGBA, ColorType::UnsignedByte}, BufferUsage::StaticRead); * @endcode */ - BufferImage subImage(Int level, const RangeTypeFor& range, BufferImage&& image, BufferUsage usage); + BufferImage subImage(Int level, const typename DimensionTraits::RangeType& range, BufferImage&& image, BufferUsage usage); #endif /**