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} {} DistanceFieldGlyphCacheGL::DistanceFieldGlyphCacheGL(NoCreateT) noexcept: GlyphCacheGL{NoCreate} {}
UnsignedInt DistanceFieldGlyphCacheGL::radius() const {
return static_cast<const State&>(*_state).distanceField.radius();
}
#ifdef MAGNUM_BUILD_DEPRECATED #ifdef MAGNUM_BUILD_DEPRECATED
Vector2i DistanceFieldGlyphCacheGL::distanceFieldTextureSize() const { Vector2i DistanceFieldGlyphCacheGL::distanceFieldTextureSize() const {
return processedSize().xy(); return processedSize().xy();
@ -238,6 +242,10 @@ DistanceFieldGlyphCacheArrayGL::DistanceFieldGlyphCacheArrayGL(const Vector3i& s
DistanceFieldGlyphCacheArrayGL::DistanceFieldGlyphCacheArrayGL(NoCreateT) noexcept: GlyphCacheArrayGL{NoCreate} {} DistanceFieldGlyphCacheArrayGL::DistanceFieldGlyphCacheArrayGL(NoCreateT) noexcept: GlyphCacheArrayGL{NoCreate} {}
UnsignedInt DistanceFieldGlyphCacheArrayGL::radius() const {
return static_cast<const State&>(*_state).distanceField.radius();
}
GlyphCacheFeatures DistanceFieldGlyphCacheArrayGL::doFeatures() const { GlyphCacheFeatures DistanceFieldGlyphCacheArrayGL::doFeatures() const {
return GlyphCacheFeature::ImageProcessing return GlyphCacheFeature::ImageProcessing
#ifndef MAGNUM_TARGET_GLES #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; explicit DistanceFieldGlyphCacheGL(NoCreateT) noexcept;
/**
* @brief Distance field calculation radius
* @m_since_latest
*/
UnsignedInt radius() const;
#ifdef MAGNUM_BUILD_DEPRECATED #ifdef MAGNUM_BUILD_DEPRECATED
/** /**
* @brief Distance field texture size * @brief Distance field texture size
@ -247,6 +253,9 @@ class MAGNUM_TEXT_EXPORT DistanceFieldGlyphCacheArrayGL: public GlyphCacheArrayG
*/ */
explicit DistanceFieldGlyphCacheArrayGL(NoCreateT) noexcept; explicit DistanceFieldGlyphCacheArrayGL(NoCreateT) noexcept;
/** @brief Distance field calculation radius */
UnsignedInt radius() const;
private: private:
struct State; struct State;

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

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

Loading…
Cancel
Save