diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2017-04-06 09:20:07 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2017-04-14 15:39:31 -0700 |
commit | a50d7a331bccd5ef35f08d8d0e24a0348510eb5a (patch) | |
tree | ac174cebebefa07a4f90263b57aaa47747bf1ef8 /src/mbgl/text/glyph.hpp | |
parent | 09a22715769c629ad433b405908b60e1b9fa969b (diff) | |
download | qtlocation-mapboxgl-a50d7a331bccd5ef35f08d8d0e24a0348510eb5a.tar.gz |
[core] Replace GlyphRangeSet in onGlyphsAvailable with optionals in the map
GlyphRangeSet isn't keyed by FontStack, so using it to indicate that a particular range was loaded could have produced false positives.
Diffstat (limited to 'src/mbgl/text/glyph.hpp')
-rw-r--r-- | src/mbgl/text/glyph.hpp | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/src/mbgl/text/glyph.hpp b/src/mbgl/text/glyph.hpp index 10bdeeea4a..9cf39de840 100644 --- a/src/mbgl/text/glyph.hpp +++ b/src/mbgl/text/glyph.hpp @@ -4,6 +4,7 @@ #include <mbgl/util/font_stack.hpp> #include <mbgl/util/rect.hpp> #include <mbgl/util/traits.hpp> +#include <mbgl/util/optional.hpp> #include <cstdint> #include <vector> @@ -19,17 +20,11 @@ typedef std::set<GlyphID> GlyphIDs; GlyphRange getGlyphRange(GlyphID glyph); struct GlyphMetrics { - explicit operator bool() const { - return !(width == 0 && height == 0 && advance == 0); - } - - // Glyph metrics. uint32_t width = 0; uint32_t height = 0; int32_t left = 0; int32_t top = 0; uint32_t advance = 0; - }; inline bool operator==(const GlyphMetrics& lhs, const GlyphMetrics& rhs) { @@ -41,19 +36,12 @@ inline bool operator==(const GlyphMetrics& lhs, const GlyphMetrics& rhs) { } struct Glyph { - explicit Glyph() : rect(0, 0, 0, 0), metrics() {} - explicit Glyph(Rect<uint16_t> rect_, GlyphMetrics metrics_) - : rect(std::move(rect_)), metrics(std::move(metrics_)) {} - - explicit operator bool() const { - return metrics || rect.hasArea(); - } - - const Rect<uint16_t> rect; - const GlyphMetrics metrics; + Rect<uint16_t> rect; + GlyphMetrics metrics; }; -typedef std::map<GlyphID, Glyph> GlyphPositions; +typedef std::map<GlyphID, optional<Glyph>> GlyphPositions; +typedef std::map<FontStack, GlyphPositions> GlyphPositionMap; class PositionedGlyph { public: @@ -111,7 +99,6 @@ constexpr WritingModeType operator~(WritingModeType value) { typedef std::map<FontStack,GlyphIDs> GlyphDependencies; typedef std::map<FontStack,GlyphRangeSet> GlyphRangeDependencies; -typedef std::map<FontStack,GlyphPositions> GlyphPositionMap; } // end namespace mbgl |