diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-02-11 01:54:05 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-02-11 14:34:46 +0200 |
commit | 64e2bcdf4395a1c65cd9faca81f98c4c5d974bd6 (patch) | |
tree | 672f0cb62600314c76c26478d44ebf6d56c96577 /test | |
parent | 146e0ac8ed6a287b77505ffdefa9fe77da93eee1 (diff) | |
download | qtlocation-mapboxgl-64e2bcdf4395a1c65cd9faca81f98c4c5d974bd6.tar.gz |
[core] Loading images to style optimization
This change enables attaching images to the style with batches and
avoids massive re-allocations. Thus, it improves UI performance
especially at start-up time.
Diffstat (limited to 'test')
-rw-r--r-- | test/renderer/image_manager.test.cpp | 6 | ||||
-rw-r--r-- | test/renderer/pattern_atlas.test.cpp | 4 | ||||
-rw-r--r-- | test/sprite/sprite_loader.test.cpp | 8 | ||||
-rw-r--r-- | test/sprite/sprite_parser.test.cpp | 24 |
4 files changed, 22 insertions, 20 deletions
diff --git a/test/renderer/image_manager.test.cpp b/test/renderer/image_manager.test.cpp index a891f48b48..c3ab0d8227 100644 --- a/test/renderer/image_manager.test.cpp +++ b/test/renderer/image_manager.test.cpp @@ -27,10 +27,10 @@ TEST(ImageManager, Basic) { auto images = parseSprite(util::read_file("test/fixtures/annotations/emerald.png"), util::read_file("test/fixtures/annotations/emerald.json")); for (auto& image : images) { - imageManager.addImage(image->baseImpl); - auto* stored = imageManager.getImage(image->getID()); + imageManager.addImage(image); + auto* stored = imageManager.getImage(image->id); ASSERT_TRUE(stored); - EXPECT_EQ(image->getImage().size, stored->image.size); + EXPECT_EQ(image->image.size, stored->image.size); } } diff --git a/test/renderer/pattern_atlas.test.cpp b/test/renderer/pattern_atlas.test.cpp index 350a64adb4..143ee928b5 100644 --- a/test/renderer/pattern_atlas.test.cpp +++ b/test/renderer/pattern_atlas.test.cpp @@ -21,8 +21,8 @@ TEST(PatternAtlas, Basic) { auto images = parseSprite(util::read_file("test/fixtures/annotations/emerald.png"), util::read_file("test/fixtures/annotations/emerald.json")); for (auto& image : images) { - if (image->getID() == "metro") { - ASSERT_TRUE(patternAtlas.addPattern(*image->baseImpl)); + if (image->id == "metro") { + ASSERT_TRUE(patternAtlas.addPattern(*image)); } } auto found = patternAtlas.getPattern("metro"); diff --git a/test/sprite/sprite_loader.test.cpp b/test/sprite/sprite_loader.test.cpp index 122e711f51..4e68bff505 100644 --- a/test/sprite/sprite_loader.test.cpp +++ b/test/sprite/sprite_loader.test.cpp @@ -17,7 +17,7 @@ using namespace mbgl::style; class StubSpriteLoaderObserver : public SpriteLoaderObserver { public: - void onSpriteLoaded(std::vector<std::unique_ptr<style::Image>>&& images) override { + void onSpriteLoaded(std::vector<Immutable<style::Image::Impl>> images) override { if (spriteLoaded) spriteLoaded(std::move(images)); } @@ -25,7 +25,7 @@ public: if (spriteError) spriteError(error); } - std::function<void (std::vector<std::unique_ptr<style::Image>>&&)> spriteLoaded; + std::function<void(std::vector<Immutable<style::Image::Impl>>)> spriteLoaded; std::function<void (std::exception_ptr)> spriteError; }; @@ -92,7 +92,7 @@ TEST(SpriteLoader, LoadingSuccess) { test.end(); }; - test.observer.spriteLoaded = [&] (std::vector<std::unique_ptr<style::Image>>&& images) { + test.observer.spriteLoaded = [&](std::vector<Immutable<style::Image::Impl>> images) { EXPECT_EQ(images.size(), 367u); test.end(); }; @@ -169,7 +169,7 @@ TEST(SpriteLoader, LoadingCancel) { return optional<Response>(); }; - test.observer.spriteLoaded = [&] (const std::vector<std::unique_ptr<style::Image>>&) { + test.observer.spriteLoaded = [&](std::vector<Immutable<style::Image::Impl>>) { FAIL() << "Should never be called"; }; diff --git a/test/sprite/sprite_parser.test.cpp b/test/sprite/sprite_parser.test.cpp index c37fee02b9..58979a0e61 100644 --- a/test/sprite/sprite_parser.test.cpp +++ b/test/sprite/sprite_parser.test.cpp @@ -3,6 +3,7 @@ #include <mbgl/sprite/sprite_parser.hpp> #include <mbgl/style/image.hpp> +#include <mbgl/style/image_impl.hpp> #include <mbgl/util/image.hpp> #include <mbgl/util/io.hpp> #include <mbgl/util/string.hpp> @@ -242,8 +243,8 @@ TEST(Sprite, SpriteParsing) { const auto images = parseSprite(image_1x, json_1x); std::set<std::string> names; - std::transform(images.begin(), images.end(), std::inserter(names, names.begin()), - [](const auto& image) { return image->getID(); }); + std::transform( + images.begin(), images.end(), std::inserter(names, names.begin()), [](const auto& image) { return image->id; }); EXPECT_EQ(std::set<std::string>({ "airfield_icon", "airport_icon", @@ -321,11 +322,12 @@ TEST(Sprite, SpriteParsing) { names); { - auto& sprite = *std::find_if(images.begin(), images.end(), [] (const auto& image) { return image->getID() == "generic-metro"; }); - EXPECT_EQ(18u, sprite->getImage().size.width); - EXPECT_EQ(18u, sprite->getImage().size.height); - EXPECT_EQ(1, sprite->getPixelRatio()); - EXPECT_EQ(readImage("test/fixtures/annotations/result-spriteparsing.png"), sprite->getImage()); + auto& sprite = + *std::find_if(images.begin(), images.end(), [](const auto& image) { return image->id == "generic-metro"; }); + EXPECT_EQ(18u, sprite->image.size.width); + EXPECT_EQ(18u, sprite->image.size.height); + EXPECT_EQ(1, sprite->pixelRatio); + EXPECT_EQ(readImage("test/fixtures/annotations/result-spriteparsing.png"), sprite->image); } } @@ -460,10 +462,10 @@ TEST(Sprite, SpriteParsingStretchAndContent) { } })JSON"); EXPECT_EQ(1u, images.size()); - EXPECT_EQ("image", images[0]->getID()); - EXPECT_EQ((style::ImageStretches{{2, 14}}), images[0]->getStretchX()); - EXPECT_EQ((style::ImageStretches{{0, 4}, {12, 16}}), images[0]->getStretchY()); - EXPECT_EQ((style::ImageContent{2, 2, 14, 14}), images[0]->getContent()); + EXPECT_EQ("image", images[0]->id); + EXPECT_EQ((style::ImageStretches{{2, 14}}), images[0]->stretchX); + EXPECT_EQ((style::ImageStretches{{0, 4}, {12, 16}}), images[0]->stretchY); + EXPECT_EQ((style::ImageContent{2, 2, 14, 14}), images[0]->content); } TEST(Sprite, SpriteParsingEmptyImage) { |