summaryrefslogtreecommitdiff
path: root/src/mbgl/text
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-10-28 16:39:50 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-02-02 09:44:42 -0800
commit141e995806576364d185626176c1b993fc519291 (patch)
treeecdc41fc7699f2a1a9e9456157348451ebe99597 /src/mbgl/text
parent6a6bddb4537004cc1bfc506e76772de74d33f3f7 (diff)
downloadqtlocation-mapboxgl-141e995806576364d185626176c1b993fc519291.tar.gz
[core] Add support for data-driven styling
Diffstat (limited to 'src/mbgl/text')
-rw-r--r--src/mbgl/text/quads.cpp2
-rw-r--r--src/mbgl/text/shaping.cpp13
-rw-r--r--src/mbgl/text/shaping.hpp41
3 files changed, 33 insertions, 23 deletions
diff --git a/src/mbgl/text/quads.cpp b/src/mbgl/text/quads.cpp
index 1a05e6f94f..10c4dfea90 100644
--- a/src/mbgl/text/quads.cpp
+++ b/src/mbgl/text/quads.cpp
@@ -62,7 +62,7 @@ SymbolQuads getIconQuads(Anchor& anchor, const PositionedIcon& shapedIcon,
bl = {left, bottom};
}
- float angle = layout.get<IconRotate>() * util::DEG2RAD;
+ float angle = shapedIcon.angle;
if (placement == style::SymbolPlacementType::Line) {
assert(static_cast<unsigned int>(anchor.segment) < line.size());
const GeometryCoordinate &prev= line[anchor.segment];
diff --git a/src/mbgl/text/shaping.cpp b/src/mbgl/text/shaping.cpp
index 062066aaf4..b43ba0220c 100644
--- a/src/mbgl/text/shaping.cpp
+++ b/src/mbgl/text/shaping.cpp
@@ -1,19 +1,18 @@
#include <mbgl/text/shaping.hpp>
-#include <mbgl/style/layers/symbol_layer_properties.hpp>
+#include <mbgl/layout/symbol_feature.hpp>
namespace mbgl {
-using namespace style;
-
-PositionedIcon shapeIcon(const SpriteAtlasElement& image, const SymbolLayoutProperties::Evaluated& layout) {
- float dx = layout.get<IconOffset>()[0];
- float dy = layout.get<IconOffset>()[1];
+PositionedIcon shapeIcon(const SpriteAtlasElement& image,
+ const SymbolFeature& feature) {
+ float dx = feature.iconOffset[0];
+ float dy = feature.iconOffset[1];
float x1 = dx - image.spriteImage->getWidth() / 2.0f;
float x2 = x1 + image.spriteImage->getWidth();
float y1 = dy - image.spriteImage->getHeight() / 2.0f;
float y2 = y1 + image.spriteImage->getHeight();
- return PositionedIcon(image, y1, y2, x1, x2);
+ return PositionedIcon(image, y1, y2, x1, x2, feature.iconRotation);
}
} // namespace mbgl
diff --git a/src/mbgl/text/shaping.hpp b/src/mbgl/text/shaping.hpp
index 30375179b6..b0e6ae3b1d 100644
--- a/src/mbgl/text/shaping.hpp
+++ b/src/mbgl/text/shaping.hpp
@@ -3,29 +3,40 @@
#include <mbgl/text/glyph.hpp>
#include <mbgl/sprite/sprite_atlas.hpp>
#include <mbgl/sprite/sprite_image.hpp>
-#include <mbgl/style/layers/symbol_layer_properties.hpp>
#include <mbgl/util/optional.hpp>
namespace mbgl {
class SpriteAtlasElement;
+class SymbolFeature;
class PositionedIcon {
- public:
- explicit PositionedIcon() {}
- explicit PositionedIcon(const SpriteAtlasElement& _image,
- float _top, float _bottom, float _left, float _right) :
- image(_image), top(_top), bottom(_bottom), left(_left), right(_right) {}
-
- optional<SpriteAtlasElement> image;
- float top = 0;
- float bottom = 0;
- float left = 0;
- float right = 0;
-
- explicit operator bool() const { return image && (*image).pos.hasArea(); }
+public:
+ PositionedIcon() = default;
+ PositionedIcon(const SpriteAtlasElement& image_,
+ float top_,
+ float bottom_,
+ float left_,
+ float right_,
+ float angle_)
+ : image(image_),
+ top(top_),
+ bottom(bottom_),
+ left(left_),
+ right(right_),
+ angle(angle_) {}
+
+ optional<SpriteAtlasElement> image;
+ float top = 0;
+ float bottom = 0;
+ float left = 0;
+ float right = 0;
+ float angle = 0;
+
+ explicit operator bool() const { return image && (*image).pos.hasArea(); }
};
-PositionedIcon shapeIcon(const SpriteAtlasElement& image, const style::SymbolLayoutProperties::Evaluated&);
+PositionedIcon shapeIcon(const SpriteAtlasElement&,
+ const SymbolFeature&);
} // namespace mbgl