From a88e58ef3a90225fcfafca1efab996de6a827b72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Thu, 7 Jan 2016 18:51:19 +0100 Subject: [PATCH] [core] use stale glyphs Updating glyphs is still unsupported, and there's no good use case for doing so. When we're using a stale glyph PBF, and the fresh answer contains changed to that glyph, we will continue to use the old glyph. --- include/mbgl/platform/event.hpp | 4 +- src/mbgl/text/font_stack.cpp | 49 +++++++++++------- src/mbgl/text/font_stack.hpp | 3 -- src/mbgl/text/glyph_pbf.cpp | 8 +-- test/fixtures/stale/glyph.pbf | Bin 0 -> 74722 bytes .../stale/stale_style_and_glyphs/expected.png | Bin 0 -> 36120 bytes test/fixtures/stale/style_and_glyphs.json | 39 ++++++++++++++ test/storage/cache_stale.cpp | 33 +++++++++++- test/style/glyph_store.cpp | 4 -- 9 files changed, 104 insertions(+), 36 deletions(-) create mode 100644 test/fixtures/stale/glyph.pbf create mode 100644 test/fixtures/stale/stale_style_and_glyphs/expected.png create mode 100644 test/fixtures/stale/style_and_glyphs.json diff --git a/include/mbgl/platform/event.hpp b/include/mbgl/platform/event.hpp index 5c59dc69c..8e3650838 100644 --- a/include/mbgl/platform/event.hpp +++ b/include/mbgl/platform/event.hpp @@ -37,7 +37,8 @@ enum class Event : uint8_t { OpenGL, JNI, Android, - Crash + Crash, + Glyph, }; MBGL_DEFINE_ENUM_CLASS(EventClass, Event, { @@ -56,6 +57,7 @@ MBGL_DEFINE_ENUM_CLASS(EventClass, Event, { { Event::JNI, "JNI" }, { Event::Android, "Android" }, { Event::Crash, "Crash" }, + { Event::Glyph, "Glyph" }, { Event(-1), "Unknown" }, }); diff --git a/src/mbgl/text/font_stack.cpp b/src/mbgl/text/font_stack.cpp index d31ff7bd5..60e90a77e 100644 --- a/src/mbgl/text/font_stack.cpp +++ b/src/mbgl/text/font_stack.cpp @@ -1,17 +1,28 @@ #include #include +#include #include namespace mbgl { void FontStack::insert(uint32_t id, const SDFGlyph &glyph) { - metrics.emplace(id, glyph.metrics); - bitmaps.emplace(id, glyph.bitmap); - sdfs.emplace(id, glyph); -} - -const std::map &FontStack::getMetrics() const { - return metrics; + auto it = sdfs.find(id); + if (it == sdfs.end()) { + // Glyph doesn't exist yet. + sdfs.emplace(id, glyph); + } else if (it->second.metrics == glyph.metrics) { + if (it->second.bitmap != glyph.bitmap) { + // The actual bitmap was updated; this is unsupported. + Log::Warning(Event::Glyph, "Modified glyph changed bitmap represenation"); + } + // At least try to update it in case it's currently unsused. + // If it is already used; we won't attempt to update the glyph atlas texture. + it->second.bitmap = glyph.bitmap; + } else { + // The metrics were updated; this is unsupported. + Log::Warning(Event::Glyph, "Modified glyph has different metrics"); + return; + } } const std::map &FontStack::getSDFs() const { @@ -32,10 +43,10 @@ const Shaping FontStack::getShaping(const std::u32string &string, const float ma // Loop through all characters of this label and shape. for (uint32_t chr : string) { - auto metric = metrics.find(chr); - if (metric != metrics.end()) { + auto it = sdfs.find(chr); + if (it != sdfs.end()) { shaping.positionedGlyphs.emplace_back(chr, x, y); - x += metric->second.advance + spacing; + x += it->second.metrics.advance + spacing; } } @@ -59,12 +70,12 @@ void align(Shaping &shaping, const float justify, const float horizontalAlign, } } -void justifyLine(std::vector &positionedGlyphs, const std::map &metrics, uint32_t start, +void justifyLine(std::vector &positionedGlyphs, const std::map &sdfs, uint32_t start, uint32_t end, float justify) { PositionedGlyph &glyph = positionedGlyphs[end]; - auto metric = metrics.find(glyph.glyph); - if (metric != metrics.end()) { - const uint32_t lastAdvance = metric->second.advance; + auto it = sdfs.find(glyph.glyph); + if (it != sdfs.end()) { + const uint32_t lastAdvance = it->second.metrics.advance; const float lineIndent = float(glyph.x + lastAdvance) * justify; for (uint32_t j = start; j <= end; j++) { @@ -112,7 +123,7 @@ void FontStack::lineWrap(Shaping &shaping, const float lineHeight, const float m lineEnd--; } - justifyLine(positionedGlyphs, metrics, lineStartIndex, lineEnd, justify); + justifyLine(positionedGlyphs, sdfs, lineStartIndex, lineEnd, justify); } lineStartIndex = lastSafeBreak + 1; @@ -138,14 +149,14 @@ void FontStack::lineWrap(Shaping &shaping, const float lineHeight, const float m } const PositionedGlyph& lastPositionedGlyph = positionedGlyphs.back(); - const auto lastGlyphMetric = metrics.find(lastPositionedGlyph.glyph); - assert(lastGlyphMetric != metrics.end()); - const uint32_t lastLineLength = lastPositionedGlyph.x + lastGlyphMetric->second.advance; + const auto lastGlyphIt = sdfs.find(lastPositionedGlyph.glyph); + assert(lastGlyphIt != sdfs.end()); + const uint32_t lastLineLength = lastPositionedGlyph.x + lastGlyphIt->second.metrics.advance; maxLineLength = std::max(maxLineLength, lastLineLength); const uint32_t height = (line + 1) * lineHeight; - justifyLine(positionedGlyphs, metrics, lineStartIndex, uint32_t(positionedGlyphs.size()) - 1, justify); + justifyLine(positionedGlyphs, sdfs, lineStartIndex, uint32_t(positionedGlyphs.size()) - 1, justify); align(shaping, justify, horizontalAlign, verticalAlign, maxLineLength, lineHeight, line, translate); // Calculate the bounding box diff --git a/src/mbgl/text/font_stack.hpp b/src/mbgl/text/font_stack.hpp index 4ca967d7a..d81460a53 100644 --- a/src/mbgl/text/font_stack.hpp +++ b/src/mbgl/text/font_stack.hpp @@ -9,7 +9,6 @@ namespace mbgl { class FontStack { public: void insert(uint32_t id, const SDFGlyph &glyph); - const std::map &getMetrics() const; const std::map &getSDFs() const; const Shaping getShaping(const std::u32string &string, float maxWidth, float lineHeight, float horizontalAlign, float verticalAlign, float justify, @@ -18,8 +17,6 @@ public: float verticalAlign, float justify, const vec2 &translate) const; private: - std::map bitmaps; - std::map metrics; std::map sdfs; }; diff --git a/src/mbgl/text/glyph_pbf.cpp b/src/mbgl/text/glyph_pbf.cpp index 0c0626c0d..f6f0dca02 100644 --- a/src/mbgl/text/glyph_pbf.cpp +++ b/src/mbgl/text/glyph_pbf.cpp @@ -75,15 +75,9 @@ GlyphPBF::GlyphPBF(GlyphStore* store, }); auto requestCallback = [this, store, fontStack, glyphRange](Response res) { - if (res.stale) { - // Only handle fresh responses. - return; - } - req = nullptr; - if (res.error) { observer->onGlyphsError(fontStack, glyphRange, std::make_exception_ptr(std::runtime_error(res.error->message))); - } else { + } else if (data != res.data || (*data != *res.data)) { data = res.data; parse(store, fontStack, glyphRange); } diff --git a/test/fixtures/stale/glyph.pbf b/test/fixtures/stale/glyph.pbf new file mode 100644 index 0000000000000000000000000000000000000000..0d160f78989795546bd6e27824a99194ab9a7f63 GIT binary patch literal 74722 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%0ARbuE!iaJ&ty!>e^;@@PEy8l`jAI%p)>7 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 zn|@c)Kp7fH13(!{N~put(styleResource, expiredItem(stylePath)); + + // Rig the cache with an expired glyph PBF. + const std::string glyphPath = "stale/glyph.pbf"; + const Resource glyphResource{ Resource::Kind::Glyphs, prefix + "/stale/Open%20Sans%20Regular%2c%20Arial%20Unicode%20MS%20Regular/0-255.pbf" }; + cache->put(glyphResource, expiredItem(glyphPath)); + + DefaultFileSource fileSource(":memory:", "."); + + Map map(view, fileSource, MapMode::Still); + map.setStyleURL(styleResource.url); + + // TODO: this shouldn't take > 1 second + checkRendering(map, "stale_style_and_glyphs", 2000ms, 0.0015); +} diff --git a/test/style/glyph_store.cpp b/test/style/glyph_store.cpp index a53b20c6d..0215dff3f 100644 --- a/test/style/glyph_store.cpp +++ b/test/style/glyph_store.cpp @@ -52,7 +52,6 @@ TEST(GlyphStore, LoadingSuccess) { return; auto fontStack = test.glyphStore.getFontStack("Test Stack"); - ASSERT_FALSE(fontStack->getMetrics().empty()); ASSERT_FALSE(fontStack->getSDFs().empty()); test.end(); @@ -73,7 +72,6 @@ TEST(GlyphStore, LoadingFail) { ASSERT_EQ(glyphRange, GlyphRange(0, 255)); auto stack = test.glyphStore.getFontStack("Test Stack"); - ASSERT_TRUE(stack->getMetrics().empty()); ASSERT_TRUE(stack->getSDFs().empty()); ASSERT_FALSE(test.glyphStore.hasGlyphRanges("Test Stack", {{0, 255}})); @@ -95,7 +93,6 @@ TEST(GlyphStore, LoadingCorrupted) { ASSERT_EQ(glyphRange, GlyphRange(0, 255)); auto stack = test.glyphStore.getFontStack("Test Stack"); - ASSERT_TRUE(stack->getMetrics().empty()); ASSERT_TRUE(stack->getSDFs().empty()); ASSERT_FALSE(test.glyphStore.hasGlyphRanges("Test Stack", {{0, 255}})); @@ -132,7 +129,6 @@ TEST(GlyphStore, InvalidURL) { ASSERT_TRUE(error != nullptr); auto stack = test.glyphStore.getFontStack("Test Stack"); - ASSERT_TRUE(stack->getMetrics().empty()); ASSERT_TRUE(stack->getSDFs().empty()); test.end();