[core] Add ImageSource support to style parsers

This commit is contained in:
Asheem Mamoowala
2017-04-20 12:39:51 -07:00
parent 9068c90fc4
commit 7a010df956
18 changed files with 389 additions and 5 deletions

View File

@@ -7,6 +7,7 @@
#include <mbgl/style/sources/raster_source.hpp>
#include <mbgl/style/sources/vector_source.hpp>
#include <mbgl/style/sources/geojson_source.hpp>
#include <mbgl/style/sources/image_source.hpp>
#include <mbgl/renderer/sources/render_raster_source.hpp>
#include <mbgl/renderer/sources/render_vector_source.hpp>
@@ -16,6 +17,9 @@
#include <mbgl/util/run_loop.hpp>
#include <mbgl/util/string.hpp>
#include <mbgl/util/io.hpp>
#include <mbgl/util/premultiply.hpp>
#include <mbgl/util/image.hpp>
#include <mbgl/util/tileset.hpp>
#include <mbgl/util/default_thread_pool.hpp>
#include <mbgl/util/logging.hpp>
@@ -436,3 +440,39 @@ TEST(Source, GeoJSonSourceUrlUpdate) {
test.run();
}
TEST(Source, ImageSourceImageUpdate) {
SourceTest test;
test.fileSource.response = [&] (const Resource& resource) {
EXPECT_EQ("http://url", resource.url);
Response response;
response.data = std::make_unique<std::string>(util::read_file("test/fixtures/image/no_profile.png"));
return response;
};
test.styleObserver.sourceChanged = [&] (Source&) {
// Should be called (test will hang if it doesn't)
test.end();
};
std::vector<LatLng> coords;
ImageSource source("source", coords);
source.setURL("http://url");
source.setObserver(&test.styleObserver);
// Load initial, so the source state will be loaded=true
source.loadDescription(test.fileSource);
UnassociatedImage rgba({ 1, 1 });
rgba.data[0] = 255;
rgba.data[1] = 254;
rgba.data[2] = 253;
rgba.data[3] = 128;
// Schedule an update
test.loop.invoke([&] () {
// Update the url
source.setImage(std::move(rgba));
});
test.run();
}