diff --git a/Doxyfile b/Doxyfile
index e3f679713..64ed22e93 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -315,7 +315,13 @@ ALIASES = \
"fn_al_keyword{1}=@fn_al{\1}" \
"fn_alc_keyword{1}=@fn_alc{\1}" \
"def_al_keyword{1}=@def_al{\1}" \
- "def_alc_keyword{1}=@def_alc{\1}"
+ "def_alc_keyword{1}=@def_alc{\1}" \
+ "m_since{2}=@since \1.\2" \
+ "m_since_{2}=@since \2.\3" \
+ "m_since_latest=" \
+ "m_since_latest_=" \
+ "m_deprecated_since{2}=@deprecated" \
+ "m_deprecated_since_latest=@deprecated"
# This tag can be used to specify a number of word-keyword mappings (TCL only).
# A mapping has the form "name=value". For example adding "class=itcl::class"
diff --git a/Doxyfile-mcss b/Doxyfile-mcss
index a770c79d0..c8367a3a9 100644
--- a/Doxyfile-mcss
+++ b/Doxyfile-mcss
@@ -96,7 +96,13 @@ ALIASES = \
"fn_al_keyword{1}=@xmlonly@endxmlonly @fn_al{\1}" \
"fn_alc_keyword{1}=@xmlonly@endxmlonly @fn_alc{\1}" \
"def_al_keyword{1}=@xmlonly@endxmlonly @def_al{\1}" \
- "def_alc_keyword{1}=@xmlonly@endxmlonly @def_alc{\1}"
+ "def_alc_keyword{1}=@xmlonly@endxmlonly @def_alc{\1}" \
+ "m_since{2}=@since @m_class{m-label m-success m-flat} @ref changelog-\1-\2 \"new in \1.\2\"" \
+ "m_since_{3}=@since @m_class{m-label m-success m-flat} @ref changelog-\1-\2-\3 \"new in \2.\3\"" \
+ "m_since_latest=@since @m_class{m-label m-success m-flat} @ref changelog-latest \"new in Git master\"" \
+ "m_since_latest_{1}=@since @m_class{m-label m-success m-flat} @ref changelog-\1-latest \"new in Git master\"" \
+ "m_deprecated_since{2}=@since deprecated in \1.\2 @deprecated" \
+ "m_deprecated_since_latest=@since deprecated in Git master @deprecated"
HTML_EXTRA_STYLESHEET = \
https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,400i,600,600i%7CSource+Code+Pro:400,400i,600&subset=latin-ext \
@@ -118,4 +124,6 @@ HTML_EXTRA_STYLESHEET = \
##! "files" \
##! "Python API"
+##! M_VERSION_LABELS = YES
+
# kate: hl Doxyfile
diff --git a/Doxyfile-public b/Doxyfile-public
index 82c4f0185..3ec1f5c9e 100644
--- a/Doxyfile-public
+++ b/Doxyfile-public
@@ -91,7 +91,13 @@ ALIASES = \
"fn_al_keyword{1}=@xmlonly@endxmlonly @fn_al{\1}" \
"fn_alc_keyword{1}=@xmlonly@endxmlonly @fn_alc{\1}" \
"def_al_keyword{1}=@xmlonly@endxmlonly @def_al{\1}" \
- "def_alc_keyword{1}=@xmlonly@endxmlonly @def_alc{\1}"
+ "def_alc_keyword{1}=@xmlonly@endxmlonly @def_alc{\1}" \
+ "m_since{2}=@since @m_class{m-label m-success m-flat} @ref changelog-\1-\2 \"new in \1.\2\"" \
+ "m_since_{3}=@since @m_class{m-label m-success m-flat} @ref changelog-\1-\2-\3 \"new in \2.\3\"" \
+ "m_since_latest=@since @m_class{m-label m-success m-flat} @ref changelog-latest \"new in Git master\"" \
+ "m_since_latest_{1}=@since @m_class{m-label m-success m-flat} @ref changelog-\1-latest \"new in Git master\"" \
+ "m_deprecated_since{2}=@since deprecated in \1.\2 @deprecated" \
+ "m_deprecated_since_latest=@since deprecated in Git master @deprecated"
GENERATE_TODOLIST = NO
GENERATE_BUGLIST = NO
diff --git a/doc/namespaces.dox b/doc/namespaces.dox
index 13309d812..f40fe649c 100644
--- a/doc/namespaces.dox
+++ b/doc/namespaces.dox
@@ -178,11 +178,11 @@ See @ref building and @ref cmake for more information.
/** @dir Magnum/Math/Geometry
* @brief Namespace @ref Magnum::Math::Geometry
- * @deprecated Use @ref Magnum/Math/Distance.h and
+ * @m_deprecated_since{2018,10} Use @ref Magnum/Math/Distance.h and
@ref Magnum/Math/Intersection.h instead.
*/
/** @namespace Magnum::Math::Geometry
- * @deprecated Use @ref Magnum::Math::Distance and
+ * @m_deprecated_since{2018,10} Use @ref Magnum::Math::Distance and
@ref Magnum::Math::Intersection namespaces instead.
*/
diff --git a/src/Magnum/Audio/Buffer.h b/src/Magnum/Audio/Buffer.h
index 1ab8fb746..e110cef6a 100644
--- a/src/Magnum/Audio/Buffer.h
+++ b/src/Magnum/Audio/Buffer.h
@@ -94,6 +94,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
/**
* @brief Buffer size in bytes
+ * @m_since{2019,10}
*
* @see @ref channels(), @ref bitDepth(), @ref sampleCount()
*/
@@ -105,6 +106,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
/**
* @brief Buffer channel count
+ * @m_since{2019,10}
*
* @see @ref size(), @ref bitDepth(), @ref sampleCount()
*/
@@ -116,6 +118,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
/**
* @brief Buffer bit depth
+ * @m_since{2019,10}
*
* @see @ref size(), @ref channels(), @ref sampleCount()
*/
@@ -127,6 +130,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
/**
* @brief Buffer sample count
+ * @m_since{2019,10}
*
* Calculated from @ref size(), @ref channels() and @ref bitDepth().
*/
@@ -135,6 +139,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
/**
* @brief Get buffer loop points
* @return A @ref std::pair containing the start and end loop points
+ * @m_since{2019,10}
*
* @requires_al_extension Extension @al_extension{SOFT,loop_points}
*/
@@ -149,6 +154,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
* @param loopStart The loop's start point in samples
* @param loopEnd The loop's end point in samples
* @return Reference to self (for method chaining)
+ * @m_since{2019,10}
*
* The buffer needs to not be attached to a source for this operation
* to succeed.
@@ -160,6 +166,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
* @brief Set buffer to loop from the beginning until a certain point
* @param loopEnd The loop's end point in samples
* @return Reference to self (for method chaining)
+ * @m_since{2019,10}
*
* Equivalent to calling @ref setLoopPoints() with @p loopStart equal
* to @cpp 0 @ce.
@@ -173,6 +180,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
* @brief Set buffer to loop from the a certain point until the end
* @param loopStart The loop's start point in samples
* @return Reference to self (for method chaining)
+ * @m_since{2019,10}
*
* Equivalent to calling @ref setLoopPoints() with @p loopEnd equal to
* @cpp INT_MAX @ce.
@@ -185,6 +193,7 @@ class MAGNUM_AUDIO_EXPORT Buffer {
/**
* @brief Resets the loop points
* @return Reference to self (for method chaining)
+ * @m_since{2019,10}
*
* Equivalent to calling @ref setLoopPoints() with @p loopStart equal
* to @cpp 0 @ce, and @p loopEnd equal to @cpp INT_MAX @ce.
diff --git a/src/Magnum/Audio/Source.h b/src/Magnum/Audio/Source.h
index cf8c34f1a..1cb0a4821 100644
--- a/src/Magnum/Audio/Source.h
+++ b/src/Magnum/Audio/Source.h
@@ -491,6 +491,7 @@ class MAGNUM_AUDIO_EXPORT Source {
/**
* @brief Source type
+ * @m_since{2019,10}
*
* @see @ref setBuffer(), @fn_al_keyword{GetSourcei} with
* @def_al{SOURCE_TYPE}
@@ -513,6 +514,7 @@ class MAGNUM_AUDIO_EXPORT Source {
* @brief Queue buffers
* @param buffers Buffers to queue
* @return Reference to self (for method chaining)
+ * @m_since{2019,10}
*
* Changes source type to @ref Type::Streaming. The buffers must be
* already filled with data.
@@ -524,6 +526,7 @@ class MAGNUM_AUDIO_EXPORT Source {
* @brief Unqueue buffers
* @param buffers Buffers to unqueue
* @return The number of unqueued buffers
+ * @m_since{2019,10}
*
* The unqueued buffers will be listed in the prefix of the array. Use
* @ref Corrade::Containers::ArrayView::prefix() to get it.
diff --git a/src/Magnum/DebugTools/ForceRenderer.h b/src/Magnum/DebugTools/ForceRenderer.h
index f4e9827f1..2a7a13725 100644
--- a/src/Magnum/DebugTools/ForceRenderer.h
+++ b/src/Magnum/DebugTools/ForceRenderer.h
@@ -75,7 +75,7 @@ class ForceRendererOptions {
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief @copybrief size()
- * @deprecated Use @ref size() instead.
+ * @m_deprecated_since{2019,10} Use @ref size() instead.
*/
constexpr CORRADE_DEPRECATED("use size() instead") Float scale() const { return _size; }
#endif
@@ -142,8 +142,8 @@ template class ForceRenderer: public SceneGraph::Drawabl
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Constructor
- * @deprecated Implicit @ref ResourceManager singleton is deprecated,
- * use @ref ForceRenderer(ResourceManager&, SceneGraph::AbstractObject&, const VectorTypeFor&, const VectorTypeFor&, ResourceKey, SceneGraph::DrawableGroup*)
+ * @m_deprecated_since{2019,10} Implicit @ref ResourceManager singleton
+ * is deprecated, use @ref ForceRenderer(ResourceManager&, SceneGraph::AbstractObject&, const VectorTypeFor&, const VectorTypeFor&, ResourceKey, SceneGraph::DrawableGroup*)
* instead.
*/
explicit CORRADE_DEPRECATED("implicit ResourceManager singleton is deprecated, use a constructor with explicit ResourceManager reference instead") ForceRenderer(SceneGraph::AbstractObject& object, const VectorTypeFor& forcePosition, const VectorTypeFor& force, ResourceKey options = ResourceKey(), SceneGraph::DrawableGroup* drawables = nullptr);
diff --git a/src/Magnum/DebugTools/ObjectRenderer.h b/src/Magnum/DebugTools/ObjectRenderer.h
index 2cc19023f..caac48b44 100644
--- a/src/Magnum/DebugTools/ObjectRenderer.h
+++ b/src/Magnum/DebugTools/ObjectRenderer.h
@@ -108,8 +108,8 @@ template class ObjectRenderer: public SceneGraph::Drawab
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Constructor
- * @deprecated Implicit @ref ResourceManager singleton is deprecated,
- * use @ref ObjectRenderer(ResourceManager&, SceneGraph::AbstractObject&, ResourceKey, SceneGraph::DrawableGroup*)
+ * @m_deprecated_since{2019,10} Implicit @ref ResourceManager singleton
+ * is deprecated, use @ref ObjectRenderer(ResourceManager&, SceneGraph::AbstractObject&, ResourceKey, SceneGraph::DrawableGroup*)
* instead.
*/
explicit CORRADE_DEPRECATED("implicit ResourceManager singleton is deprecated, use a constructor with explicit ResourceManager reference instead") ObjectRenderer(SceneGraph::AbstractObject& object, ResourceKey options = ResourceKey(), SceneGraph::DrawableGroup* drawables = nullptr);
diff --git a/src/Magnum/DebugTools/Screenshot.h b/src/Magnum/DebugTools/Screenshot.h
index 238153c3f..f2e99febe 100644
--- a/src/Magnum/DebugTools/Screenshot.h
+++ b/src/Magnum/DebugTools/Screenshot.h
@@ -43,6 +43,7 @@ namespace Magnum { namespace DebugTools {
@brief Save a screenshot to a file
@param framebuffer Framebuffer which to read
@param filename File where to save
+@m_since{2019,10}
Reads a rectangle of given @p framebuffer, defined by its
@ref GL::AbstractFramebuffer::viewport() "viewport()". Pixel format is queried
@@ -68,6 +69,7 @@ example due to unsupported pixel format). A message is printed in each case.
bool MAGNUM_DEBUGTOOLS_EXPORT screenshot(GL::AbstractFramebuffer& framebuffer, const std::string& filename);
/** @overload
+@m_since{2019,10}
Useful in case you already have an instance of the converter plugin manager in
your application or if you intend to save screenshots often, as the operation
@@ -80,6 +82,7 @@ bool MAGNUM_DEBUGTOOLS_EXPORT screenshot(PluginManager::Manager constexpr DynamicAttribute(const Attribute& attribute);
/** @brief Attribute kind */
diff --git a/src/Magnum/GL/Buffer.h b/src/Magnum/GL/Buffer.h
index d9b7610e2..87f59e4c1 100644
--- a/src/Magnum/GL/Buffer.h
+++ b/src/Magnum/GL/Buffer.h
@@ -993,7 +993,10 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
*/
Buffer& setData(Containers::ArrayView data, BufferUsage usage = BufferUsage::StaticDraw);
- /** @overload */
+ /**
+ * @overload
+ * @m_since{2019,10}
+ */
template Buffer& setData(std::initializer_list data, BufferUsage usage = BufferUsage::StaticDraw) {
return setData({data.begin(), data.size()}, usage);
}
@@ -1012,7 +1015,10 @@ class MAGNUM_GL_EXPORT Buffer: public AbstractObject {
*/
Buffer& setSubData(GLintptr offset, Containers::ArrayView data);
- /** @overload */
+ /**
+ * @overload
+ * @m_since{2019,10}
+ */
template Buffer& setSubData(GLintptr offset, std::initializer_list data) {
return setSubData(offset, {data.begin(), data.size()});
}
diff --git a/src/Magnum/GL/BufferTexture.h b/src/Magnum/GL/BufferTexture.h
index b7187e15b..04e44d390 100644
--- a/src/Magnum/GL/BufferTexture.h
+++ b/src/Magnum/GL/BufferTexture.h
@@ -160,6 +160,7 @@ class MAGNUM_GL_EXPORT BufferTexture: public AbstractTexture {
/**
* @brief Texture size
+ * @m_since{2019,10}
*
* Equivalent to size of the buffer attached to @ref setBuffer()
* divided by size of a particular @ref BufferTextureFormat. The result
diff --git a/src/Magnum/GL/Context.h b/src/Magnum/GL/Context.h
index b603a14fe..3fa63e8fa 100644
--- a/src/Magnum/GL/Context.h
+++ b/src/Magnum/GL/Context.h
@@ -417,6 +417,7 @@ class MAGNUM_GL_EXPORT Context {
* @requires_gles SwiftShader doesn't support desktop OpenGL
* contexts. Not detectable on WebGL, as browsers
* intentionally hide most of the driver information.
+ * @m_since{2019,10}
*/
SwiftShader = 1 << 6,
#endif
@@ -427,6 +428,7 @@ class MAGNUM_GL_EXPORT Context {
* ARM Mali drivers on OpenGL ES.
* @partialsupport Available only on
* @ref CORRADE_TARGET_ANDROID "Android".
+ * @m_since{2019,10}
*/
ArmMali = 1 << 7
#endif
@@ -460,6 +462,7 @@ class MAGNUM_GL_EXPORT Context {
/**
* @brief Make a context current
+ * @m_since{2019,10}
*
* To be used when you need to manage multiple OpenGL contexts. See
* @ref GL-Context-multiple for more information.
diff --git a/src/Magnum/GL/CubeMapTexture.h b/src/Magnum/GL/CubeMapTexture.h
index a6e6268e1..d9712386f 100644
--- a/src/Magnum/GL/CubeMapTexture.h
+++ b/src/Magnum/GL/CubeMapTexture.h
@@ -438,7 +438,7 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief setSrgbDecode()
- * @deprecated Use @ref setSrgbDecode() instead.
+ * @m_deprecated_since{2018,10} Use @ref setSrgbDecode() instead.
*/
CORRADE_DEPRECATED("use setSrgbDecode() instead") CubeMapTexture& setSRGBDecode(bool decode) {
return setSrgbDecode(decode);
@@ -694,6 +694,7 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
/**
* @brief Read given texture mip level and coordinate to an image view
+ * @m_since{2019,10}
*
* Compared to @ref image(CubeMapCoordinate, Int, Image2D&) the
* function reads the pixels into the memory provided by @p image,
@@ -760,6 +761,7 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
/**
* @brief Read given compressed texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedImage(CubeMapCoordinate, Int, CompressedImage2D&)
* the function reads the pixels into the memory provided by @p image,
@@ -815,6 +817,7 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
/**
* @brief Read a range of given texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref subImage(Int, const Range3Di&, Image3D&) the
* function reads the pixels into the memory provided by @p image,
@@ -875,6 +878,7 @@ class MAGNUM_GL_EXPORT CubeMapTexture: public AbstractTexture {
/**
* @brief Read a range of given compressed texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedSubImage(Int, const Range3Di&, CompressedImage3D&)
* the function reads the pixels into the memory provided by @p image,
diff --git a/src/Magnum/GL/CubeMapTextureArray.h b/src/Magnum/GL/CubeMapTextureArray.h
index 91d51a592..e127ce6df 100644
--- a/src/Magnum/GL/CubeMapTextureArray.h
+++ b/src/Magnum/GL/CubeMapTextureArray.h
@@ -390,7 +390,7 @@ class MAGNUM_GL_EXPORT CubeMapTextureArray: public AbstractTexture {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief setSrgbDecode()
- * @deprecated Use @ref setSrgbDecode() instead.
+ * @m_deprecated_since{2018,10} Use @ref setSrgbDecode() instead.
*/
CORRADE_DEPRECATED("use setSrgbDecode() instead") CubeMapTextureArray& setSRGBDecode(bool decode) {
return setSrgbDecode(decode);
@@ -489,6 +489,7 @@ class MAGNUM_GL_EXPORT CubeMapTextureArray: public AbstractTexture {
/**
* @brief Read given texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref image(Int, Image3D&) the function reads the pixels
* into the memory provided by @p image, expecting it's not
@@ -544,6 +545,7 @@ class MAGNUM_GL_EXPORT CubeMapTextureArray: public AbstractTexture {
/**
* @brief Read given compressed texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedImage(Int, CompressedImage3D&) the
* function reads the pixels into the memory provided by @p image,
@@ -601,6 +603,7 @@ class MAGNUM_GL_EXPORT CubeMapTextureArray: public AbstractTexture {
/**
* @brief Read a range of given texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref subImage(Int, const Range3Di&, Image3D&) the
* function reads the pixels into the memory provided by @p image,
@@ -663,6 +666,7 @@ class MAGNUM_GL_EXPORT CubeMapTextureArray: public AbstractTexture {
/**
* @brief Read a range of given compressed texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedSubImage(Int, const Range3Di&, CompressedImage3D&)
* the function reads the pixels into the memory provided by @p image,
diff --git a/src/Magnum/GL/PixelFormat.h b/src/Magnum/GL/PixelFormat.h
index 71b71b001..a5b1feb16 100644
--- a/src/Magnum/GL/PixelFormat.h
+++ b/src/Magnum/GL/PixelFormat.h
@@ -972,6 +972,7 @@ enum class CompressedPixelFormat: GLenum {
* @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc}
* @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc_srgb}
* @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc_srgb}
+ * @m_since{2019,10}
*/
SRGBS3tcDxt1 = GL_COMPRESSED_SRGB_S3TC_DXT1_EXT,
@@ -993,6 +994,7 @@ enum class CompressedPixelFormat: GLenum {
* @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc}
* @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc_srgb}
* @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc_srgb}
+ * @m_since{2019,10}
*/
SRGBAlphaS3tcDxt1 = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT,
@@ -1012,6 +1014,7 @@ enum class CompressedPixelFormat: GLenum {
* @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc}
* @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc_srgb}
* @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc_srgb}
+ * @m_since{2019,10}
*/
SRGBAlphaS3tcDxt3 = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT,
@@ -1031,6 +1034,7 @@ enum class CompressedPixelFormat: GLenum {
* @requires_extension Extension @gl_extension{EXT,texture_compression_s3tc}
* @requires_es_extension Extension @gl_extension{EXT,texture_compression_s3tc_srgb}
* @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_s3tc_srgb}
+ * @m_since{2019,10}
*/
SRGBAlphaS3tcDxt5 = GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT,
@@ -1685,6 +1689,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc3x3x3 = GL_COMPRESSED_RGBA_ASTC_3x3x3_OES,
@@ -1694,6 +1699,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc3x3x3 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES,
@@ -1703,6 +1709,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc4x3x3 = GL_COMPRESSED_RGBA_ASTC_4x3x3_OES,
@@ -1712,6 +1719,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc4x3x3 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES,
@@ -1721,6 +1729,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc4x4x3 = GL_COMPRESSED_RGBA_ASTC_4x4x3_OES,
@@ -1730,6 +1739,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc4x4x3 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES,
@@ -1739,6 +1749,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc4x4x4 = GL_COMPRESSED_RGBA_ASTC_4x4x4_OES,
@@ -1748,6 +1759,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc4x4x4 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES,
@@ -1757,6 +1769,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc5x4x4 = GL_COMPRESSED_RGBA_ASTC_5x4x4_OES,
@@ -1766,6 +1779,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc5x4x4 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES,
@@ -1775,6 +1789,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc5x5x4 = GL_COMPRESSED_RGBA_ASTC_5x5x4_OES,
@@ -1784,6 +1799,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc5x5x4 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES,
@@ -1793,6 +1809,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc5x5x5 = GL_COMPRESSED_RGBA_ASTC_5x5x5_OES,
@@ -1802,6 +1819,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc5x5x5 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES,
@@ -1811,6 +1829,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc6x5x5 = GL_COMPRESSED_RGBA_ASTC_6x5x5_OES,
@@ -1820,6 +1839,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc6x5x5 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES,
@@ -1829,6 +1849,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc6x6x5 = GL_COMPRESSED_RGBA_ASTC_6x6x5_OES,
@@ -1838,6 +1859,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc6x6x5 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES,
@@ -1847,6 +1869,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
RGBAAstc6x6x6 = GL_COMPRESSED_RGBA_ASTC_6x6x6_OES,
@@ -1856,6 +1879,7 @@ enum class CompressedPixelFormat: GLenum {
*
* @requires_gles30 Not defined on desktop OpenGL, WebGL or OpenGL ES 2.0.
* @requires_es_extension Extension @gl_extension{OES,texture_compression_astc}
+ * @m_since{2019,10}
*/
SRGB8Alpha8Astc6x6x6 = GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES,
#endif
@@ -1868,6 +1892,7 @@ enum class CompressedPixelFormat: GLenum {
* @requires_gles Not available on desktop OpenGL.
* @requires_es_extension Extension @gl_extension{IMG,texture_compression_pvrtc}
* @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_pvrtc}
+ * @m_since{2019,10}
*/
RGBPvrtc2bppV1 = GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG,
@@ -1878,6 +1903,7 @@ enum class CompressedPixelFormat: GLenum {
* textures.**
* @requires_gles Not available on desktop OpenGL or WebGL.
* @requires_es_extension Extension @gl_extension{EXT,pvrtc_sRGB}
+ * @m_since{2019,10}
*/
SRGBPvrtc2bppV1 = GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT,
#endif
@@ -1889,6 +1915,7 @@ enum class CompressedPixelFormat: GLenum {
* @requires_gles Not available on desktop OpenGL.
* @requires_es_extension Extension @gl_extension{IMG,texture_compression_pvrtc}
* @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_pvrtc}
+ * @m_since{2019,10}
*/
RGBAPvrtc2bppV1 = GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
@@ -1899,6 +1926,7 @@ enum class CompressedPixelFormat: GLenum {
* map array textures.**
* @requires_gles Not available on desktop OpenGL or WebGL.
* @requires_es_extension Extension @gl_extension{EXT,pvrtc_sRGB}
+ * @m_since{2019,10}
*/
SRGBAlphaPvrtc2bppV1 = GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT,
#endif
@@ -1910,6 +1938,7 @@ enum class CompressedPixelFormat: GLenum {
* @requires_gles Not available on desktop OpenGL.
* @requires_es_extension Extension @gl_extension{IMG,texture_compression_pvrtc}
* @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_pvrtc}
+ * @m_since{2019,10}
*/
RGBPvrtc4bppV1 = GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
@@ -1920,6 +1949,7 @@ enum class CompressedPixelFormat: GLenum {
* textures.**
* @requires_gles Not available on desktop OpenGL or WebGL.
* @requires_es_extension Extension @gl_extension{EXT,pvrtc_sRGB}
+ * @m_since{2019,10}
*/
SRGBPvrtc4bppV1 = GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT,
#endif
@@ -1931,6 +1961,7 @@ enum class CompressedPixelFormat: GLenum {
* @requires_gles Not available on desktop OpenGL.
* @requires_es_extension Extension @gl_extension{IMG,texture_compression_pvrtc}
* @requires_webgl_extension Extension @webgl_extension{WEBGL,compressed_texture_pvrtc}
+ * @m_since{2019,10}
*/
RGBAPvrtc4bppV1 = GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
@@ -1941,6 +1972,7 @@ enum class CompressedPixelFormat: GLenum {
* map array textures.**
* @requires_gles Not available on desktop OpenGL or WebGL.
* @requires_es_extension Extension @gl_extension{EXT,pvrtc_sRGB}
+ * @m_since{2019,10}
*/
SRGBAlphaPvrtc4bppV1 = GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT
#endif
diff --git a/src/Magnum/GL/RectangleTexture.h b/src/Magnum/GL/RectangleTexture.h
index 19d395664..578f5b219 100644
--- a/src/Magnum/GL/RectangleTexture.h
+++ b/src/Magnum/GL/RectangleTexture.h
@@ -282,7 +282,7 @@ class MAGNUM_GL_EXPORT RectangleTexture: public AbstractTexture {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief setSrgbDecode()
- * @deprecated Use @ref setSrgbDecode() instead.
+ * @m_deprecated_since{2018,10} Use @ref setSrgbDecode() instead.
*/
CORRADE_DEPRECATED("use setSrgbDecode() instead") RectangleTexture& setSRGBDecode(bool decode) {
return setSrgbDecode(decode);
@@ -373,6 +373,7 @@ class MAGNUM_GL_EXPORT RectangleTexture: public AbstractTexture {
/**
* @brief Read texture to an image view
+ * @m_since{2019,10}
*
* Compared to @ref image(Image2D&) the function reads the pixels into
* the memory provided by @p image, expecting it's not @cpp nullptr @ce
@@ -422,6 +423,7 @@ class MAGNUM_GL_EXPORT RectangleTexture: public AbstractTexture {
/**
* @brief Read compressed texture to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedImage(CompressedImage2D&) the function
* reads the pixels into the memory provided by @p image, expecting
@@ -473,6 +475,7 @@ class MAGNUM_GL_EXPORT RectangleTexture: public AbstractTexture {
/**
* @brief Read a range of given texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref subImage(const Range2Di&, Image2D&) the function
* reads the pixels into the memory provided by @p image, expecting
@@ -528,6 +531,7 @@ class MAGNUM_GL_EXPORT RectangleTexture: public AbstractTexture {
/**
* @brief Read a compressed texture range to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedSubImage(const Range2Di&, CompressedImage2D&)
* the function reads the pixels into the memory provided by @p image,
diff --git a/src/Magnum/GL/Renderer.h b/src/Magnum/GL/Renderer.h
index d0a33b315..14fb40bd7 100644
--- a/src/Magnum/GL/Renderer.h
+++ b/src/Magnum/GL/Renderer.h
@@ -183,7 +183,8 @@ class MAGNUM_GL_EXPORT Renderer {
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* Perform sRGB conversion of values written to sRGB framebuffers.
- * @deprecated Use @ref Feature::FramebufferSrgb instead.
+ * @m_deprecated_since{2018,10} Use @ref Feature::FramebufferSrgb
+ * instead.
*/
FramebufferSRGB CORRADE_DEPRECATED_ENUM("use GL::Renderer::Feature::FramebufferSrgb instead") = FramebufferSrgb,
#endif
diff --git a/src/Magnum/GL/Texture.h b/src/Magnum/GL/Texture.h
index bde332a98..4b4ebd091 100644
--- a/src/Magnum/GL/Texture.h
+++ b/src/Magnum/GL/Texture.h
@@ -585,7 +585,7 @@ template class Texture: public AbstractTexture {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief setSrgbDecode()
- * @deprecated Use @ref setSrgbDecode() instead.
+ * @m_deprecated_since{2018,10} Use @ref setSrgbDecode() instead.
*/
CORRADE_DEPRECATED("use setSrgbDecode() instead") Texture& setSRGBDecode(bool decode) {
return setSrgbDecode(decode);
@@ -791,6 +791,7 @@ template class Texture: public AbstractTexture {
/**
* @brief Read given texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref image(Int, Image&) the function reads
* the pixels into the memory provided by @p image, expecting it's not
@@ -873,6 +874,7 @@ template class Texture: public AbstractTexture {
/**
* @brief Read given compressed texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedImage(Int, CompressedImage&)
* the function reads the pixels into the memory provided by @p image,
@@ -945,6 +947,7 @@ template class Texture: public AbstractTexture {
/**
* @brief Read a range of given texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref subImage(Int, const RangeTypeFor&, Image&)
* the function reads the pixels into the memory provided by @p image,
@@ -1026,6 +1029,7 @@ template class Texture: public AbstractTexture {
/**
* @brief Read a range of given compressed texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedSubImage(Int, const RangeTypeFor&, CompressedImage&)
* the function reads the pixels into the memory provided by @p image,
diff --git a/src/Magnum/GL/TextureArray.h b/src/Magnum/GL/TextureArray.h
index 029955c71..5b5dafcfa 100644
--- a/src/Magnum/GL/TextureArray.h
+++ b/src/Magnum/GL/TextureArray.h
@@ -417,7 +417,7 @@ template class TextureArray: public AbstractTexture {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief setSrgbDecode()
- * @deprecated Use @ref setSrgbDecode() instead.
+ * @m_deprecated_since{2018,10} Use @ref setSrgbDecode() instead.
*/
CORRADE_DEPRECATED("use setSrgbDecode() instead") TextureArray& setSRGBDecode(bool decode) {
return setSrgbDecode(decode);
@@ -526,6 +526,7 @@ template class TextureArray: public AbstractTexture {
/**
* @brief Read given texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref image(Int, Image&) the function reads
* the pixels into the memory provided by @p image, expecting it's not
@@ -581,6 +582,7 @@ template class TextureArray: public AbstractTexture {
/**
* @brief Read given compressed texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedImage(Int, CompressedImage&)
* the function reads the pixels into the memory provided by @p image,
@@ -638,6 +640,7 @@ template class TextureArray: public AbstractTexture {
/**
* @brief Read a range of given texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref subImage(Int, const RangeTypeFor&, Image&)
* the function reads the pixels into the memory provided by @p image,
@@ -700,6 +703,7 @@ template class TextureArray: public AbstractTexture {
/**
* @brief Read a range of given compressed texture mip level to an image view
+ * @m_since{2019,10}
*
* Compared to @ref compressedSubImage(Int, const RangeTypeFor&, CompressedImage&)
* the function reads the pixels into the memory provided by @p image,
diff --git a/src/Magnum/GL/TextureFormat.h b/src/Magnum/GL/TextureFormat.h
index a8e455a5b..618d2f7e5 100644
--- a/src/Magnum/GL/TextureFormat.h
+++ b/src/Magnum/GL/TextureFormat.h
@@ -203,6 +203,7 @@ enum class TextureFormat: GLenum {
* @requires_gles One- and two-component sRGB texture formats are not
* available in WebGL, use @ref TextureFormat::SRGB8 or
* @ref TextureFormat::SRGB8Alpha8
+ * @m_since{2019,10}
*/
SR8 = GL_SR8_EXT,
@@ -215,6 +216,7 @@ enum class TextureFormat: GLenum {
* @ref TextureFormat::SRGB8Alpha8 instead. Only
* @ref TextureFormat::SR8, @ref TextureFormat::SRGB8 or
* @ref TextureFormat::SRGB8Alpha8 is available in desktop OpenGL.
+ * @m_since{2019,10}
*/
SRG8 = GL_SRG8_EXT,
#endif
@@ -884,8 +886,8 @@ enum class TextureFormat: GLenum {
#ifdef MAGNUM_BUILD_DEPRECATED
/** RGB, normalized unsigned, red and green component 3bit, blue 2bit.
- * @deprecated This one had a misleading typo in the name, use
- * @ref TextureFormat::R3G3B2 instead.
+ * @m_deprecated_since{2019,10} This one had a misleading typo in the name,
+ * use @ref TextureFormat::R3G3B2 instead.
*/
R3B3G2 CORRADE_DEPRECATED_ENUM("use R3G3B2 instead") = R3G3B2,
#endif
@@ -1040,6 +1042,7 @@ enum class TextureFormat: GLenum {
* @requires_es_extension Extension @gl_extension{APPLE,texture_format_BGRA8888}
* or @gl_extension{EXT,texture_format_BGRA8888}
* @requires_gles Only RGBA component ordering is available in WebGL.
+ * @m_since{2019,10}
*/
BGRA = GL_BGRA_EXT,
@@ -1051,6 +1054,7 @@ enum class TextureFormat: GLenum {
* @requires_es_extension Extension @gl_extension{APPLE,texture_format_BGRA8888}. There are no signed
* normalized, integral or floating-point types with BGRA ordering.
* @requires_gles Only RGBA component ordering is available in WebGL.
+ * @m_since{2019,10}
*/
BGRA8 = GL_BGRA8_EXT,
#endif
@@ -2464,6 +2468,7 @@ enum class TextureFormat: GLenum {
/**
@brief Check availability of a sized generic texture format
+@m_since{2019,10}
Some OpenGL targets don't support sized texture formats at all (OpenGL ES 2.0
and WebGL 1.0), some targets miss some variants (for example OpenGL ES doesn't
@@ -2490,6 +2495,7 @@ MAGNUM_GL_EXPORT bool hasTextureFormat(Magnum::PixelFormat format);
/**
@brief Convert a generic pixel format to sized OpenGL texture format
+@m_since{2019,10}
Not all sized texture formats may be available on all targets and this function
expects that given format is available on the target. See @ref hasTextureFormat()
@@ -2510,6 +2516,7 @@ MAGNUM_GL_EXPORT TextureFormat textureFormat(Magnum::PixelFormat format);
/**
@brief Check availability of a generic compressed texture format
+@m_since{2019,10}
Some OpenGL targets don't support all generic pixel formats (for example PVRTC
compression might not be available on desktop OpenGL). Returns @cpp false @ce
@@ -2532,6 +2539,7 @@ MAGNUM_GL_EXPORT bool hasTextureFormat(Magnum::CompressedPixelFormat format);
/**
@brief Convert generic compressed pixel format to OpenGL texture format
+@m_since{2019,10}
In case @ref isCompressedPixelFormatImplementationSpecific() returns
@cpp false @ce for @p format, maps it to a corresponding OpenGL pixel format.
@@ -2549,7 +2557,10 @@ to query availability of given format.
*/
MAGNUM_GL_EXPORT TextureFormat textureFormat(Magnum::CompressedPixelFormat format);
-/** @debugoperatorenum{TextureFormat} */
+/**
+@debugoperatorenum{TextureFormat}
+@m_since{2019,10}
+*/
MAGNUM_GL_EXPORT Debug& operator<<(Debug& debug, TextureFormat value);
}}
diff --git a/src/Magnum/Image.h b/src/Magnum/Image.h
index 66c24124d..a334c0d96 100644
--- a/src/Magnum/Image.h
+++ b/src/Magnum/Image.h
@@ -375,6 +375,7 @@ template class Image {
/**
* @brief Image data from a r-value
+ * @m_since{2019,10}
*
* Unlike @ref data(), which returns a view, this is equivalent to
* @ref release() to avoid a dangling view when the temporary instance
@@ -384,6 +385,7 @@ template class Image {
Containers::Array data() && { return release(); }
/** @overload
+ * @m_since{2019,10}
* @todo what to do here?!
*/
Containers::Array data() const && = delete;
@@ -391,8 +393,8 @@ template class Image {
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Image data in a particular type
- * @deprecated Use non-templated @ref data() together with
- * @ref Corrade::Containers::arrayCast() instead for properly
+ * @m_deprecated_since{2019,10} Use non-templated @ref data() together
+ * with @ref Corrade::Containers::arrayCast() instead for properly
* bounds-checked type conversion.
*/
template CORRADE_DEPRECATED("use data() together with Containers::arrayCast() instead") T* data() {
@@ -401,8 +403,8 @@ template class Image {
/**
* @brief Image data in a particular type
- * @deprecated Use non-templated @ref data() together with
- * @ref Corrade::Containers::arrayCast() instead for properly
+ * @m_deprecated_since{2019,10} Use non-templated @ref data() together
+ * with @ref Corrade::Containers::arrayCast() instead for properly
* bounds-checked type conversion.
*/
template CORRADE_DEPRECATED("use data() together with Containers::arrayCast() instead") const T* data() const {
@@ -412,6 +414,7 @@ template class Image {
/**
* @brief View on pixel data
+ * @m_since{2019,10}
*
* Provides direct and easy-to-use access to image pixels. See
* @ref Image-pixel-views for more information.
@@ -421,6 +424,7 @@ template class Image {
/**
* @brief View on pixel data with a concrete pixel type
+ * @m_since{2019,10}
*
* Compared to non-templated @ref pixels() in addition casts the pixel
* data to a specified type. The user is responsible for choosing
@@ -433,7 +437,10 @@ template class Image {
return Containers::arrayCast(pixels());
}
- /** @overload */
+ /**
+ * @overload
+ * @m_since{2019,10}
+ */
template Containers::StridedArrayView pixels() const {
return Containers::arrayCast(pixels());
}
@@ -628,6 +635,7 @@ template class CompressedImage {
/**
* @brief Raw data from a r-value
+ * @m_since{2019,10}
*
* Unlike @ref data(), which returns a view, this is equivalent to
* @ref release() to avoid a dangling view when the temporary instance
@@ -637,6 +645,7 @@ template class CompressedImage {
Containers::Array data() && { return release(); }
/** @overload
+ * @m_since{2019,10}
* @todo what to do here?!
*/
Containers::Array data() const && = delete;
@@ -644,8 +653,8 @@ template class CompressedImage {
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Image data in a particular type
- * @deprecated Use non-templated @ref data() together with
- * @ref Corrade::Containers::arrayCast() instead for properly
+ * @m_deprecated_since{2019,10} Use non-templated @ref data() together
+ * with @ref Corrade::Containers::arrayCast() instead for properly
* bounds-checked type conversion.
*/
template CORRADE_DEPRECATED("use data() together with Containers::arrayCast() instead") T* data() {
@@ -654,8 +663,8 @@ template class CompressedImage {
/**
* @brief Image data in a particular type
- * @deprecated Use non-templated @ref data() together with
- * @ref Corrade::Containers::arrayCast() instead for properly
+ * @m_deprecated_since{2019,10} Use non-templated @ref data() together
+ * with @ref Corrade::Containers::arrayCast() instead for properly
* bounds-checked type conversion.
*/
template CORRADE_DEPRECATED("use data() together with Containers::arrayCast() instead") const T* data() const {
diff --git a/src/Magnum/ImageView.h b/src/Magnum/ImageView.h
index 2ebaf4841..701f768b1 100644
--- a/src/Magnum/ImageView.h
+++ b/src/Magnum/ImageView.h
@@ -355,10 +355,16 @@ template class ImageView {
*/
template explicit ImageView(U format, const VectorTypeFor& size) noexcept: ImageView{{}, format, size} {}
- /** @brief Construct from a view of lower dimension count */
+ /**
+ * @brief Construct from a view of lower dimension count
+ * @m_since{2019,10}
+ */
template::type> /*implicit*/ ImageView(const ImageView& other) noexcept;
- /** @brief Convert a mutable view to a const one */
+ /**
+ * @brief Convert a mutable view to a const one
+ * @m_since{2019,10}
+ */
template::value && !std::is_const::value>::type> /*implicit*/ ImageView(const ImageView& other) noexcept;
/** @brief Storage of pixel data */
@@ -412,8 +418,8 @@ template class ImageView {
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Image data in a particular type
- * @deprecated Use non-templated @ref data() together with
- * @ref Corrade::Containers::arrayCast() instead for properly
+ * @m_deprecated_since{2019,10} Use non-templated @ref data() together
+ * with @ref Corrade::Containers::arrayCast() instead for properly
* bounds-checked type conversion.
*/
template CORRADE_DEPRECATED("use data() together with Containers::arrayCast() instead") const U* data() const {
@@ -431,6 +437,7 @@ template class ImageView {
/**
* @brief View on pixel data
+ * @m_since{2019,10}
*
* Provides direct and easy-to-use access to image pixels. See
* @ref Image-pixel-views for more information. If the view is empty
@@ -441,6 +448,7 @@ template class ImageView {
/**
* @brief View on pixel data with a concrete pixel type
+ * @m_since{2019,10}
*
* Compared to non-templated @ref pixels() in addition casts the pixel
* data to a specified type. The user is responsible for choosing
@@ -470,6 +478,7 @@ template class ImageView {
/**
@brief Const image view
+@m_since{2019,10}
@see @ref ImageView1D, @ref ImageView2D, @ref ImageView3D,
@ref BasicMutableImageView
@@ -501,6 +510,7 @@ typedef BasicImageView<3> ImageView3D;
/**
@brief Mutable image view
+@m_since{2019,10}
@see @ref MutableImageView1D, @ref MutableImageView2D, @ref MutableImageView3D,
@ref BasicImageView
@@ -511,6 +521,7 @@ template using BasicMutableImageView = ImageView MutableImageView1D;
/**
@brief Two-dimensional mutable image view
+@m_since{2019,10}
@see @ref ImageView2D, @ref MutableCompressedImageView2D, @ref ImageView
*/
@@ -525,6 +537,7 @@ typedef BasicMutableImageView<2> MutableImageView2D;
/**
@brief Three-dimensional mutable image view
+@m_since{2019,10}
@see @ref ImageView3D, @ref MutableCompressedImageView3D, @ref ImageView
*/
@@ -724,10 +737,16 @@ template class CompressedImageView {
*/
template explicit CompressedImageView(U format, const VectorTypeFor& size) noexcept: CompressedImageView{{}, format, size} {}
- /** @brief Construct from a view of lower dimension count */
+ /**
+ * @brief Construct from a view of lower dimension count
+ * @m_since{2019,10}
+ */
template::type> /*implicit*/ CompressedImageView(const CompressedImageView& other) noexcept;
- /** @brief Convert a mutable view to a const one */
+ /**
+ * @brief Convert a mutable view to a const one
+ * @m_since{2019,10}
+ */
template::value && !std::is_const::value>::type> /*implicit*/ CompressedImageView(const CompressedImageView& other) noexcept;
/** @brief Storage of compressed pixel data */
@@ -761,8 +780,8 @@ template class CompressedImageView {
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Image data in a particular type
- * @deprecated Use non-templated @ref data() together with
- * @ref Corrade::Containers::arrayCast() instead for properly
+ * @m_deprecated_since{2019,10} Use non-templated @ref data() together
+ * with @ref Corrade::Containers::arrayCast() instead for properly
* bounds-checked type conversion.
*/
template CORRADE_DEPRECATED("use data() together with Containers::arrayCast() instead") const U* data() const {
@@ -797,6 +816,7 @@ template class CompressedImageView {
/**
@brief Const compressed image view
+@m_since{2019,10}
@see @ref CompressedImageView1D, @ref CompressedImageView2D,
@ref CompressedImageView3D, @ref BasicMutableImageView
@@ -831,6 +851,7 @@ typedef BasicCompressedImageView<3> CompressedImageView3D;
/**
@brief Mutable compressed image view
+@m_since{2019,10}
@see @ref MutableCompressedImageView1D, @ref MutableCompressedImageView2D,
@ref MutableCompressedImageView3D, @ref BasicCompressedImageView
@@ -841,6 +862,7 @@ template using BasicMutableCompressedImageView = Compres
/**
@brief One-dimensional mutable compressed image view
+@m_since{2019,10}
@see @ref CompressedImageView1D, @ref MutableImageView1D,
@ref CompressedImageView
@@ -849,6 +871,7 @@ typedef BasicMutableCompressedImageView<1> MutableCompressedImageView1D;
/**
@brief Two-dimensional mutable compressed image view
+@m_since{2019,10}
@see @ref CompressedImageView2D, @ref MutableImageView2D,
@ref CompressedImageView
@@ -857,6 +880,7 @@ typedef BasicMutableCompressedImageView<2> MutableCompressedImageView2D;
/**
@brief Three-dimensional mutable compressed image view
+@m_since{2019,10}
@see @ref CompressedImageView3D, @ref MutableImageView3D,
@ref CompressedImageView
diff --git a/src/Magnum/Magnum.h b/src/Magnum/Magnum.h
index 5612dca26..b815b83af 100644
--- a/src/Magnum/Magnum.h
+++ b/src/Magnum/Magnum.h
@@ -68,7 +68,7 @@ Defined if built as static libraries. Default are shared libraries.
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief Multi-threaded build
- * @deprecated Use @ref CORRADE_BUILD_MULTITHREADED instead.
+ * @m_deprecated_since{2019,10} Use @ref CORRADE_BUILD_MULTITHREADED instead.
*/
#define MAGNUM_BUILD_MULTITHREADED
#undef MAGNUM_BUILD_MULTITHREADED
@@ -220,6 +220,7 @@ typedef Math::Half Half;
/**
@brief Two-component bool vector
+@m_since{2019,10}
Equivalent to GLSL @glsl bvec2 @ce.
@m_keyword{bvec2,GLSL bvec2,}
@@ -228,6 +229,7 @@ typedef Math::BoolVector<2> BoolVector2;
/**
@brief Three-component bool vector
+@m_since{2019,10}
Equivalent to GLSL @glsl bvec3 @ce.
@m_keyword{bvec3,GLSL bvec3,}
@@ -236,6 +238,7 @@ typedef Math::BoolVector<3> BoolVector3;
/**
@brief Four-component bool vector
+@m_since{2019,10}
Equivalent to GLSL @glsl bvec4 @ce.
@m_keyword{bvec4,GLSL bvec4,}
diff --git a/src/Magnum/Math/BoolVector.h b/src/Magnum/Math/BoolVector.h
index 26af20b51..152fe2e9e 100644
--- a/src/Magnum/Math/BoolVector.h
+++ b/src/Magnum/Math/BoolVector.h
@@ -206,6 +206,7 @@ template class BoolVector {
/**
* @brief Component-wise boolean negation
+ * @m_since{2019,10}
*
* Equivalent to @ref operator~(). See @ref Math-BoolVector-boolean for
* more information.
@@ -235,6 +236,7 @@ template class BoolVector {
/**
* @brief Component-wise boolean AND
+ * @m_since{2019,10}
*
* Equivalent to @ref operator&(). See @ref Math-BoolVector-boolean for
* more information.
@@ -266,8 +268,9 @@ template class BoolVector {
/**
* @brief Component-wise boolean OR
+ * @m_since{2019,10}
*
- * Equivalent to @ref operator&(). See @ref Math-BoolVector-boolean for
+ * Equivalent to @ref operator|(). See @ref Math-BoolVector-boolean for
* more information.
*/
BoolVector operator||(const BoolVector& other) const {
diff --git a/src/Magnum/Math/Color.h b/src/Magnum/Math/Color.h
index c617d91f1..e1c332ac6 100644
--- a/src/Magnum/Math/Color.h
+++ b/src/Magnum/Math/Color.h
@@ -254,7 +254,7 @@ template class Color3: public Vector3 {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief ColorHsv
- * @deprecated Use @ref ColorHsv instead.
+ * @m_deprecated_since{2019,10} Use @ref ColorHsv instead.
*/
typedef CORRADE_DEPRECATED("use ColorHsv instead") std::tuple, FloatingPointType, FloatingPointType> Hsv;
#endif
@@ -338,7 +338,8 @@ template class Color3: public Vector3 {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief fromHsv(const ColorHsv&)
- * @deprecated Use @ref fromHsv(const ColorHsv&) instead.
+ * @m_deprecated_since{2019,10} Use @ref fromHsv(const ColorHsv&)
+ * instead.
*/
static CORRADE_DEPRECATED("use fromHsv(const ColorHsv&) instead") Color3 fromHsv(Deg hue, FloatingPointType saturation, FloatingPointType value) {
return fromHsv({hue, saturation, value});
@@ -613,7 +614,7 @@ class Color4: public Vector4 {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief ColorHsv
- * @deprecated Use @ref ColorHsv instead.
+ * @m_deprecated_since{2019,10} Use @ref ColorHsv instead.
*/
typedef CORRADE_DEPRECATED("use ColorHsv instead") std::tuple, FloatingPointType, FloatingPointType> Hsv;
#endif
@@ -694,7 +695,8 @@ class Color4: public Vector4 {
#ifdef MAGNUM_BUILD_DEPRECATED
/** @brief @copybrief fromHsv(const ColorHsv&, T)
- * @deprecated Use @ref fromHsv(const ColorHsv&, T) instead.
+ * @m_deprecated_since{2019,10} Use @ref fromHsv(const ColorHsv&, T)
+ * instead.
*/
static CORRADE_DEPRECATED("use fromHsv(const ColorHsv&, T) instead") Color4 fromHsv(Deg hue, FloatingPointType saturation, FloatingPointType value, T alpha = Implementation::fullChannel()) {
return fromHsv({hue, saturation, value}, alpha);
@@ -1023,6 +1025,7 @@ template inline Vector3 xyzToXyY(const Vector3& xyz) {
/**
@brief HSV color
+@m_since{2019,10}
Storage-only type with just the usual constructors and (non-)equality
comparison.
@@ -1061,14 +1064,16 @@ template struct ColorHsv {
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Construct from @ref Color3::Hsv
- * @deprecated Use @ref ColorHsv instead of @ref Color3::Hsv
+ * @m_deprecated_since{2019,10} Use @ref ColorHsv instead of
+ * @ref Color3::Hsv
*/
constexpr CORRADE_DEPRECATED("use ColorHsv instead of Color3::Hsv") /*implicit*/ ColorHsv(std::tuple, T, T> hsv) noexcept:
hue{std::get<0>(hsv)}, saturation{std::get<1>(hsv)}, value{std::get<2>(hsv)} {}
/**
* @brief Convert to @ref Color3::Hsv
- * @deprecated Use @ref ColorHsv instead of @ref Color3::Hsv
+ * @m_deprecated_since{2019,10} Use @ref ColorHsv instead of
+ * @ref Color3::Hsv
*/
constexpr CORRADE_DEPRECATED("use ColorHsv instead of Color3::Hsv") /*implicit*/ operator std::tuple, T, T>() const {
return std::make_tuple(hue, saturation, value);
diff --git a/src/Magnum/Math/ConfigurationValue.h b/src/Magnum/Math/ConfigurationValue.h
index 44949978f..00ae51cbd 100644
--- a/src/Magnum/Math/ConfigurationValue.h
+++ b/src/Magnum/Math/ConfigurationValue.h
@@ -27,6 +27,7 @@
/** @file
* @brief Configuration value parsers and writers for @ref Magnum::Math types
+ * @m_since{2019,10}
*/
#include
diff --git a/src/Magnum/Math/Frustum.h b/src/Magnum/Math/Frustum.h
index a3e73cdc9..a21990ecb 100644
--- a/src/Magnum/Math/Frustum.h
+++ b/src/Magnum/Math/Frustum.h
@@ -135,8 +135,8 @@ template class Frustum {
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Frustum planes
- * @deprecated Use @ref operator[](std::size_t) const, @ref data() or
- * @ref begin() / @ref end() instead.
+ * @m_deprecated_since{2019,10} Use @ref operator[](std::size_t) const,
+ * @ref data() or @ref begin() / @ref end() instead.
*/
constexpr CORRADE_DEPRECATED("use operator[](), data() or begin() / end() instead") Corrade::Containers::StaticArrayView<6, const Vector4> planes() const {
/* GCC 4.8 needs explicit construction */
@@ -156,6 +156,7 @@ template class Frustum {
/**
* @brief First plane
+ * @m_since{2019,10}
*
* Together with @ref end() useful for range access, for example here
* to check for a point/frustum intersection, similarly to
@@ -164,13 +165,36 @@ template class Frustum {
* @snippet MagnumMath.cpp Frustum-range
*/
Vector4* begin() { return _data; }
- constexpr const Vector4* begin() const { return _data; } /**< @overload */
- constexpr const Vector4* cbegin() const { return _data; } /**< @overload */
- /** @brief (One after) last plane */
+ /**
+ * @overload
+ * @m_since{2019,10}
+ */
+ constexpr const Vector4* begin() const { return _data; }
+
+ /**
+ * @overload
+ * @m_since{2019,10}
+ */
+ constexpr const Vector4* cbegin() const { return _data; }
+
+ /**
+ * @brief (One after) last plane
+ * @m_since{2019,10}
+ */
Vector4* end() { return _data + 6; }
- constexpr const Vector4* end() const { return _data + 6; } /**< @overload */
- constexpr const Vector4* cend() const { return _data + 6; } /**< @overload */
+
+ /**
+ * @overload
+ * @m_since{2019,10}
+ */
+ constexpr const Vector4* end() const { return _data + 6; }
+
+ /**
+ * @overload
+ * @m_since{2019,10}
+ */
+ constexpr const Vector4* cend() const { return _data + 6; }
/** @brief Left plane */
constexpr Vector4 left() const { return _data[0]; }
diff --git a/src/Magnum/Math/Functions.h b/src/Magnum/Math/Functions.h
index f8605cfe3..96a55532c 100644
--- a/src/Magnum/Math/Functions.h
+++ b/src/Magnum/Math/Functions.h
@@ -186,6 +186,7 @@ the operations component-wise.
/**
@brief If given number is a positive or negative infinity
+@m_since{2019,10}
@see @ref isNan(), @ref Constants::inf(),
@ref isInf(Corrade::Containers::StridedArrayView1D)
@@ -194,7 +195,10 @@ template inline typename std::enable_if::value, bool>::type
return std::isinf(UnderlyingTypeOf(value));
}
-/** @overload */
+/**
+@overload
+@m_since{2019,10}
+*/
template inline BoolVector isInf(const Vector& value) {
BoolVector out;
for(std::size_t i = 0; i != size; ++i)
@@ -204,6 +208,7 @@ template inline BoolVector isInf(const Vector typename std::enable_if::value, bool>::type isNan(T value);
-/** @overload */
+/**
+@overload
+@m_since{2019,10}
+*/
template inline BoolVector isNan(const Vector& value) {
BoolVector out;
for(std::size_t i = 0; i != size; ++i)
diff --git a/src/Magnum/Math/Geometry/Distance.h b/src/Magnum/Math/Geometry/Distance.h
index 3129d9fc8..a99135745 100644
--- a/src/Magnum/Math/Geometry/Distance.h
+++ b/src/Magnum/Math/Geometry/Distance.h
@@ -27,7 +27,7 @@
*/
/** @file
- * @deprecated Use @ref Magnum/Math/Distance.h instead.
+ * @m_deprecated_since{2018,10} Use @ref Magnum/Math/Distance.h instead.
*/
#include "Magnum/configure.h"
@@ -38,13 +38,13 @@
CORRADE_DEPRECATED_FILE("use Magnum/Math/Distance.h instead")
/** @namespace Magnum::Math::Geometry::Distance
- * @deprecated Use @ref Magnum::Math::Distance instead.
+ * @m_deprecated_since{2018,10} Use @ref Magnum::Math::Distance instead.
*/
namespace Magnum { namespace Math { namespace Geometry { namespace Distance {
/** @brief @copybrief Math::Distance::linePointSquared(const Vector2&, const Vector2&, const Vector2&)
- * @deprecated Use @ref Math::Distance::linePointSquared(const Vector2&, const Vector2&, const Vector2&)
+ * @m_deprecated_since{2018,10} Use @ref Math::Distance::linePointSquared(const Vector2&, const Vector2&, const Vector2&)
* instead.
*/
template inline CORRADE_DEPRECATED("use Math::Distance::linePointSquared() instead") T linePointSquared(const Vector2& a, const Vector2& b, const Vector2& point) {
@@ -52,7 +52,7 @@ template inline CORRADE_DEPRECATED("use Math::Distance::linePointSquare
}
/** @brief @copybrief Math::Distance::linePoint(const Vector2&, const Vector2&, const Vector2&)
- * @deprecated Use @ref Math::Distance::linePoint(const Vector2&, const Vector2&, const Vector2&)
+ * @m_deprecated_since{2018,10} Use @ref Math::Distance::linePoint(const Vector2&, const Vector2&, const Vector2&)
* instead.
*/
template inline CORRADE_DEPRECATED("use Math::Distance::linePoint() instead") T linePoint(const Vector2& a, const Vector2& b, const Vector2& point) {
@@ -60,7 +60,7 @@ template inline CORRADE_DEPRECATED("use Math::Distance::linePoint() ins
}
/** @brief @copybrief Math::Distance::linePointSquared(const Vector3&, const Vector3&, const Vector3&)
- * @deprecated Use @ref Math::Distance::linePointSquared(const Vector3&, const Vector3&, const Vector3&)
+ * @m_deprecated_since{2018,10} Use @ref Math::Distance::linePointSquared(const Vector3&, const Vector3&, const Vector3&)
* instead.
*/
template inline CORRADE_DEPRECATED("use Math::Distance::linePointSquared() instead") T linePointSquared(const Vector3& a, const Vector3& b, const Vector3& point) {
@@ -68,7 +68,7 @@ template inline CORRADE_DEPRECATED("use Math::Distance::linePointSquare
}
/** @brief @copybrief Math::Distance::linePoint(const Vector3&, const Vector3&, const Vector3&)
- * @deprecated Use @ref Math::Distance::linePoint(const Vector3&, const Vector3&, const Vector3&)
+ * @m_deprecated_since{2018,10} Use @ref Math::Distance::linePoint(const Vector3&, const Vector3&, const Vector3&)
* instead.
*/
template inline CORRADE_DEPRECATED("use Math::Distance::linePoint() instead") T linePoint(const Vector3& a, const Vector3& b, const Vector3& point) {
@@ -76,7 +76,7 @@ template inline CORRADE_DEPRECATED("use Math::Distance::linePoint() ins
}
/** @brief @copybrief Math::Distance::lineSegmentPointSquared(const Vector2&, const Vector2&, const Vector2&)
- * @deprecated Use @ref Math::Distance::lineSegmentPointSquared(const Vector2&, const Vector2&, const Vector2&)
+ * @m_deprecated_since{2018,10} Use @ref Math::Distance::lineSegmentPointSquared(const Vector2&, const Vector2&, const Vector2&)
* instead.
*/
template inline CORRADE_DEPRECATED("use Math::Distance::lineSegmentPointSquared() instead") T lineSegmentPointSquared(const Vector2& a, const Vector2& b, const Vector2& point) {
@@ -84,7 +84,7 @@ template inline CORRADE_DEPRECATED("use Math::Distance::lineSegmentPoin
}
/** @brief @copybrief Math::Distance::lineSegmentPoint(const Vector2&, const Vector2&, const Vector2&)
- * @deprecated Use @ref Math::Distance::lineSegmentPoint(const Vector2&, const Vector2&, const Vector2&)
+ * @m_deprecated_since{2018,10} Use @ref Math::Distance::lineSegmentPoint(const Vector2&, const Vector2&, const Vector2&)
* instead.
*/
template inline CORRADE_DEPRECATED("use Math::Distance::lineSegmentPoint() instead") T lineSegmentPoint(const Vector2& a, const Vector2& b, const Vector2& point) {
@@ -92,7 +92,7 @@ template inline CORRADE_DEPRECATED("use Math::Distance::lineSegmentPoin
}
/** @brief @copybrief Math::Distance::lineSegmentPointSquared(const Vector3&, const Vector3&, const Vector3&)
- * @deprecated Use @ref Math::Distance::lineSegmentPointSquared(const Vector3&, const Vector3