add icon render test
This commit is contained in:
@@ -52,6 +52,7 @@ private:
|
||||
|
||||
private:
|
||||
Map ↦
|
||||
std::string url;
|
||||
std::string body;
|
||||
std::string image;
|
||||
std::atomic<bool> loaded;
|
||||
|
||||
@@ -32,6 +32,7 @@ enum class Event : uint8_t {
|
||||
ParseTile,
|
||||
Render,
|
||||
HttpRequest,
|
||||
Sprite,
|
||||
};
|
||||
|
||||
LLMR_DEFINE_ENUM_CLASS(EventClass, Event, {
|
||||
@@ -42,6 +43,7 @@ LLMR_DEFINE_ENUM_CLASS(EventClass, Event, {
|
||||
{ Event::ParseTile, "ParseTile" },
|
||||
{ Event::Render, "Render" },
|
||||
{ Event::HttpRequest, "HttpRequest" },
|
||||
{ Event::Sprite, "Sprite" },
|
||||
{ Event(-1), "Unknown" },
|
||||
});
|
||||
|
||||
|
||||
@@ -97,6 +97,7 @@ void Map::run() {
|
||||
// If the map rendering wasn't started asynchronously, we perform one render
|
||||
// *after* all events have been processed.
|
||||
if (!async) {
|
||||
prepare();
|
||||
render();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <llmr/map/sprite.hpp>
|
||||
#include <llmr/map/map.hpp>
|
||||
#include <llmr/util/raster.hpp>
|
||||
#include <llmr/platform/log.hpp>
|
||||
|
||||
#include <string>
|
||||
#include <llmr/platform/platform.hpp>
|
||||
@@ -27,6 +28,8 @@ Sprite::Sprite(Map &map, float pixelRatio)
|
||||
}
|
||||
|
||||
void Sprite::load(const std::string& base_url) {
|
||||
loaded = false;
|
||||
url = base_url;
|
||||
std::shared_ptr<Sprite> sprite = shared_from_this();
|
||||
|
||||
std::string suffix = (pixelRatio > 1 ? "@2x" : "");
|
||||
@@ -53,12 +56,12 @@ void Sprite::load(const std::string& base_url) {
|
||||
}
|
||||
|
||||
void Sprite::complete(std::shared_ptr<Sprite> &sprite) {
|
||||
if (sprite->raster && sprite->pos.size()) {
|
||||
const bool raster = bool(sprite->raster);
|
||||
const bool json = bool(sprite->pos.size());
|
||||
if (raster && json && !sprite->loaded) {
|
||||
sprite->loaded = true;
|
||||
sprite->map.update();
|
||||
#if defined(DEBUG)
|
||||
fprintf(stderr, "sprite loaded\n");
|
||||
#endif
|
||||
Log::Info(Event::Sprite, "loaded %s", sprite->url.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -61,11 +61,11 @@ bool FilterComparison::Instance::compare(const std::forward_list<Value> &propert
|
||||
switch (op) {
|
||||
case Operator::Equal:
|
||||
for (const Value &property_value : property_values) {
|
||||
if (!includes(property_value, util::relaxed_equal)) {
|
||||
return false;
|
||||
if (includes(property_value, util::relaxed_equal)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
case Operator::NotEqual:
|
||||
for (const Value &property_value : property_values) {
|
||||
if (includes(property_value, util::relaxed_equal)) {
|
||||
|
||||
@@ -15,7 +15,7 @@ void write_file(const std::string &filename, const std::string &data) {
|
||||
fwrite(data.data(), sizeof(std::string::value_type), data.size(), fd);
|
||||
fclose(fd);
|
||||
} else {
|
||||
fprintf(stderr, "Failed to open file\n");
|
||||
throw std::runtime_error(std::string("Failed to open file ") + filename);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ std::string read_file(const std::string &filename) {
|
||||
data << file.rdbuf();
|
||||
return data.str();
|
||||
} else {
|
||||
throw std::runtime_error("Cannot read file " + filename);
|
||||
throw std::runtime_error(std::string("Cannot read file ") + filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
9
test/fixtures/fixture_log.cpp
vendored
9
test/fixtures/fixture_log.cpp
vendored
@@ -24,6 +24,7 @@ std::vector<FixtureLogBackend::LogMessage> FixtureLogBackend::unchecked() const
|
||||
for (const LogMessage &msg : messages) {
|
||||
if (!msg.checked) {
|
||||
unchecked.push_back(msg);
|
||||
msg.checked = true;
|
||||
}
|
||||
}
|
||||
return unchecked;
|
||||
@@ -37,10 +38,10 @@ std::vector<FixtureLogBackend::LogMessage> FixtureLogBackend::unchecked() const
|
||||
}
|
||||
|
||||
::std::ostream& operator<<(::std::ostream& os, const FixtureLogBackend::LogMessage& message) {
|
||||
os << "[\"" << message.severity.get() << "\", \"" << message.event.get();
|
||||
if (message.code) os << "\", " << message.code.get();
|
||||
if (message.msg) os << ", \"" << message.msg.get();
|
||||
return os << "\"]" << std::endl;
|
||||
os << "[\"" << message.severity.get() << "\", \"" << message.event.get() << "\"";
|
||||
if (message.code) os << ", " << message.code.get();
|
||||
if (message.msg) os << ", \"" << message.msg.get() << "\"";
|
||||
return os << "]" << std::endl;
|
||||
}
|
||||
|
||||
}
|
||||
18
test/fixtures/styles/icons.info.json
vendored
Normal file
18
test/fixtures/styles/icons.info.json
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"default": {
|
||||
"zoom": 14,
|
||||
"center": [52.499167, 13.418056],
|
||||
"height": 256,
|
||||
"log": [
|
||||
[1, "INFO", "HttpRequest", 200, "sprites/outdoors.json"],
|
||||
[1, "INFO", "HttpRequest", 200, "sprites/outdoors.png"],
|
||||
[1, "INFO", "HttpRequest", 200, "tiles/14-8803-5375.vector.pbf"],
|
||||
[1, "INFO", "HttpRequest", 200, "tiles/14-8802-5375.vector.pbf"],
|
||||
[1, "INFO", "HttpRequest", 200, "tiles/14-8803-5374.vector.pbf"],
|
||||
[1, "INFO", "HttpRequest", 200, "tiles/14-8802-5374.vector.pbf"],
|
||||
[6, "INFO", "HttpRequest"],
|
||||
|
||||
[1, "INFO", "Sprite", "loaded sprites/outdoors"]
|
||||
]
|
||||
}
|
||||
}
|
||||
33
test/fixtures/styles/icons.style.json
vendored
Normal file
33
test/fixtures/styles/icons.style.json
vendored
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"version": 3,
|
||||
"sources": {
|
||||
"mapbox": {
|
||||
"type": "vector",
|
||||
"url": "tiles/{z}-{x}-{y}.vector.pbf",
|
||||
"tileSize": 512,
|
||||
"maxZoom": 14
|
||||
}
|
||||
},
|
||||
"sprite": "sprites/outdoors",
|
||||
"layers": [
|
||||
{
|
||||
"id": "background",
|
||||
"type": "background",
|
||||
"style": {
|
||||
"background-color": "green"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "poi",
|
||||
"source": "mapbox",
|
||||
"source-layer": "poi_label",
|
||||
"type": "icon",
|
||||
"filter": { "maki": "restaurant" },
|
||||
"render": {
|
||||
"icon-image": "{maki}-12",
|
||||
"icon-size": 12,
|
||||
"icon-allow-overlap": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
test/fixtures/styles/icons/default.expected.png
vendored
Normal file
BIN
test/fixtures/styles/icons/default.expected.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.4 KiB |
Reference in New Issue
Block a user