[core] renderer interface

This commit is contained in:
Ivo van Dongen
2017-06-13 10:50:16 +03:00
committed by Ivo van Dongen
parent 39a732d7ae
commit 3832f8d0d8
44 changed files with 1016 additions and 541 deletions

View File

@@ -7,10 +7,12 @@
#include <mbgl/gl/offscreen_view.hpp>
#include <mbgl/util/default_thread_pool.hpp>
#include <mbgl/storage/default_file_source.hpp>
#include <mbgl/renderer/renderer.hpp>
#include <mbgl/util/image.hpp>
#include <mbgl/util/io.hpp>
#include <mbgl/util/run_loop.hpp>
#include <mbgl/style/style.hpp>
#include <mbgl/test/stub_renderer_frontend.hpp>
#include <mbgl/style/layers/line_layer.hpp>
#include <mbgl/style/sources/geojson_source.hpp>
@@ -28,17 +30,21 @@ TEST(API, RepeatedRender) {
HeadlessBackend backend { test::sharedDisplay() };
BackendScope scope { backend };
OffscreenView view { backend.getContext(), { 512, 512 } };
float pixelRatio { 1 };
DefaultFileSource fileSource(":memory:", "test/fixtures/api/assets");
ThreadPool threadPool(4);
StubRendererFrontend rendererFrontend {
std::make_unique<Renderer>(backend, pixelRatio, fileSource, threadPool), view };
Log::setObserver(std::make_unique<FixtureLogObserver>());
Map map(backend, MapObserver::nullObserver(), view.getSize(), 1, fileSource, threadPool, MapMode::Still);
Map map(rendererFrontend, MapObserver::nullObserver(), view.getSize(), pixelRatio, fileSource,
threadPool, MapMode::Still);
{
map.getStyle().loadJSON(style);
PremultipliedImage result;
map.renderStill(view, [&](std::exception_ptr) {
map.renderStill([&](std::exception_ptr) {
result = view.readStillImage();
});
@@ -54,7 +60,7 @@ TEST(API, RepeatedRender) {
{
map.getStyle().loadJSON(style);
PremultipliedImage result;
map.renderStill(view, [&](std::exception_ptr) {
map.renderStill([&](std::exception_ptr) {
result = view.readStillImage();
});
@@ -86,7 +92,10 @@ TEST(API, ZoomHistory) {
Log::setObserver(std::make_unique<FixtureLogObserver>());
Map map(backend, MapObserver::nullObserver(), view.getSize(), 1, fileSource, threadPool, MapMode::Still);
float pixelRatio { 1 };
StubRendererFrontend rendererFrontend {
std::make_unique<Renderer>(backend, pixelRatio, fileSource, threadPool), view };
Map map(rendererFrontend, MapObserver::nullObserver(), view.getSize(), pixelRatio, fileSource, threadPool, MapMode::Still);
map.getStyle().loadJSON(style);
auto geojson = mapbox::geojson::parse(R"t({ "type": "FeatureCollection", "features": [{ "type": "Feature", "properties": {}, "geometry": { "type": "LineString", "coordinates": [ [ -150, -75 ], [ 150, 75 ] ] } } ] })t");
@@ -101,7 +110,7 @@ TEST(API, ZoomHistory) {
{
PremultipliedImage result;
map.renderStill(view, [&](std::exception_ptr) {
map.renderStill([&](std::exception_ptr) {
result = view.readStillImage();
});
@@ -116,7 +125,7 @@ TEST(API, ZoomHistory) {
map.setZoom(1.0);
PremultipliedImage result;
map.renderStill(view, [&](std::exception_ptr) {
map.renderStill([&](std::exception_ptr) {
result = view.readStillImage();
});