Browse Source

Text: add a DistanceFieldGlyphCache*GL::radius() getter.

Without it's rather impossible to reason about properties of the
generated distance field for consistent rendering.
pull/674/head
Vladimír Vondruš 1 year ago
parent
commit
bc3cb8a873
  1. 8
      src/Magnum/Text/DistanceFieldGlyphCacheGL.cpp
  2. 9
      src/Magnum/Text/DistanceFieldGlyphCacheGL.h
  3. 6
      src/Magnum/Text/Test/DistanceFieldGlyphCacheGLTest.cpp

8
src/Magnum/Text/DistanceFieldGlyphCacheGL.cpp

@ -88,6 +88,10 @@ DistanceFieldGlyphCacheGL::DistanceFieldGlyphCacheGL(const Vector2i& size, const
DistanceFieldGlyphCacheGL::DistanceFieldGlyphCacheGL(NoCreateT) noexcept: GlyphCacheGL{NoCreate} {}
UnsignedInt DistanceFieldGlyphCacheGL::radius() const {
return static_cast<const State&>(*_state).distanceField.radius();
}
#ifdef MAGNUM_BUILD_DEPRECATED
Vector2i DistanceFieldGlyphCacheGL::distanceFieldTextureSize() const {
return processedSize().xy();
@ -238,6 +242,10 @@ DistanceFieldGlyphCacheArrayGL::DistanceFieldGlyphCacheArrayGL(const Vector3i& s
DistanceFieldGlyphCacheArrayGL::DistanceFieldGlyphCacheArrayGL(NoCreateT) noexcept: GlyphCacheArrayGL{NoCreate} {}
UnsignedInt DistanceFieldGlyphCacheArrayGL::radius() const {
return static_cast<const State&>(*_state).distanceField.radius();
}
GlyphCacheFeatures DistanceFieldGlyphCacheArrayGL::doFeatures() const {
return GlyphCacheFeature::ImageProcessing
#ifndef MAGNUM_TARGET_GLES

9
src/Magnum/Text/DistanceFieldGlyphCacheGL.h

@ -147,6 +147,12 @@ class MAGNUM_TEXT_EXPORT DistanceFieldGlyphCacheGL: public GlyphCacheGL {
*/
explicit DistanceFieldGlyphCacheGL(NoCreateT) noexcept;
/**
* @brief Distance field calculation radius
* @m_since_latest
*/
UnsignedInt radius() const;
#ifdef MAGNUM_BUILD_DEPRECATED
/**
* @brief Distance field texture size
@ -247,6 +253,9 @@ class MAGNUM_TEXT_EXPORT DistanceFieldGlyphCacheArrayGL: public GlyphCacheArrayG
*/
explicit DistanceFieldGlyphCacheArrayGL(NoCreateT) noexcept;
/** @brief Distance field calculation radius */
UnsignedInt radius() const;
private:
struct State;

6
src/Magnum/Text/Test/DistanceFieldGlyphCacheGLTest.cpp

@ -252,7 +252,7 @@ DistanceFieldGlyphCacheGLTest::DistanceFieldGlyphCacheGLTest() {
}
void DistanceFieldGlyphCacheGLTest::construct() {
DistanceFieldGlyphCacheGL cache{{256, 512}, {64, 128}, 16};
DistanceFieldGlyphCacheGL cache{{256, 512}, {64, 128}, 13};
MAGNUM_VERIFY_NO_GL_ERROR();
#ifndef MAGNUM_TARGET_GLES
@ -284,6 +284,7 @@ void DistanceFieldGlyphCacheGLTest::construct() {
#ifndef MAGNUM_TARGET_GLES
CORRADE_COMPARE(cache.texture().imageSize(0), (Vector2i{64, 128}));
#endif
CORRADE_COMPARE(cache.radius(), 13);
}
#ifndef MAGNUM_TARGET_GLES2
@ -293,7 +294,7 @@ void DistanceFieldGlyphCacheGLTest::constructArray() {
CORRADE_SKIP(GL::Extensions::EXT::texture_array::string() << "is not supported.");
#endif
DistanceFieldGlyphCacheArrayGL cache{{256, 512, 7}, {64, 128}, 16};
DistanceFieldGlyphCacheArrayGL cache{{256, 512, 7}, {64, 128}, 17};
MAGNUM_VERIFY_NO_GL_ERROR();
#ifndef MAGNUM_TARGET_GLES
@ -309,6 +310,7 @@ void DistanceFieldGlyphCacheGLTest::constructArray() {
#ifndef MAGNUM_TARGET_GLES
CORRADE_COMPARE(cache.texture().imageSize(0), (Vector3i{64, 128, 7}));
#endif
CORRADE_COMPARE(cache.radius(), 17);
}
#endif

Loading…
Cancel
Save