summaryrefslogtreecommitdiff
path: root/src/mbgl/sprite/sprite_atlas.cpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-02-13 16:05:26 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2017-02-14 16:28:12 -0600
commitd819ece74c52658c68d4e297c9bef5a74f739e28 (patch)
tree3f5af4a976546db7b811522c62c5ab0b504837a2 /src/mbgl/sprite/sprite_atlas.cpp
parent58de1e15c5e3f4983f445eacefb2fcc931371788 (diff)
downloadqtlocation-mapboxgl-d819ece74c52658c68d4e297c9bef5a74f739e28.tar.gz
[core] Combine SpriteAtlas::getPosition with SpriteAtlas::getImage
Diffstat (limited to 'src/mbgl/sprite/sprite_atlas.cpp')
-rw-r--r--src/mbgl/sprite/sprite_atlas.cpp50
1 files changed, 23 insertions, 27 deletions
diff --git a/src/mbgl/sprite/sprite_atlas.cpp b/src/mbgl/sprite/sprite_atlas.cpp
index 1ca40f6c2d..b712fc8742 100644
--- a/src/mbgl/sprite/sprite_atlas.cpp
+++ b/src/mbgl/sprite/sprite_atlas.cpp
@@ -27,6 +27,23 @@ struct SpriteAtlas::Loader {
std::unique_ptr<AsyncRequest> spriteRequest;
};
+SpriteAtlasElement::SpriteAtlasElement(Rect<uint16_t> rect_,
+ std::shared_ptr<const SpriteImage> image_,
+ Size size_, float pixelRatio)
+ : pos(std::move(rect_)),
+ spriteImage(std::move(image_)),
+ relativePixelRatio(spriteImage->pixelRatio / pixelRatio) {
+
+ const float padding = 1;
+
+ const float w = spriteImage->getWidth() * relativePixelRatio;
+ const float h = spriteImage->getHeight() * relativePixelRatio;
+
+ size = {{ float(spriteImage->getWidth()), spriteImage->getHeight() }};
+ tl = {{ float(pos.x + padding) / size_.width, float(pos.y + padding) / size_.height }};
+ br = {{ float(pos.x + padding + w) / size_.width, float(pos.y + padding + h) / size_.height }};
+}
+
SpriteAtlas::SpriteAtlas(Size size_, float pixelRatio_)
: size(std::move(size_)),
pixelRatio(pixelRatio_),
@@ -192,7 +209,8 @@ optional<SpriteAtlasElement> SpriteAtlas::getImage(const std::string& name,
return SpriteAtlasElement {
*entry.iconRect,
entry.spriteImage,
- entry.spriteImage->pixelRatio / pixelRatio
+ size,
+ pixelRatio
};
}
@@ -200,7 +218,8 @@ optional<SpriteAtlasElement> SpriteAtlas::getImage(const std::string& name,
return SpriteAtlasElement {
*entry.patternRect,
entry.spriteImage,
- entry.spriteImage->pixelRatio / pixelRatio
+ size,
+ pixelRatio
};
}
@@ -233,31 +252,8 @@ optional<SpriteAtlasElement> SpriteAtlas::getImage(const std::string& name,
return SpriteAtlasElement {
rect,
entry.spriteImage,
- entry.spriteImage->pixelRatio / pixelRatio
- };
-}
-
-optional<SpriteAtlasPosition> SpriteAtlas::getPosition(const std::string& name,
- const SpritePatternMode mode) {
- std::lock_guard<std::recursive_mutex> lock(mutex);
-
- auto img = getImage(name, mode);
- if (!img) {
- return {};
- }
-
- auto rect = (*img).pos;
-
- const float padding = 1;
- auto spriteImage = (*img).spriteImage;
-
- const float w = spriteImage->getWidth() * (*img).relativePixelRatio;
- const float h = spriteImage->getHeight() * (*img).relativePixelRatio;
-
- return SpriteAtlasPosition {
- {{ float(spriteImage->getWidth()), spriteImage->getHeight() }},
- {{ float(rect.x + padding) / size.width, float(rect.y + padding) / size.height }},
- {{ float(rect.x + padding + w) / size.width, float(rect.y + padding + h) / size.height }}
+ size,
+ pixelRatio
};
}