summaryrefslogtreecommitdiff
path: root/src/mbgl/text/glyph.hpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-04-06 09:20:07 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-04-14 15:39:31 -0700
commita50d7a331bccd5ef35f08d8d0e24a0348510eb5a (patch)
treeac174cebebefa07a4f90263b57aaa47747bf1ef8 /src/mbgl/text/glyph.hpp
parent09a22715769c629ad433b405908b60e1b9fa969b (diff)
downloadqtlocation-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.hpp23
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