diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2015-11-24 10:07:18 -0800 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2015-11-25 15:57:36 -0800 |
commit | 0c1e378bc9555f6cf826bb38b1a36fa742f8ce9b (patch) | |
tree | 9aec8e4f475ff715645072503b3e0ec78f0573af /test | |
parent | 2de0a351a0635192bd05116cebdf0103c2638d05 (diff) | |
download | qtlocation-mapboxgl-0c1e378bc9555f6cf826bb38b1a36fa742f8ce9b.tar.gz |
[core] Rewrite image handling
* Consolidate Image and StillImage
* Typecheck unassociated vs premultiplied images
* Rewrite default platform image decoding implementation
Diffstat (limited to 'test')
-rw-r--r-- | test/api/annotations.cpp | 9 | ||||
-rw-r--r-- | test/api/api_misuse.cpp | 3 | ||||
-rw-r--r-- | test/api/repeated_render.cpp | 27 | ||||
-rw-r--r-- | test/miscellaneous/bilinear.cpp | 7 | ||||
-rw-r--r-- | test/sprite/sprite_parser.cpp | 22 | ||||
-rw-r--r-- | test/style/pending_resources.cpp | 3 |
6 files changed, 31 insertions, 40 deletions
diff --git a/test/api/annotations.cpp b/test/api/annotations.cpp index 55f5ca6749..b16ec71ef6 100644 --- a/test/api/annotations.cpp +++ b/test/api/annotations.cpp @@ -4,7 +4,6 @@ #include <mbgl/annotation/shape_annotation.hpp> #include <mbgl/sprite/sprite_image.hpp> #include <mbgl/map/map.hpp> -#include <mbgl/map/still_image.hpp> #include <mbgl/platform/default/headless_display.hpp> #include <mbgl/platform/default/headless_view.hpp> #include <mbgl/storage/default_file_source.hpp> @@ -17,13 +16,11 @@ using namespace mbgl; std::string renderPNG(Map& map) { - std::promise<std::unique_ptr<const StillImage>> promise; - map.renderStill([&](std::exception_ptr, std::unique_ptr<const StillImage> image) { + std::promise<UnassociatedImage> promise; + map.renderStill([&](std::exception_ptr, UnassociatedImage&& image) { promise.set_value(std::move(image)); }); - - auto result = promise.get_future().get(); - return util::compress_png(result->width, result->height, result->pixels.get()); + return encodePNG(promise.get_future().get()); } TEST(Annotations, PointAnnotation) { diff --git a/test/api/api_misuse.cpp b/test/api/api_misuse.cpp index 1f54855323..4d5fe11042 100644 --- a/test/api/api_misuse.cpp +++ b/test/api/api_misuse.cpp @@ -2,7 +2,6 @@ #include "../fixtures/fixture_log_observer.hpp" #include <mbgl/map/map.hpp> -#include <mbgl/map/still_image.hpp> #include <mbgl/platform/default/headless_display.hpp> #include <mbgl/platform/default/headless_view.hpp> #include <mbgl/storage/default_file_source.hpp> @@ -46,7 +45,7 @@ TEST(API, RenderWithoutStyle) { Map map(view, fileSource, MapMode::Still); std::promise<std::exception_ptr> promise; - map.renderStill([&promise](std::exception_ptr error, std::unique_ptr<const StillImage>) { + map.renderStill([&promise](std::exception_ptr error, UnassociatedImage&&) { promise.set_value(error); }); diff --git a/test/api/repeated_render.cpp b/test/api/repeated_render.cpp index 3317b4e3a4..79349c67e7 100644 --- a/test/api/repeated_render.cpp +++ b/test/api/repeated_render.cpp @@ -2,7 +2,6 @@ #include "../fixtures/fixture_log_observer.hpp" #include <mbgl/map/map.hpp> -#include <mbgl/map/still_image.hpp> #include <mbgl/platform/default/headless_view.hpp> #include <mbgl/platform/default/headless_display.hpp> #include <mbgl/storage/default_file_source.hpp> @@ -26,28 +25,26 @@ TEST(API, RepeatedRender) { { map.setStyleJSON(style, ""); - std::promise<std::unique_ptr<const StillImage>> promise; - map.renderStill([&promise](std::exception_ptr, std::unique_ptr<const StillImage> image) { + std::promise<UnassociatedImage> promise; + map.renderStill([&promise](std::exception_ptr, UnassociatedImage&& image) { promise.set_value(std::move(image)); }); - auto result = promise.get_future().get(); - ASSERT_EQ(256, result->width); - ASSERT_EQ(512, result->height); - const std::string png = util::compress_png(result->width, result->height, result->pixels.get()); - util::write_file("test/fixtures/api/1.png", png); + auto result = std::move(promise.get_future().get()); + ASSERT_EQ(256, result.width); + ASSERT_EQ(512, result.height); + util::write_file("test/fixtures/api/1.png", encodePNG(result)); } { map.setStyleJSON(style, "TEST_DATA/suite"); - std::promise<std::unique_ptr<const StillImage>> promise; - map.renderStill([&promise](std::exception_ptr, std::unique_ptr<const StillImage> image) { + std::promise<UnassociatedImage> promise; + map.renderStill([&promise](std::exception_ptr, UnassociatedImage&& image) { promise.set_value(std::move(image)); }); - auto result = promise.get_future().get(); - ASSERT_EQ(256, result->width); - ASSERT_EQ(512, result->height); - const std::string png = util::compress_png(result->width, result->height, result->pixels.get()); - util::write_file("test/fixtures/api/2.png", png); + auto result = std::move(promise.get_future().get()); + ASSERT_EQ(256, result.width); + ASSERT_EQ(512, result.height); + util::write_file("test/fixtures/api/2.png", encodePNG(result)); } auto observer = Log::removeObserver(); diff --git a/test/miscellaneous/bilinear.cpp b/test/miscellaneous/bilinear.cpp index 722e7265c0..740025bbbc 100644 --- a/test/miscellaneous/bilinear.cpp +++ b/test/miscellaneous/bilinear.cpp @@ -23,8 +23,9 @@ TEST(Bilinear, Scaling) { const uint32_t *srcData = reinterpret_cast<const uint32_t *>(src + 8); const vec2<uint32_t> srcSize { width, height }; const vec2<uint32_t> dstSize { 128, 128 }; - auto dst = std::make_unique<uint32_t[]>(dstSize.x * dstSize.y); - uint32_t *dstData = dst.get(); + + UnassociatedImage dst { dstSize.x, dstSize.y }; + uint32_t *dstData = reinterpret_cast<uint32_t*>(dst.data.get()); std::fill(dstData, dstData + dstSize.x * dstSize.y, 0xFFFF00FF); util::bilinearScale(srcData, srcSize, { 0, 0, 24, 24 }, dstData, dstSize, { 8, 8, 24, 24 }, false); @@ -42,7 +43,7 @@ TEST(Bilinear, Scaling) { util::bilinearScale(srcData, srcSize, { 252, 380, 12, 12 }, dstData, dstSize, { 18, 90, 24, 24 }, false); const std::string data { reinterpret_cast<char *>(dstData), dstSize.x * dstSize.y * sizeof(uint32_t) }; - util::write_file("test/fixtures/sprites/atlas_actual.png", util::compress_png(dstSize.x, dstSize.y, reinterpret_cast<uint8_t *>(dstData))); + util::write_file("test/fixtures/sprites/atlas_actual.png", encodePNG(dst)); util::write_file("test/fixtures/sprites/atlas_actual.bin", util::compress(data)); const std::string reference = util::decompress(util::read_file("test/fixtures/sprites/atlas_reference.bin")); diff --git a/test/sprite/sprite_parser.cpp b/test/sprite/sprite_parser.cpp index c2e4df3c58..dfa3a1055b 100644 --- a/test/sprite/sprite_parser.cpp +++ b/test/sprite/sprite_parser.cpp @@ -13,10 +13,10 @@ using namespace mbgl; TEST(Sprite, SpriteImageCreationInvalid) { FixtureLog log; - const util::Image image_1x(util::read_file("test/fixtures/annotations/emerald.png")); - ASSERT_TRUE(image_1x); - ASSERT_EQ(200u, image_1x.getWidth()); - ASSERT_EQ(299u, image_1x.getHeight()); + const PremultipliedImage image_1x = decodeImage(util::read_file("test/fixtures/annotations/emerald.png")); + + ASSERT_EQ(200u, image_1x.width); + ASSERT_EQ(299u, image_1x.height); ASSERT_EQ(nullptr, createSpriteImage(image_1x, 0, 0, 0, 16, 1, false)); // width == 0 ASSERT_EQ(nullptr, createSpriteImage(image_1x, 0, 0, 16, 0, 1, false)); // height == 0 @@ -34,10 +34,10 @@ TEST(Sprite, SpriteImageCreationInvalid) { } TEST(Sprite, SpriteImageCreation1x) { - const util::Image image_1x(util::read_file("test/fixtures/annotations/emerald.png")); - ASSERT_TRUE(image_1x); - ASSERT_EQ(200u, image_1x.getWidth()); - ASSERT_EQ(299u, image_1x.getHeight()); + const PremultipliedImage image_1x = decodeImage(util::read_file("test/fixtures/annotations/emerald.png")); + + ASSERT_EQ(200u, image_1x.width); + ASSERT_EQ(299u, image_1x.height); { // "museum_icon":{"x":177,"y":187,"width":18,"height":18,"pixelRatio":1,"sdf":false} const auto sprite = createSpriteImage(image_1x, 177, 187, 18, 18, 1, false); @@ -74,8 +74,7 @@ TEST(Sprite, SpriteImageCreation1x) { } TEST(Sprite, SpriteImageCreation2x) { - const util::Image image_2x(util::read_file("test/fixtures/annotations/emerald@2x.png")); - ASSERT_TRUE(image_2x); + const PremultipliedImage image_2x = decodeImage(util::read_file("test/fixtures/annotations/emerald@2x.png")); // "museum_icon":{"x":354,"y":374,"width":36,"height":36,"pixelRatio":2,"sdf":false} const auto sprite = createSpriteImage(image_2x, 354, 374, 36, 36, 2, false); @@ -89,8 +88,7 @@ TEST(Sprite, SpriteImageCreation2x) { } TEST(Sprite, SpriteImageCreation1_5x) { - const util::Image image_2x(util::read_file("test/fixtures/annotations/emerald@2x.png")); - ASSERT_TRUE(image_2x); + const PremultipliedImage image_2x = decodeImage(util::read_file("test/fixtures/annotations/emerald@2x.png")); // "museum_icon":{"x":354,"y":374,"width":36,"height":36,"pixelRatio":2,"sdf":false} const auto sprite = createSpriteImage(image_2x, 354, 374, 36, 36, 1.5, false); diff --git a/test/style/pending_resources.cpp b/test/style/pending_resources.cpp index 3ba59657de..58dc72937e 100644 --- a/test/style/pending_resources.cpp +++ b/test/style/pending_resources.cpp @@ -3,7 +3,6 @@ #include "../fixtures/util.hpp" #include <mbgl/map/map.hpp> -#include <mbgl/map/still_image.hpp> #include <mbgl/platform/default/headless_display.hpp> #include <mbgl/platform/default/headless_view.hpp> #include <mbgl/util/io.hpp> @@ -40,7 +39,7 @@ TEST_P(PendingResources, DeleteMapObjectWithPendingRequest) { const std::string style = util::read_file("test/fixtures/resources/style.json"); map->setStyleJSON(style, "."); - map->renderStill([&endTest](std::exception_ptr, std::unique_ptr<const StillImage>) { + map->renderStill([&endTest](std::exception_ptr, UnassociatedImage&&) { EXPECT_TRUE(false) << "Should never happen."; }); |