summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzmiao <miao.zhao@mapbox.com>2020-01-29 12:46:16 +0200
committerzmiao <miao.zhao@mapbox.com>2020-02-12 12:24:05 +0200
commit3e99c08ea610d791b21f1631308451687c464d98 (patch)
treec7f3e20ad9ddc161ab3378d37bde9aa31675da83
parent4f18d5fa92df175ac30f856a9273a00349b56cc3 (diff)
downloadqtlocation-mapboxgl-3e99c08ea610d791b21f1631308451687c464d98.tar.gz
Enable parse within expression
Add geometry type checker
-rw-r--r--include/mbgl/style/expression/expression.hpp18
-rw-r--r--include/mbgl/style/expression/within.hpp43
-rw-r--r--next/CMakeLists.txt1010
-rw-r--r--src/core-files.json817
-rw-r--r--src/mbgl/layout/layout.hpp3
-rw-r--r--src/mbgl/layout/pattern_layout.hpp9
-rw-r--r--src/mbgl/layout/symbol_feature.hpp14
-rw-r--r--src/mbgl/layout/symbol_layout.cpp69
-rw-r--r--src/mbgl/layout/symbol_layout.hpp11
-rw-r--r--src/mbgl/renderer/bucket.hpp8
-rw-r--r--src/mbgl/renderer/buckets/circle_bucket.cpp10
-rw-r--r--src/mbgl/renderer/buckets/circle_bucket.hpp8
-rw-r--r--src/mbgl/renderer/buckets/fill_bucket.cpp14
-rw-r--r--src/mbgl/renderer/buckets/fill_bucket.hpp8
-rw-r--r--src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp14
-rw-r--r--src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp8
-rw-r--r--src/mbgl/renderer/buckets/heatmap_bucket.cpp10
-rw-r--r--src/mbgl/renderer/buckets/heatmap_bucket.hpp8
-rw-r--r--src/mbgl/renderer/buckets/line_bucket.cpp14
-rw-r--r--src/mbgl/renderer/buckets/line_bucket.hpp8
-rw-r--r--src/mbgl/renderer/paint_property_binder.hpp70
-rw-r--r--src/mbgl/style/expression/is_constant.cpp4
-rw-r--r--src/mbgl/style/expression/parsing_context.cpp2
-rw-r--r--src/mbgl/style/expression/within.cpp139
-rw-r--r--src/mbgl/style/properties.hpp5
-rw-r--r--src/mbgl/tile/geometry_tile_data.cpp2
-rw-r--r--src/mbgl/tile/geometry_tile_data.hpp2
-rw-r--r--src/mbgl/tile/geometry_tile_worker.cpp7
-rw-r--r--test/gl/bucket.test.cpp40
29 files changed, 2280 insertions, 95 deletions
diff --git a/include/mbgl/style/expression/expression.hpp b/include/mbgl/style/expression/expression.hpp
index 9893daa8c4..f19f64c1e7 100644
--- a/include/mbgl/style/expression/expression.hpp
+++ b/include/mbgl/style/expression/expression.hpp
@@ -1,11 +1,12 @@
#pragma once
-#include <mbgl/util/optional.hpp>
-#include <mbgl/util/variant.hpp>
-#include <mbgl/util/color.hpp>
+#include <mbgl/style/expression/parsing_context.hpp>
#include <mbgl/style/expression/type.hpp>
#include <mbgl/style/expression/value.hpp>
-#include <mbgl/style/expression/parsing_context.hpp>
+#include <mbgl/tile/tile_id.hpp>
+#include <mbgl/util/color.hpp>
+#include <mbgl/util/optional.hpp>
+#include <mbgl/util/variant.hpp>
#include <array>
#include <vector>
@@ -53,8 +54,14 @@ public:
return *this;
};
+ EvaluationContext& withCanonicalTileID(const mbgl::CanonicalTileID& canonical_) noexcept {
+ canonical = canonical_;
+ return *this;
+ };
+
optional<float> zoom;
optional<mbgl::Value> accumulated;
+ optional<mbgl::CanonicalTileID> canonical;
GeometryTileFeature const * feature = nullptr;
optional<double> colorRampParameter;
// Contains formatted section object, std::unordered_map<std::string, Value>.
@@ -160,7 +167,8 @@ enum class Kind : int32_t {
FormatExpression,
FormatSectionOverride,
NumberFormat,
- ImageExpression
+ ImageExpression,
+ Within
};
class Expression {
diff --git a/include/mbgl/style/expression/within.hpp b/include/mbgl/style/expression/within.hpp
new file mode 100644
index 0000000000..5e2b5e0671
--- /dev/null
+++ b/include/mbgl/style/expression/within.hpp
@@ -0,0 +1,43 @@
+#pragma once
+
+#include <mbgl/style/conversion.hpp>
+#include <mbgl/style/expression/expression.hpp>
+#include <mbgl/style/expression/parsing_context.hpp>
+#include <mbgl/util/geojson.hpp>
+
+#include <memory>
+
+namespace mbgl {
+namespace style {
+namespace expression {
+
+class Within : public Expression {
+public:
+ Within(GeoJSON& geojson) : Expression(Kind::Within, type::Boolean), geoJSONSource(geojson) {}
+
+ EvaluationResult evaluate(const EvaluationContext&) const override;
+
+ static ParseResult parse(const mbgl::style::conversion::Convertible&, ParsingContext&);
+
+ void eachChild(const std::function<void(const Expression&)>&) const override {}
+
+ bool operator==(const Expression& e) const override {
+ if (e.getKind() == Kind::Within) {
+ auto rhs = static_cast<const Within*>(&e);
+ return geoJSONSource == rhs->geoJSONSource;
+ }
+ return false;
+ }
+
+ std::vector<optional<Value>> possibleOutputs() const override { return {{false}}; }
+
+ mbgl::Value serialize() const override;
+ std::string getOperator() const override { return "Within"; }
+
+private:
+ GeoJSON geoJSONSource;
+};
+
+} // namespace expression
+} // namespace style
+} // namespace mbgl
diff --git a/next/CMakeLists.txt b/next/CMakeLists.txt
new file mode 100644
index 0000000000..ab63a55aeb
--- /dev/null
+++ b/next/CMakeLists.txt
@@ -0,0 +1,1010 @@
+cmake_minimum_required(VERSION 3.10 FATAL_ERROR)
+project("Mapbox GL Native" LANGUAGES CXX C)
+
+# TODO: Remove when PROJECT_SOURCE_DIR becomes the actual root.
+set(MBGL_ROOT ${PROJECT_SOURCE_DIR}/..)
+
+set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER Core)
+
+set(
+ MEMORYCHECK_COMMAND_OPTIONS
+ "--leak-check=full --gen-suppressions=all --error-exitcode=1 --suppressions=${MBGL_ROOT}/scripts/valgrind.sup"
+)
+
+include(CTest)
+
+if(NOT CMAKE_BUILD_TYPE)
+ set(CMAKE_BUILD_TYPE Release)
+endif()
+
+option(MBGL_WITH_CORE_ONLY "Build only the core bits, no platform code" OFF)
+option(MBGL_WITH_COVERAGE "Enable code coverage collection" OFF)
+option(MBGL_WITH_QT "Build Mapbox GL Qt bindings" OFF)
+option(MBGL_WITH_SANITIZER "Use [address|thread|undefined] here" OFF)
+option(MBGL_WITH_RTTI "Compile with runtime type information" OFF)
+option(MBGL_WITH_OPENGL "Build with OpenGL renderer" ON)
+
+add_library(
+ mbgl-compiler-options INTERFACE
+)
+
+target_compile_options(
+ mbgl-compiler-options
+ INTERFACE
+ $<$<BOOL:${MBGL_WITH_COVERAGE}>:--coverage>
+ $<$<BOOL:${MBGL_WITH_SANITIZER}>:-DSANITIZE>
+ $<$<BOOL:${MBGL_WITH_SANITIZER}>:-fno-omit-frame-pointer>
+ $<$<BOOL:${MBGL_WITH_SANITIZER}>:-fno-optimize-sibling-calls>
+ $<$<STREQUAL:${MBGL_WITH_SANITIZER},address>:-fsanitize=address>
+ $<$<STREQUAL:${MBGL_WITH_SANITIZER},thread>:-fsanitize=thread>
+ $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=implicit-conversion>
+ $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=undefined>
+ $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=unsigned-integer-overflow>
+ $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<BOOL:${MBGL_WITH_RTTI}>>>:-fno-rtti>
+ $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<PLATFORM_ID:Windows>>>:-Wall>
+ $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<PLATFORM_ID:Windows>>>:-Wshadow>
+ $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<PLATFORM_ID:Windows>>>:-Wextra>
+ $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<NOT:$<PLATFORM_ID:Windows>>>:-Werror>
+ $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<PLATFORM_ID:Android>>:-Wno-error=tautological-constant-compare>
+ $<$<CXX_COMPILER_ID:GNU>:-Wno-error=maybe-uninitialized>
+ $<$<CXX_COMPILER_ID:GNU>:-Wno-error=return-type>
+ $<$<CXX_COMPILER_ID:GNU>:-Wno-error=unknown-pragmas>
+ $<$<CXX_COMPILER_ID:AppleClang>:-Wno-error=deprecated-declarations>
+ $<$<CXX_COMPILER_ID:AppleClang>:-Wno-error=unused-parameter>
+ $<$<CXX_COMPILER_ID:AppleClang>:-Wno-error=unused-property-ivar>
+)
+
+target_link_libraries(
+ mbgl-compiler-options
+ INTERFACE
+ $<$<BOOL:${MBGL_WITH_COVERAGE}>:--coverage>
+ $<$<STREQUAL:${MBGL_WITH_SANITIZER},address>:-fsanitize=address>
+ $<$<STREQUAL:${MBGL_WITH_SANITIZER},thread>:-fsanitize=thread>
+ $<$<STREQUAL:${MBGL_WITH_SANITIZER},undefined>:-fsanitize=undefined>
+)
+
+cmake_policy(SET CMP0063 NEW)
+set(CMAKE_CXX_EXTENSIONS OFF)
+set(CMAKE_CXX_STANDARD 14)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_VISIBILITY_PRESET hidden)
+set(CMAKE_C_EXTENSIONS OFF)
+set(CMAKE_C_STANDARD 99)
+set(CMAKE_C_STANDARD_REQUIRED ON)
+set(CMAKE_C_VISIBILITY_PRESET hidden)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL ON)
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
+set(CMAKE_VISIBILITY_INLINES_HIDDEN 1)
+
+if(MBGL_WITH_QT)
+ find_package(Qt5Core REQUIRED)
+ set(CMAKE_AUTOMOC ON)
+ set(CMAKE_AUTORCC ON)
+endif()
+
+add_library(
+ mbgl-core STATIC
+ ${MBGL_ROOT}/include/mbgl/actor/actor.hpp
+ ${MBGL_ROOT}/include/mbgl/actor/actor_ref.hpp
+ ${MBGL_ROOT}/include/mbgl/actor/aspiring_actor.hpp
+ ${MBGL_ROOT}/include/mbgl/actor/established_actor.hpp
+ ${MBGL_ROOT}/include/mbgl/actor/mailbox.hpp
+ ${MBGL_ROOT}/include/mbgl/actor/message.hpp
+ ${MBGL_ROOT}/include/mbgl/actor/scheduler.hpp
+ ${MBGL_ROOT}/include/mbgl/annotation/annotation.hpp
+ ${MBGL_ROOT}/include/mbgl/gfx/backend_scope.hpp
+ ${MBGL_ROOT}/include/mbgl/gfx/renderable.hpp
+ ${MBGL_ROOT}/include/mbgl/gfx/renderer_backend.hpp
+ ${MBGL_ROOT}/include/mbgl/gfx/rendering_stats.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/background_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/circle_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/fill_extrusion_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/fill_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/heatmap_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/hillshade_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/layer_manager.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/line_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/raster_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/layermanager/symbol_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/map/bound_options.hpp
+ ${MBGL_ROOT}/include/mbgl/map/camera.hpp
+ ${MBGL_ROOT}/include/mbgl/map/change.hpp
+ ${MBGL_ROOT}/include/mbgl/map/map.hpp
+ ${MBGL_ROOT}/include/mbgl/map/map_observer.hpp
+ ${MBGL_ROOT}/include/mbgl/map/map_options.hpp
+ ${MBGL_ROOT}/include/mbgl/map/mode.hpp
+ ${MBGL_ROOT}/include/mbgl/map/projection_mode.hpp
+ ${MBGL_ROOT}/include/mbgl/math/clamp.hpp
+ ${MBGL_ROOT}/include/mbgl/math/log2.hpp
+ ${MBGL_ROOT}/include/mbgl/math/minmax.hpp
+ ${MBGL_ROOT}/include/mbgl/math/wrap.hpp
+ ${MBGL_ROOT}/include/mbgl/platform/settings.hpp
+ ${MBGL_ROOT}/include/mbgl/platform/thread.hpp
+ ${MBGL_ROOT}/include/mbgl/renderer/query.hpp
+ ${MBGL_ROOT}/include/mbgl/renderer/renderer.hpp
+ ${MBGL_ROOT}/include/mbgl/renderer/renderer_frontend.hpp
+ ${MBGL_ROOT}/include/mbgl/renderer/renderer_observer.hpp
+ ${MBGL_ROOT}/include/mbgl/renderer/renderer_state.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/database_file_source.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/file_source.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/file_source_manager.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/network_status.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/offline.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/online_file_source.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/resource.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/resource_options.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/resource_transform.hpp
+ ${MBGL_ROOT}/include/mbgl/storage/response.hpp
+ ${MBGL_ROOT}/include/mbgl/style/color_ramp_property_value.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/color_ramp_property_value.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/constant.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/coordinate.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/custom_geometry_source_options.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/filter.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/function.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/geojson.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/geojson_options.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/get_json_type.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/light.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/position.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/property_value.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/source.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/tileset.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion/transition_options.hpp
+ ${MBGL_ROOT}/include/mbgl/style/conversion_impl.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/assertion.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/at.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/boolean_operator.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/case.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/check_subtype.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/coalesce.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/coercion.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/collator.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/collator_expression.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/comparison.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/compound_expression.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/dsl.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/error.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/expression.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/find_zoom_curve.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/format_expression.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/format_section_override.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/formatted.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/get_covering_stops.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/image.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/image_expression.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/interpolate.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/interpolator.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/is_constant.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/is_expression.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/length.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/let.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/literal.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/match.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/number_format.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/parsing_context.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/step.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/type.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/value.hpp
+ ${MBGL_ROOT}/include/mbgl/style/expression/within.hpp
+ ${MBGL_ROOT}/include/mbgl/style/filter.hpp
+ ${MBGL_ROOT}/include/mbgl/style/image.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layer_properties.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/background_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/circle_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/fill_extrusion_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/fill_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/heatmap_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/hillshade_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/line_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/raster_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/layers/symbol_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/style/light.hpp
+ ${MBGL_ROOT}/include/mbgl/style/position.hpp
+ ${MBGL_ROOT}/include/mbgl/style/property_expression.hpp
+ ${MBGL_ROOT}/include/mbgl/style/property_value.hpp
+ ${MBGL_ROOT}/include/mbgl/style/source.hpp
+ ${MBGL_ROOT}/include/mbgl/style/sources/custom_geometry_source.hpp
+ ${MBGL_ROOT}/include/mbgl/style/sources/geojson_source.hpp
+ ${MBGL_ROOT}/include/mbgl/style/sources/image_source.hpp
+ ${MBGL_ROOT}/include/mbgl/style/sources/raster_dem_source.hpp
+ ${MBGL_ROOT}/include/mbgl/style/sources/raster_source.hpp
+ ${MBGL_ROOT}/include/mbgl/style/sources/vector_source.hpp
+ ${MBGL_ROOT}/include/mbgl/style/style.hpp
+ ${MBGL_ROOT}/include/mbgl/style/style_property.hpp
+ ${MBGL_ROOT}/include/mbgl/style/transition_options.hpp
+ ${MBGL_ROOT}/include/mbgl/style/types.hpp
+ ${MBGL_ROOT}/include/mbgl/style/undefined.hpp
+ ${MBGL_ROOT}/include/mbgl/tile/tile_id.hpp
+ ${MBGL_ROOT}/include/mbgl/tile/tile_necessity.hpp
+ ${MBGL_ROOT}/include/mbgl/util/async_request.hpp
+ ${MBGL_ROOT}/include/mbgl/util/async_task.hpp
+ ${MBGL_ROOT}/include/mbgl/util/char_array_buffer.hpp
+ ${MBGL_ROOT}/include/mbgl/util/chrono.hpp
+ ${MBGL_ROOT}/include/mbgl/util/color.hpp
+ ${MBGL_ROOT}/include/mbgl/util/compression.hpp
+ ${MBGL_ROOT}/include/mbgl/util/constants.hpp
+ ${MBGL_ROOT}/include/mbgl/util/convert.hpp
+ ${MBGL_ROOT}/include/mbgl/util/enum.hpp
+ ${MBGL_ROOT}/include/mbgl/util/event.hpp
+ ${MBGL_ROOT}/include/mbgl/util/exception.hpp
+ ${MBGL_ROOT}/include/mbgl/util/expected.hpp
+ ${MBGL_ROOT}/include/mbgl/util/feature.hpp
+ ${MBGL_ROOT}/include/mbgl/util/font_stack.hpp
+ ${MBGL_ROOT}/include/mbgl/util/geo.hpp
+ ${MBGL_ROOT}/include/mbgl/util/geojson.hpp
+ ${MBGL_ROOT}/include/mbgl/util/geometry.hpp
+ ${MBGL_ROOT}/include/mbgl/util/ignore.hpp
+ ${MBGL_ROOT}/include/mbgl/util/image.hpp
+ ${MBGL_ROOT}/include/mbgl/util/immutable.hpp
+ ${MBGL_ROOT}/include/mbgl/util/indexed_tuple.hpp
+ ${MBGL_ROOT}/include/mbgl/util/interpolate.hpp
+ ${MBGL_ROOT}/include/mbgl/util/logging.hpp
+ ${MBGL_ROOT}/include/mbgl/util/noncopyable.hpp
+ ${MBGL_ROOT}/include/mbgl/util/optional.hpp
+ ${MBGL_ROOT}/include/mbgl/util/platform.hpp
+ ${MBGL_ROOT}/include/mbgl/util/premultiply.hpp
+ ${MBGL_ROOT}/include/mbgl/util/projection.hpp
+ ${MBGL_ROOT}/include/mbgl/util/range.hpp
+ ${MBGL_ROOT}/include/mbgl/util/run_loop.hpp
+ ${MBGL_ROOT}/include/mbgl/util/size.hpp
+ ${MBGL_ROOT}/include/mbgl/util/string.hpp
+ ${MBGL_ROOT}/include/mbgl/util/thread.hpp
+ ${MBGL_ROOT}/include/mbgl/util/tileset.hpp
+ ${MBGL_ROOT}/include/mbgl/util/timer.hpp
+ ${MBGL_ROOT}/include/mbgl/util/traits.hpp
+ ${MBGL_ROOT}/include/mbgl/util/type_list.hpp
+ ${MBGL_ROOT}/include/mbgl/util/unitbezier.hpp
+ ${MBGL_ROOT}/include/mbgl/util/util.hpp
+ ${MBGL_ROOT}/include/mbgl/util/variant.hpp
+ ${MBGL_ROOT}/include/mbgl/util/work_request.hpp
+ ${MBGL_ROOT}/include/mbgl/util/work_task.hpp
+ ${MBGL_ROOT}/include/mbgl/util/work_task_impl.hpp
+ ${MBGL_ROOT}/src/csscolorparser/csscolorparser.cpp
+ ${MBGL_ROOT}/src/csscolorparser/csscolorparser.hpp
+ ${MBGL_ROOT}/src/mbgl/actor/mailbox.cpp
+ ${MBGL_ROOT}/src/mbgl/actor/scheduler.cpp
+ ${MBGL_ROOT}/src/mbgl/algorithm/update_renderables.hpp
+ ${MBGL_ROOT}/src/mbgl/algorithm/update_tile_masks.hpp
+ ${MBGL_ROOT}/src/mbgl/annotation/annotation_manager.cpp
+ ${MBGL_ROOT}/src/mbgl/annotation/annotation_manager.hpp
+ ${MBGL_ROOT}/src/mbgl/annotation/annotation_source.cpp
+ ${MBGL_ROOT}/src/mbgl/annotation/annotation_source.hpp
+ ${MBGL_ROOT}/src/mbgl/annotation/annotation_tile.cpp
+ ${MBGL_ROOT}/src/mbgl/annotation/annotation_tile.hpp
+ ${MBGL_ROOT}/src/mbgl/annotation/fill_annotation_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/annotation/fill_annotation_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/annotation/line_annotation_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/annotation/line_annotation_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/annotation/render_annotation_source.cpp
+ ${MBGL_ROOT}/src/mbgl/annotation/render_annotation_source.hpp
+ ${MBGL_ROOT}/src/mbgl/annotation/shape_annotation_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/annotation/shape_annotation_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/annotation/symbol_annotation_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/annotation/symbol_annotation_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/geometry/anchor.hpp
+ ${MBGL_ROOT}/src/mbgl/geometry/debug_font_data.hpp
+ ${MBGL_ROOT}/src/mbgl/geometry/dem_data.cpp
+ ${MBGL_ROOT}/src/mbgl/geometry/dem_data.hpp
+ ${MBGL_ROOT}/src/mbgl/geometry/feature_index.cpp
+ ${MBGL_ROOT}/src/mbgl/geometry/feature_index.hpp
+ ${MBGL_ROOT}/src/mbgl/geometry/line_atlas.cpp
+ ${MBGL_ROOT}/src/mbgl/geometry/line_atlas.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/attribute.cpp
+ ${MBGL_ROOT}/src/mbgl/gfx/attribute.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/color_mode.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/command_encoder.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/context.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/cull_face_mode.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/debug_group.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/depth_mode.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/draw_mode.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/draw_scope.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/index_buffer.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/index_vector.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/offscreen_texture.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/program.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/render_pass.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/renderbuffer.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/renderer_backend.cpp
+ ${MBGL_ROOT}/src/mbgl/gfx/rendering_stats.cpp
+ ${MBGL_ROOT}/src/mbgl/gfx/stencil_mode.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/texture.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/types.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/uniform.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/upload_pass.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/vertex_buffer.hpp
+ ${MBGL_ROOT}/src/mbgl/gfx/vertex_vector.hpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/background_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/circle_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/fill_extrusion_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/fill_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/heatmap_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/hillshade_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/layer_manager.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/line_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/raster_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layermanager/symbol_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/layout/clip_lines.cpp
+ ${MBGL_ROOT}/src/mbgl/layout/clip_lines.hpp
+ ${MBGL_ROOT}/src/mbgl/layout/layout.hpp
+ ${MBGL_ROOT}/src/mbgl/layout/merge_lines.cpp
+ ${MBGL_ROOT}/src/mbgl/layout/merge_lines.hpp
+ ${MBGL_ROOT}/src/mbgl/layout/pattern_layout.hpp
+ ${MBGL_ROOT}/src/mbgl/layout/symbol_feature.hpp
+ ${MBGL_ROOT}/src/mbgl/layout/symbol_instance.cpp
+ ${MBGL_ROOT}/src/mbgl/layout/symbol_instance.hpp
+ ${MBGL_ROOT}/src/mbgl/layout/symbol_layout.cpp
+ ${MBGL_ROOT}/src/mbgl/layout/symbol_layout.hpp
+ ${MBGL_ROOT}/src/mbgl/layout/symbol_projection.cpp
+ ${MBGL_ROOT}/src/mbgl/layout/symbol_projection.hpp
+ ${MBGL_ROOT}/src/mbgl/map/map.cpp
+ ${MBGL_ROOT}/src/mbgl/map/map_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/map/map_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/map/map_options.cpp
+ ${MBGL_ROOT}/src/mbgl/map/transform.cpp
+ ${MBGL_ROOT}/src/mbgl/map/transform.hpp
+ ${MBGL_ROOT}/src/mbgl/map/transform_state.cpp
+ ${MBGL_ROOT}/src/mbgl/map/transform_state.hpp
+ ${MBGL_ROOT}/src/mbgl/map/zoom_history.hpp
+ ${MBGL_ROOT}/src/mbgl/math/log2.cpp
+ ${MBGL_ROOT}/src/mbgl/platform/settings.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/attributes.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/background_pattern_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/background_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/background_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/circle_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/circle_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/clipping_mask_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/clipping_mask_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/collision_box_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/collision_box_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/collision_circle_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/debug_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/debug_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/fill_extrusion_pattern_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/fill_extrusion_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/fill_extrusion_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/fill_outline_pattern_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/fill_outline_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/fill_pattern_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/fill_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/fill_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/heatmap_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/heatmap_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/heatmap_texture_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/heatmap_texture_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/hillshade_prepare_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/hillshade_prepare_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/hillshade_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/hillshade_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/line_gradient_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/line_pattern_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/line_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/line_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/line_sdf_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/program_parameters.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/program_parameters.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/programs.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/programs.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/raster_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/raster_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/segment.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/symbol_icon_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/symbol_program.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/symbol_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/symbol_sdf_icon_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/symbol_sdf_text_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/symbol_text_and_icon_program.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/textures.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/uniforms.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/backend_scope.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/bucket_parameters.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/bucket_parameters.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/circle_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/circle_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/debug_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/debug_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/fill_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/fill_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/heatmap_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/heatmap_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/hillshade_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/hillshade_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/line_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/line_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/raster_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/raster_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/symbol_bucket.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/buckets/symbol_bucket.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/cross_faded_property_evaluator.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/cross_faded_property_evaluator.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/data_driven_property_evaluator.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/group_by_layout.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/group_by_layout.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/image_atlas.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/image_atlas.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/image_manager.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/image_manager.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/image_manager_observer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_background_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_background_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_circle_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_circle_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_fill_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_fill_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_heatmap_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_heatmap_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_hillshade_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_hillshade_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_line_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_line_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_raster_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_raster_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_symbol_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/layers/render_symbol_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/paint_parameters.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/paint_parameters.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/paint_property_binder.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/paint_property_statistics.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/pattern_atlas.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/pattern_atlas.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/possibly_evaluated_property_value.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/property_evaluation_parameters.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/property_evaluator.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_light.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_light.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_orchestrator.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_orchestrator.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_pass.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_source.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_source.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_source_observer.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_static_data.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_static_data.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_tile.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_tile.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/render_tree.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/renderer.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/renderer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/renderer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/renderer_state.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_custom_geometry_source.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_geojson_source.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_geojson_source.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_image_source.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_image_source.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_raster_dem_source.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_raster_dem_source.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_raster_source.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_raster_source.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_tile_source.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_tile_source.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_vector_source.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/sources/render_vector_source.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/source_state.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/source_state.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/style_diff.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/style_diff.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/tile_mask.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/tile_parameters.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/tile_pyramid.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/tile_pyramid.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/tile_render_data.cpp
+ ${MBGL_ROOT}/src/mbgl/renderer/tile_render_data.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/transition_parameters.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/update_parameters.hpp
+ ${MBGL_ROOT}/src/mbgl/renderer/upload_parameters.hpp
+ ${MBGL_ROOT}/src/mbgl/sprite/sprite_loader.cpp
+ ${MBGL_ROOT}/src/mbgl/sprite/sprite_loader.hpp
+ ${MBGL_ROOT}/src/mbgl/sprite/sprite_loader_observer.hpp
+ ${MBGL_ROOT}/src/mbgl/sprite/sprite_loader_worker.cpp
+ ${MBGL_ROOT}/src/mbgl/sprite/sprite_loader_worker.hpp
+ ${MBGL_ROOT}/src/mbgl/sprite/sprite_parser.cpp
+ ${MBGL_ROOT}/src/mbgl/sprite/sprite_parser.hpp
+ ${MBGL_ROOT}/src/mbgl/storage/asset_file_source.hpp
+ ${MBGL_ROOT}/src/mbgl/storage/file_source_manager.cpp
+ ${MBGL_ROOT}/src/mbgl/storage/http_file_source.hpp
+ ${MBGL_ROOT}/src/mbgl/storage/local_file_source.hpp
+ ${MBGL_ROOT}/src/mbgl/storage/main_resource_loader.hpp
+ ${MBGL_ROOT}/src/mbgl/storage/network_status.cpp
+ ${MBGL_ROOT}/src/mbgl/storage/resource.cpp
+ ${MBGL_ROOT}/src/mbgl/storage/resource_options.cpp
+ ${MBGL_ROOT}/src/mbgl/storage/resource_transform.cpp
+ ${MBGL_ROOT}/src/mbgl/storage/response.cpp
+ ${MBGL_ROOT}/src/mbgl/style/collection.hpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/color_ramp_property_value.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/constant.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/coordinate.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/custom_geometry_source_options.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/filter.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/function.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/geojson.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/geojson_options.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/get_json_type.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/json.hpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/light.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/position.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/property_value.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/source.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/stringify.hpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/tileset.cpp
+ ${MBGL_ROOT}/src/mbgl/style/conversion/transition_options.cpp
+ ${MBGL_ROOT}/src/mbgl/style/custom_tile_loader.cpp
+ ${MBGL_ROOT}/src/mbgl/style/custom_tile_loader.hpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/assertion.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/at.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/boolean_operator.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/case.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/check_subtype.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/coalesce.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/coercion.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/collator.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/collator_expression.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/comparison.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/compound_expression.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/dsl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/dsl_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/expression.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/find_zoom_curve.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/format_expression.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/formatted.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/get_covering_stops.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/image.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/image_expression.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/interpolate.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/is_constant.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/is_expression.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/length.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/let.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/literal.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/match.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/number_format.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/parsing_context.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/step.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/util.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/util.hpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/value.cpp
+ ${MBGL_ROOT}/src/mbgl/style/expression/within.cpp
+ ${MBGL_ROOT}/src/mbgl/style/filter.cpp
+ ${MBGL_ROOT}/src/mbgl/style/image.cpp
+ ${MBGL_ROOT}/src/mbgl/style/image_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/image_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layer_observer.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/background_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/background_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/background_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/background_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/background_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/circle_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/circle_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/circle_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/circle_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/circle_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_extrusion_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_extrusion_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_extrusion_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_extrusion_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_extrusion_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/fill_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/heatmap_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/heatmap_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/heatmap_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/heatmap_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/heatmap_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/hillshade_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/hillshade_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/hillshade_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/hillshade_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/hillshade_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/line_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/line_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/line_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/line_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/line_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/raster_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/raster_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/raster_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/raster_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/raster_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/symbol_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/symbol_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/symbol_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/symbol_layer_properties.cpp
+ ${MBGL_ROOT}/src/mbgl/style/layers/symbol_layer_properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/layout_property.hpp
+ ${MBGL_ROOT}/src/mbgl/style/light.cpp
+ ${MBGL_ROOT}/src/mbgl/style/light_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/light_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/light_observer.hpp
+ ${MBGL_ROOT}/src/mbgl/style/observer.hpp
+ ${MBGL_ROOT}/src/mbgl/style/paint_property.hpp
+ ${MBGL_ROOT}/src/mbgl/style/parser.cpp
+ ${MBGL_ROOT}/src/mbgl/style/parser.hpp
+ ${MBGL_ROOT}/src/mbgl/style/properties.hpp
+ ${MBGL_ROOT}/src/mbgl/style/property_expression.cpp
+ ${MBGL_ROOT}/src/mbgl/style/rapidjson_conversion.hpp
+ ${MBGL_ROOT}/src/mbgl/style/source.cpp
+ ${MBGL_ROOT}/src/mbgl/style/source_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/source_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/source_observer.hpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/custom_geometry_source.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/custom_geometry_source_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/custom_geometry_source_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/geojson_source.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/geojson_source_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/geojson_source_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/image_source.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/image_source_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/image_source_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/raster_dem_source.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/raster_source.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/raster_source_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/raster_source_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/vector_source.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/vector_source_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/sources/vector_source_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/style.cpp
+ ${MBGL_ROOT}/src/mbgl/style/style_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/style/style_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/style/types.cpp
+ ${MBGL_ROOT}/src/mbgl/text/bidi.hpp
+ ${MBGL_ROOT}/src/mbgl/text/check_max_angle.cpp
+ ${MBGL_ROOT}/src/mbgl/text/check_max_angle.hpp
+ ${MBGL_ROOT}/src/mbgl/text/collision_feature.cpp
+ ${MBGL_ROOT}/src/mbgl/text/collision_feature.hpp
+ ${MBGL_ROOT}/src/mbgl/text/collision_index.cpp
+ ${MBGL_ROOT}/src/mbgl/text/collision_index.hpp
+ ${MBGL_ROOT}/src/mbgl/text/cross_tile_symbol_index.cpp
+ ${MBGL_ROOT}/src/mbgl/text/cross_tile_symbol_index.hpp
+ ${MBGL_ROOT}/src/mbgl/text/get_anchors.cpp
+ ${MBGL_ROOT}/src/mbgl/text/get_anchors.hpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph.cpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph.hpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph_atlas.cpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph_atlas.hpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph_manager.cpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph_manager.hpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph_manager_observer.hpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph_pbf.cpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph_pbf.hpp
+ ${MBGL_ROOT}/src/mbgl/text/glyph_range.hpp
+ ${MBGL_ROOT}/src/mbgl/text/language_tag.cpp
+ ${MBGL_ROOT}/src/mbgl/text/language_tag.hpp
+ ${MBGL_ROOT}/src/mbgl/text/local_glyph_rasterizer.hpp
+ ${MBGL_ROOT}/src/mbgl/text/placement.cpp
+ ${MBGL_ROOT}/src/mbgl/text/placement.hpp
+ ${MBGL_ROOT}/src/mbgl/text/quads.cpp
+ ${MBGL_ROOT}/src/mbgl/text/quads.hpp
+ ${MBGL_ROOT}/src/mbgl/text/shaping.cpp
+ ${MBGL_ROOT}/src/mbgl/text/shaping.hpp
+ ${MBGL_ROOT}/src/mbgl/text/tagged_string.cpp
+ ${MBGL_ROOT}/src/mbgl/text/tagged_string.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/custom_geometry_tile.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/custom_geometry_tile.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/geojson_tile.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/geojson_tile.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/geojson_tile_data.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/geometry_tile.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/geometry_tile.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/geometry_tile_data.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/geometry_tile_data.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/geometry_tile_worker.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/geometry_tile_worker.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/raster_dem_tile.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/raster_dem_tile.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/raster_dem_tile_worker.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/raster_dem_tile_worker.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/raster_tile.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/raster_tile.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/raster_tile_worker.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/raster_tile_worker.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile_cache.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile_cache.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile_id_hash.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile_id_io.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile_loader.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile_loader_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/tile_observer.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/vector_tile.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/vector_tile.hpp
+ ${MBGL_ROOT}/src/mbgl/tile/vector_tile_data.cpp
+ ${MBGL_ROOT}/src/mbgl/tile/vector_tile_data.hpp
+ ${MBGL_ROOT}/src/mbgl/util/chrono.cpp
+ ${MBGL_ROOT}/src/mbgl/util/color.cpp
+ ${MBGL_ROOT}/src/mbgl/util/constants.cpp
+ ${MBGL_ROOT}/src/mbgl/util/convert.cpp
+ ${MBGL_ROOT}/src/mbgl/util/dtoa.cpp
+ ${MBGL_ROOT}/src/mbgl/util/dtoa.hpp
+ ${MBGL_ROOT}/src/mbgl/util/event.cpp
+ ${MBGL_ROOT}/src/mbgl/util/font_stack.cpp
+ ${MBGL_ROOT}/src/mbgl/util/geo.cpp
+ ${MBGL_ROOT}/src/mbgl/util/geojson_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/util/grid_index.cpp
+ ${MBGL_ROOT}/src/mbgl/util/grid_index.hpp
+ ${MBGL_ROOT}/src/mbgl/util/hash.hpp
+ ${MBGL_ROOT}/src/mbgl/util/http_header.cpp
+ ${MBGL_ROOT}/src/mbgl/util/http_header.hpp
+ ${MBGL_ROOT}/src/mbgl/util/http_timeout.cpp
+ ${MBGL_ROOT}/src/mbgl/util/http_timeout.hpp
+ ${MBGL_ROOT}/src/mbgl/util/i18n.cpp
+ ${MBGL_ROOT}/src/mbgl/util/i18n.hpp
+ ${MBGL_ROOT}/src/mbgl/util/id.cpp
+ ${MBGL_ROOT}/src/mbgl/util/id.hpp
+ ${MBGL_ROOT}/src/mbgl/util/interpolate.cpp
+ ${MBGL_ROOT}/src/mbgl/util/intersection_tests.cpp
+ ${MBGL_ROOT}/src/mbgl/util/intersection_tests.hpp
+ ${MBGL_ROOT}/src/mbgl/util/io.cpp
+ ${MBGL_ROOT}/src/mbgl/util/io.hpp
+ ${MBGL_ROOT}/src/mbgl/util/literal.hpp
+ ${MBGL_ROOT}/src/mbgl/util/logging.cpp
+ ${MBGL_ROOT}/src/mbgl/util/longest_common_subsequence.hpp
+ ${MBGL_ROOT}/src/mbgl/util/mapbox.cpp
+ ${MBGL_ROOT}/src/mbgl/util/mapbox.hpp
+ ${MBGL_ROOT}/src/mbgl/util/mat2.cpp
+ ${MBGL_ROOT}/src/mbgl/util/mat2.hpp
+ ${MBGL_ROOT}/src/mbgl/util/mat3.cpp
+ ${MBGL_ROOT}/src/mbgl/util/mat3.hpp
+ ${MBGL_ROOT}/src/mbgl/util/mat4.cpp
+ ${MBGL_ROOT}/src/mbgl/util/mat4.hpp
+ ${MBGL_ROOT}/src/mbgl/util/math.hpp
+ ${MBGL_ROOT}/src/mbgl/util/premultiply.cpp
+ ${MBGL_ROOT}/src/mbgl/util/rapidjson.cpp
+ ${MBGL_ROOT}/src/mbgl/util/rapidjson.hpp
+ ${MBGL_ROOT}/src/mbgl/util/rect.hpp
+ ${MBGL_ROOT}/src/mbgl/util/std.hpp
+ ${MBGL_ROOT}/src/mbgl/util/stopwatch.cpp
+ ${MBGL_ROOT}/src/mbgl/util/stopwatch.hpp
+ ${MBGL_ROOT}/src/mbgl/util/string.cpp
+ ${MBGL_ROOT}/src/mbgl/util/thread.cpp
+ ${MBGL_ROOT}/src/mbgl/util/thread_local.hpp
+ ${MBGL_ROOT}/src/mbgl/util/thread_pool.cpp
+ ${MBGL_ROOT}/src/mbgl/util/thread_pool.hpp
+ ${MBGL_ROOT}/src/mbgl/util/tile_coordinate.hpp
+ ${MBGL_ROOT}/src/mbgl/util/tile_cover.cpp
+ ${MBGL_ROOT}/src/mbgl/util/tile_cover.hpp
+ ${MBGL_ROOT}/src/mbgl/util/tile_cover_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/util/tile_cover_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/util/tile_range.hpp
+ ${MBGL_ROOT}/src/mbgl/util/tiny_sdf.cpp
+ ${MBGL_ROOT}/src/mbgl/util/tiny_sdf.hpp
+ ${MBGL_ROOT}/src/mbgl/util/token.hpp
+ ${MBGL_ROOT}/src/mbgl/util/url.cpp
+ ${MBGL_ROOT}/src/mbgl/util/url.hpp
+ ${MBGL_ROOT}/src/mbgl/util/utf.hpp
+ ${MBGL_ROOT}/src/mbgl/util/version.cpp
+ ${MBGL_ROOT}/src/mbgl/util/version.hpp
+ ${MBGL_ROOT}/src/mbgl/util/work_request.cpp
+ ${MBGL_ROOT}/src/parsedate/parsedate.cpp
+ ${MBGL_ROOT}/src/parsedate/parsedate.hpp
+)
+
+if(MBGL_WITH_OPENGL)
+ message("-- Configuring GL-Native with OpenGL renderer backend")
+ target_compile_definitions(
+ mbgl-core
+ PRIVATE MBGL_RENDER_BACKEND_OPENGL=1
+ )
+ target_sources(
+ mbgl-core
+ PRIVATE
+ ${MBGL_ROOT}/include/mbgl/gfx/backend.hpp
+ ${MBGL_ROOT}/include/mbgl/gl/custom_layer.hpp
+ ${MBGL_ROOT}/include/mbgl/gl/custom_layer_factory.hpp
+ ${MBGL_ROOT}/include/mbgl/gl/renderable_resource.hpp
+ ${MBGL_ROOT}/include/mbgl/gl/renderer_backend.hpp
+ ${MBGL_ROOT}/include/mbgl/platform/gl_functions.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/attribute.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/attribute.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/command_encoder.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/command_encoder.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/context.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/context.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/custom_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/custom_layer_factory.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/custom_layer_impl.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/custom_layer_impl.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/debugging_extension.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/debugging_extension.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/defines.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/draw_scope_resource.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/enum.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/enum.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/extension.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/framebuffer.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/index_buffer_resource.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/index_buffer_resource.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/object.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/object.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/offscreen_texture.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/offscreen_texture.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/program.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/render_pass.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/render_pass.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/renderbuffer_resource.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/renderer_backend.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/render_custom_layer.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/render_custom_layer.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/state.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/texture.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/texture.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/texture_resource.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/texture_resource.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/types.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/uniform.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/uniform.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/upload_pass.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/upload_pass.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/value.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/value.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/vertex_array.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/vertex_array.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/vertex_array_extension.hpp
+ ${MBGL_ROOT}/src/mbgl/gl/vertex_buffer_resource.cpp
+ ${MBGL_ROOT}/src/mbgl/gl/vertex_buffer_resource.hpp
+ ${MBGL_ROOT}/src/mbgl/platform/gl_functions.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/background.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/background_pattern.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/circle.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/clipping_mask.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/collision_box.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/collision_circle.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/debug.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/fill.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/fill_extrusion.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/fill_extrusion_pattern.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/fill_outline.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/fill_outline_pattern.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/fill_pattern.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/heatmap.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/heatmap_texture.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/hillshade.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/hillshade_prepare.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/line.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/line_gradient.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/line_pattern.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/line_sdf.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/preludes.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/raster.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/shader_source.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/shader_source.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/shaders.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/shaders.hpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/symbol_icon.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/symbol_sdf_icon.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/symbol_sdf_text.cpp
+ ${MBGL_ROOT}/src/mbgl/programs/gl/symbol_text_and_icon.cpp
+ )
+endif()
+
+if(EXISTS ${MBGL_ROOT}/.git/HEAD)
+ execute_process(
+ COMMAND
+ git
+ rev-parse
+ --short=8
+ HEAD
+ WORKING_DIRECTORY ${MBGL_ROOT}
+ OUTPUT_VARIABLE MBGL_VERSION_REV
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+else()
+ set(MBGL_VERSION_REV 00000000)
+endif()
+
+set_source_files_properties(
+ ${MBGL_ROOT}/src/mbgl/util/version.cpp
+ PROPERTIES
+ COMPILE_DEFINITIONS
+ MBGL_VERSION_REV="${MBGL_VERSION_REV}"
+)
+
+target_include_directories(
+ mbgl-core
+ PRIVATE ${MBGL_ROOT}/src
+)
+
+target_include_directories(
+ mbgl-core
+ PUBLIC ${MBGL_ROOT}/include
+)
+
+if(NOT TARGET mapbox-base)
+ add_subdirectory(${PROJECT_SOURCE_DIR}/vendor/mapbox-base/mapbox)
+ add_subdirectory(${PROJECT_SOURCE_DIR}/vendor/mapbox-base/extras)
+endif(NOT TARGET mapbox-base)
+
+include(${PROJECT_SOURCE_DIR}/vendor/boost.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/earcut.hpp.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/eternal.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/geojson-vt-cpp.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/polylabel.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/protozero.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/shelf-pack-cpp.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/unique_resource.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/vector-tile.cmake)
+include(${PROJECT_SOURCE_DIR}/vendor/wagyu.cmake)
+
+target_link_libraries(
+ mbgl-core
+ PRIVATE
+ Mapbox::Base::Extras::kdbush.hpp
+ Mapbox::Base::supercluster.hpp
+ mbgl-compiler-options
+ mbgl-vendor-boost
+ mbgl-vendor-earcut.hpp
+ mbgl-vendor-eternal
+ mbgl-vendor-geojson-vt-cpp
+ mbgl-vendor-polylabel
+ mbgl-vendor-protozero
+ mbgl-vendor-shelf-pack-cpp
+ mbgl-vendor-unique_resource
+ mbgl-vendor-vector-tile
+ mbgl-vendor-wagyu
+ PUBLIC
+ Mapbox::Base::Extras::expected-lite
+ Mapbox::Base::Extras::rapidjson
+ Mapbox::Base::geojson.hpp
+ Mapbox::Base::geometry.hpp
+ Mapbox::Base::optional
+ Mapbox::Base::typewrapper
+ Mapbox::Base::value
+ Mapbox::Base::variant
+ Mapbox::Base::weak
+)
+
+set_property(TARGET mbgl-core PROPERTY FOLDER Core)
+
+add_library(
+ Mapbox::Map ALIAS mbgl-core
+)
+
+if(MBGL_WITH_PLATFORM_EXTRAS)
+ include(${MBGL_WITH_PLATFORM_EXTRAS})
+endif()
+
+if(MBGL_WITH_CORE_ONLY)
+ return()
+elseif(MBGL_WITH_QT)
+ include(${PROJECT_SOURCE_DIR}/platform/qt/qt.cmake)
+elseif(CMAKE_SYSTEM_NAME STREQUAL Android)
+ include(${PROJECT_SOURCE_DIR}/platform/android/android.cmake)
+elseif(CMAKE_SYSTEM_NAME STREQUAL iOS)
+ include(${PROJECT_SOURCE_DIR}/platform/ios/ios.cmake)
+elseif(CMAKE_SYSTEM_NAME STREQUAL Linux)
+ include(${PROJECT_SOURCE_DIR}/platform/linux/linux.cmake)
+elseif(CMAKE_SYSTEM_NAME STREQUAL Darwin)
+ include(${PROJECT_SOURCE_DIR}/platform/macos/macos.cmake)
+else()
+ message(FATAL_ERROR "Unsupported target platform: " ${CMAKE_SYSTEM_NAME})
+endif()
+
+add_subdirectory(${PROJECT_SOURCE_DIR}/test)
+add_subdirectory(${PROJECT_SOURCE_DIR}/benchmark)
+add_subdirectory(${PROJECT_SOURCE_DIR}/render-test)
diff --git a/src/core-files.json b/src/core-files.json
new file mode 100644
index 0000000000..49fc69705c
--- /dev/null
+++ b/src/core-files.json
@@ -0,0 +1,817 @@
+{
+ "//": "This file is generated. Do not edit. Regenerate it with scripts/generate-file-lists.js",
+ "sources": [
+ "src/csscolorparser/csscolorparser.cpp",
+ "src/mbgl/actor/mailbox.cpp",
+ "src/mbgl/actor/scheduler.cpp",
+ "src/mbgl/annotation/annotation_manager.cpp",
+ "src/mbgl/annotation/annotation_source.cpp",
+ "src/mbgl/annotation/annotation_tile.cpp",
+ "src/mbgl/annotation/fill_annotation_impl.cpp",
+ "src/mbgl/annotation/line_annotation_impl.cpp",
+ "src/mbgl/annotation/render_annotation_source.cpp",
+ "src/mbgl/annotation/shape_annotation_impl.cpp",
+ "src/mbgl/annotation/symbol_annotation_impl.cpp",
+ "src/mbgl/geometry/dem_data.cpp",
+ "src/mbgl/geometry/feature_index.cpp",
+ "src/mbgl/geometry/line_atlas.cpp",
+ "src/mbgl/gfx/attribute.cpp",
+ "src/mbgl/gfx/renderer_backend.cpp",
+ "src/mbgl/gfx/rendering_stats.cpp",
+ "src/mbgl/gl/attribute.cpp",
+ "src/mbgl/gl/command_encoder.cpp",
+ "src/mbgl/gl/context.cpp",
+ "src/mbgl/gl/custom_layer.cpp",
+ "src/mbgl/gl/custom_layer_factory.cpp",
+ "src/mbgl/gl/custom_layer_impl.cpp",
+ "src/mbgl/gl/debugging_extension.cpp",
+ "src/mbgl/gl/enum.cpp",
+ "src/mbgl/gl/index_buffer_resource.cpp",
+ "src/mbgl/gl/object.cpp",
+ "src/mbgl/gl/offscreen_texture.cpp",
+ "src/mbgl/gl/render_custom_layer.cpp",
+ "src/mbgl/gl/render_pass.cpp",
+ "src/mbgl/gl/renderer_backend.cpp",
+ "src/mbgl/gl/texture.cpp",
+ "src/mbgl/gl/texture_resource.cpp",
+ "src/mbgl/gl/uniform.cpp",
+ "src/mbgl/gl/upload_pass.cpp",
+ "src/mbgl/gl/value.cpp",
+ "src/mbgl/gl/vertex_array.cpp",
+ "src/mbgl/gl/vertex_buffer_resource.cpp",
+ "src/mbgl/layermanager/background_layer_factory.cpp",
+ "src/mbgl/layermanager/circle_layer_factory.cpp",
+ "src/mbgl/layermanager/fill_extrusion_layer_factory.cpp",
+ "src/mbgl/layermanager/fill_layer_factory.cpp",
+ "src/mbgl/layermanager/heatmap_layer_factory.cpp",
+ "src/mbgl/layermanager/hillshade_layer_factory.cpp",
+ "src/mbgl/layermanager/layer_factory.cpp",
+ "src/mbgl/layermanager/layer_manager.cpp",
+ "src/mbgl/layermanager/line_layer_factory.cpp",
+ "src/mbgl/layermanager/raster_layer_factory.cpp",
+ "src/mbgl/layermanager/symbol_layer_factory.cpp",
+ "src/mbgl/layout/clip_lines.cpp",
+ "src/mbgl/layout/merge_lines.cpp",
+ "src/mbgl/layout/symbol_instance.cpp",
+ "src/mbgl/layout/symbol_layout.cpp",
+ "src/mbgl/layout/symbol_projection.cpp",
+ "src/mbgl/map/map.cpp",
+ "src/mbgl/map/map_impl.cpp",
+ "src/mbgl/map/map_options.cpp",
+ "src/mbgl/map/transform.cpp",
+ "src/mbgl/map/transform_state.cpp",
+ "src/mbgl/math/log2.cpp",
+ "src/mbgl/platform/gl_functions.cpp",
+ "src/mbgl/platform/settings.cpp",
+ "src/mbgl/programs/background_program.cpp",
+ "src/mbgl/programs/circle_program.cpp",
+ "src/mbgl/programs/clipping_mask_program.cpp",
+ "src/mbgl/programs/collision_box_program.cpp",
+ "src/mbgl/programs/debug_program.cpp",
+ "src/mbgl/programs/fill_extrusion_program.cpp",
+ "src/mbgl/programs/fill_program.cpp",
+ "src/mbgl/programs/gl/background.cpp",
+ "src/mbgl/programs/gl/background_pattern.cpp",
+ "src/mbgl/programs/gl/circle.cpp",
+ "src/mbgl/programs/gl/clipping_mask.cpp",
+ "src/mbgl/programs/gl/collision_box.cpp",
+ "src/mbgl/programs/gl/collision_circle.cpp",
+ "src/mbgl/programs/gl/debug.cpp",
+ "src/mbgl/programs/gl/fill.cpp",
+ "src/mbgl/programs/gl/fill_extrusion.cpp",
+ "src/mbgl/programs/gl/fill_extrusion_pattern.cpp",
+ "src/mbgl/programs/gl/fill_outline.cpp",
+ "src/mbgl/programs/gl/fill_outline_pattern.cpp",
+ "src/mbgl/programs/gl/fill_pattern.cpp",
+ "src/mbgl/programs/gl/heatmap.cpp",
+ "src/mbgl/programs/gl/heatmap_texture.cpp",
+ "src/mbgl/programs/gl/hillshade.cpp",
+ "src/mbgl/programs/gl/hillshade_prepare.cpp",
+ "src/mbgl/programs/gl/line.cpp",
+ "src/mbgl/programs/gl/line_gradient.cpp",
+ "src/mbgl/programs/gl/line_pattern.cpp",
+ "src/mbgl/programs/gl/line_sdf.cpp",
+ "src/mbgl/programs/gl/raster.cpp",
+ "src/mbgl/programs/gl/shader_source.cpp",
+ "src/mbgl/programs/gl/shaders.cpp",
+ "src/mbgl/programs/gl/symbol_icon.cpp",
+ "src/mbgl/programs/gl/symbol_sdf_icon.cpp",
+ "src/mbgl/programs/gl/symbol_sdf_text.cpp",
+ "src/mbgl/programs/gl/symbol_text_and_icon.cpp",
+ "src/mbgl/programs/heatmap_program.cpp",
+ "src/mbgl/programs/heatmap_texture_program.cpp",
+ "src/mbgl/programs/hillshade_prepare_program.cpp",
+ "src/mbgl/programs/hillshade_program.cpp",
+ "src/mbgl/programs/line_program.cpp",
+ "src/mbgl/programs/program_parameters.cpp",
+ "src/mbgl/programs/programs.cpp",
+ "src/mbgl/programs/raster_program.cpp",
+ "src/mbgl/programs/symbol_program.cpp",
+ "src/mbgl/renderer/backend_scope.cpp",
+ "src/mbgl/renderer/bucket_parameters.cpp",
+ "src/mbgl/renderer/buckets/circle_bucket.cpp",
+ "src/mbgl/renderer/buckets/debug_bucket.cpp",
+ "src/mbgl/renderer/buckets/fill_bucket.cpp",
+ "src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp",
+ "src/mbgl/renderer/buckets/heatmap_bucket.cpp",
+ "src/mbgl/renderer/buckets/hillshade_bucket.cpp",
+ "src/mbgl/renderer/buckets/line_bucket.cpp",
+ "src/mbgl/renderer/buckets/raster_bucket.cpp",
+ "src/mbgl/renderer/buckets/symbol_bucket.cpp",
+ "src/mbgl/renderer/cross_faded_property_evaluator.cpp",
+ "src/mbgl/renderer/group_by_layout.cpp",
+ "src/mbgl/renderer/image_atlas.cpp",
+ "src/mbgl/renderer/image_manager.cpp",
+ "src/mbgl/renderer/layers/render_background_layer.cpp",
+ "src/mbgl/renderer/layers/render_circle_layer.cpp",
+ "src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp",
+ "src/mbgl/renderer/layers/render_fill_layer.cpp",
+ "src/mbgl/renderer/layers/render_heatmap_layer.cpp",
+ "src/mbgl/renderer/layers/render_hillshade_layer.cpp",
+ "src/mbgl/renderer/layers/render_line_layer.cpp",
+ "src/mbgl/renderer/layers/render_raster_layer.cpp",
+ "src/mbgl/renderer/layers/render_symbol_layer.cpp",
+ "src/mbgl/renderer/paint_parameters.cpp",
+ "src/mbgl/renderer/pattern_atlas.cpp",
+ "src/mbgl/renderer/render_layer.cpp",
+ "src/mbgl/renderer/render_light.cpp",
+ "src/mbgl/renderer/render_orchestrator.cpp",
+ "src/mbgl/renderer/render_source.cpp",
+ "src/mbgl/renderer/render_static_data.cpp",
+ "src/mbgl/renderer/render_tile.cpp",
+ "src/mbgl/renderer/renderer.cpp",
+ "src/mbgl/renderer/renderer_impl.cpp",
+ "src/mbgl/renderer/renderer_state.cpp",
+ "src/mbgl/renderer/source_state.cpp",
+ "src/mbgl/renderer/sources/render_custom_geometry_source.cpp",
+ "src/mbgl/renderer/sources/render_geojson_source.cpp",
+ "src/mbgl/renderer/sources/render_image_source.cpp",
+ "src/mbgl/renderer/sources/render_raster_dem_source.cpp",
+ "src/mbgl/renderer/sources/render_raster_source.cpp",
+ "src/mbgl/renderer/sources/render_tile_source.cpp",
+ "src/mbgl/renderer/sources/render_vector_source.cpp",
+ "src/mbgl/renderer/style_diff.cpp",
+ "src/mbgl/renderer/tile_pyramid.cpp",
+ "src/mbgl/renderer/tile_render_data.cpp",
+ "src/mbgl/sprite/sprite_loader.cpp",
+ "src/mbgl/sprite/sprite_loader_worker.cpp",
+ "src/mbgl/sprite/sprite_parser.cpp",
+ "src/mbgl/storage/file_source_manager.cpp",
+ "src/mbgl/storage/network_status.cpp",
+ "src/mbgl/storage/resource.cpp",
+ "src/mbgl/storage/resource_options.cpp",
+ "src/mbgl/storage/resource_transform.cpp",
+ "src/mbgl/storage/response.cpp",
+ "src/mbgl/style/conversion/color_ramp_property_value.cpp",
+ "src/mbgl/style/conversion/constant.cpp",
+ "src/mbgl/style/conversion/coordinate.cpp",
+ "src/mbgl/style/conversion/custom_geometry_source_options.cpp",
+ "src/mbgl/style/conversion/filter.cpp",
+ "src/mbgl/style/conversion/function.cpp",
+ "src/mbgl/style/conversion/geojson.cpp",
+ "src/mbgl/style/conversion/geojson_options.cpp",
+ "src/mbgl/style/conversion/get_json_type.cpp",
+ "src/mbgl/style/conversion/layer.cpp",
+ "src/mbgl/style/conversion/light.cpp",
+ "src/mbgl/style/conversion/position.cpp",
+ "src/mbgl/style/conversion/property_value.cpp",
+ "src/mbgl/style/conversion/source.cpp",
+ "src/mbgl/style/conversion/tileset.cpp",
+ "src/mbgl/style/conversion/transition_options.cpp",
+ "src/mbgl/style/custom_tile_loader.cpp",
+ "src/mbgl/style/expression/assertion.cpp",
+ "src/mbgl/style/expression/at.cpp",
+ "src/mbgl/style/expression/boolean_operator.cpp",
+ "src/mbgl/style/expression/case.cpp",
+ "src/mbgl/style/expression/check_subtype.cpp",
+ "src/mbgl/style/expression/coalesce.cpp",
+ "src/mbgl/style/expression/coercion.cpp",
+ "src/mbgl/style/expression/collator.cpp",
+ "src/mbgl/style/expression/collator_expression.cpp",
+ "src/mbgl/style/expression/comparison.cpp",
+ "src/mbgl/style/expression/compound_expression.cpp",
+ "src/mbgl/style/expression/dsl.cpp",
+ "src/mbgl/style/expression/expression.cpp",
+ "src/mbgl/style/expression/find_zoom_curve.cpp",
+ "src/mbgl/style/expression/format_expression.cpp",
+ "src/mbgl/style/expression/formatted.cpp",
+ "src/mbgl/style/expression/get_covering_stops.cpp",
+ "src/mbgl/style/expression/image.cpp",
+ "src/mbgl/style/expression/image_expression.cpp",
+ "src/mbgl/style/expression/interpolate.cpp",
+ "src/mbgl/style/expression/is_constant.cpp",
+ "src/mbgl/style/expression/is_expression.cpp",
+ "src/mbgl/style/expression/length.cpp",
+ "src/mbgl/style/expression/let.cpp",
+ "src/mbgl/style/expression/literal.cpp",
+ "src/mbgl/style/expression/match.cpp",
+ "src/mbgl/style/expression/number_format.cpp",
+ "src/mbgl/style/expression/parsing_context.cpp",
+ "src/mbgl/style/expression/step.cpp",
+ "src/mbgl/style/expression/util.cpp",
+ "src/mbgl/style/expression/value.cpp",
+ "src/mbgl/style/expression/within.cpp",
+ "src/mbgl/style/filter.cpp",
+ "src/mbgl/style/image.cpp",
+ "src/mbgl/style/image_impl.cpp",
+ "src/mbgl/style/layer.cpp",
+ "src/mbgl/style/layer_impl.cpp",
+ "src/mbgl/style/layers/background_layer.cpp",
+ "src/mbgl/style/layers/background_layer_impl.cpp",
+ "src/mbgl/style/layers/background_layer_properties.cpp",
+ "src/mbgl/style/layers/circle_layer.cpp",
+ "src/mbgl/style/layers/circle_layer_impl.cpp",
+ "src/mbgl/style/layers/circle_layer_properties.cpp",
+ "src/mbgl/style/layers/fill_extrusion_layer.cpp",
+ "src/mbgl/style/layers/fill_extrusion_layer_impl.cpp",
+ "src/mbgl/style/layers/fill_extrusion_layer_properties.cpp",
+ "src/mbgl/style/layers/fill_layer.cpp",
+ "src/mbgl/style/layers/fill_layer_impl.cpp",
+ "src/mbgl/style/layers/fill_layer_properties.cpp",
+ "src/mbgl/style/layers/heatmap_layer.cpp",
+ "src/mbgl/style/layers/heatmap_layer_impl.cpp",
+ "src/mbgl/style/layers/heatmap_layer_properties.cpp",
+ "src/mbgl/style/layers/hillshade_layer.cpp",
+ "src/mbgl/style/layers/hillshade_layer_impl.cpp",
+ "src/mbgl/style/layers/hillshade_layer_properties.cpp",
+ "src/mbgl/style/layers/line_layer.cpp",
+ "src/mbgl/style/layers/line_layer_impl.cpp",
+ "src/mbgl/style/layers/line_layer_properties.cpp",
+ "src/mbgl/style/layers/raster_layer.cpp",
+ "src/mbgl/style/layers/raster_layer_impl.cpp",
+ "src/mbgl/style/layers/raster_layer_properties.cpp",
+ "src/mbgl/style/layers/symbol_layer.cpp",
+ "src/mbgl/style/layers/symbol_layer_impl.cpp",
+ "src/mbgl/style/layers/symbol_layer_properties.cpp",
+ "src/mbgl/style/light.cpp",
+ "src/mbgl/style/light_impl.cpp",
+ "src/mbgl/style/parser.cpp",
+ "src/mbgl/style/property_expression.cpp",
+ "src/mbgl/style/source.cpp",
+ "src/mbgl/style/source_impl.cpp",
+ "src/mbgl/style/sources/custom_geometry_source.cpp",
+ "src/mbgl/style/sources/custom_geometry_source_impl.cpp",
+ "src/mbgl/style/sources/geojson_source.cpp",
+ "src/mbgl/style/sources/geojson_source_impl.cpp",
+ "src/mbgl/style/sources/image_source.cpp",
+ "src/mbgl/style/sources/image_source_impl.cpp",
+ "src/mbgl/style/sources/raster_dem_source.cpp",
+ "src/mbgl/style/sources/raster_source.cpp",
+ "src/mbgl/style/sources/raster_source_impl.cpp",
+ "src/mbgl/style/sources/vector_source.cpp",
+ "src/mbgl/style/sources/vector_source_impl.cpp",
+ "src/mbgl/style/style.cpp",
+ "src/mbgl/style/style_impl.cpp",
+ "src/mbgl/style/types.cpp",
+ "src/mbgl/text/check_max_angle.cpp",
+ "src/mbgl/text/collision_feature.cpp",
+ "src/mbgl/text/collision_index.cpp",
+ "src/mbgl/text/cross_tile_symbol_index.cpp",
+ "src/mbgl/text/get_anchors.cpp",
+ "src/mbgl/text/glyph.cpp",
+ "src/mbgl/text/glyph_atlas.cpp",
+ "src/mbgl/text/glyph_manager.cpp",
+ "src/mbgl/text/glyph_pbf.cpp",
+ "src/mbgl/text/language_tag.cpp",
+ "src/mbgl/text/placement.cpp",
+ "src/mbgl/text/quads.cpp",
+ "src/mbgl/text/shaping.cpp",
+ "src/mbgl/text/tagged_string.cpp",
+ "src/mbgl/tile/custom_geometry_tile.cpp",
+ "src/mbgl/tile/geojson_tile.cpp",
+ "src/mbgl/tile/geometry_tile.cpp",
+ "src/mbgl/tile/geometry_tile_data.cpp",
+ "src/mbgl/tile/geometry_tile_worker.cpp",
+ "src/mbgl/tile/raster_dem_tile.cpp",
+ "src/mbgl/tile/raster_dem_tile_worker.cpp",
+ "src/mbgl/tile/raster_tile.cpp",
+ "src/mbgl/tile/raster_tile_worker.cpp",
+ "src/mbgl/tile/tile.cpp",
+ "src/mbgl/tile/tile_cache.cpp",
+ "src/mbgl/tile/tile_id_hash.cpp",
+ "src/mbgl/tile/tile_id_io.cpp",
+ "src/mbgl/tile/vector_tile.cpp",
+ "src/mbgl/tile/vector_tile_data.cpp",
+ "src/mbgl/util/chrono.cpp",
+ "src/mbgl/util/color.cpp",
+ "src/mbgl/util/constants.cpp",
+ "src/mbgl/util/convert.cpp",
+ "src/mbgl/util/dtoa.cpp",
+ "src/mbgl/util/event.cpp",
+ "src/mbgl/util/font_stack.cpp",
+ "src/mbgl/util/geo.cpp",
+ "src/mbgl/util/geojson_impl.cpp",
+ "src/mbgl/util/grid_index.cpp",
+ "src/mbgl/util/http_header.cpp",
+ "src/mbgl/util/http_timeout.cpp",
+ "src/mbgl/util/i18n.cpp",
+ "src/mbgl/util/id.cpp",
+ "src/mbgl/util/interpolate.cpp",
+ "src/mbgl/util/intersection_tests.cpp",
+ "src/mbgl/util/io.cpp",
+ "src/mbgl/util/logging.cpp",
+ "src/mbgl/util/mapbox.cpp",
+ "src/mbgl/util/mat2.cpp",
+ "src/mbgl/util/mat3.cpp",
+ "src/mbgl/util/mat4.cpp",
+ "src/mbgl/util/premultiply.cpp",
+ "src/mbgl/util/rapidjson.cpp",
+ "src/mbgl/util/stopwatch.cpp",
+ "src/mbgl/util/string.cpp",
+ "src/mbgl/util/thread.cpp",
+ "src/mbgl/util/thread_pool.cpp",
+ "src/mbgl/util/tile_cover.cpp",
+ "src/mbgl/util/tile_cover_impl.cpp",
+ "src/mbgl/util/tiny_sdf.cpp",
+ "src/mbgl/util/url.cpp",
+ "src/mbgl/util/version.cpp",
+ "src/mbgl/util/work_request.cpp",
+ "src/parsedate/parsedate.cpp"
+ ],
+ "public_headers": {
+ "mbgl/actor/actor.hpp": "include/mbgl/actor/actor.hpp",
+ "mbgl/actor/actor_ref.hpp": "include/mbgl/actor/actor_ref.hpp",
+ "mbgl/actor/aspiring_actor.hpp": "include/mbgl/actor/aspiring_actor.hpp",
+ "mbgl/actor/established_actor.hpp": "include/mbgl/actor/established_actor.hpp",
+ "mbgl/actor/mailbox.hpp": "include/mbgl/actor/mailbox.hpp",
+ "mbgl/actor/message.hpp": "include/mbgl/actor/message.hpp",
+ "mbgl/actor/scheduler.hpp": "include/mbgl/actor/scheduler.hpp",
+ "mbgl/annotation/annotation.hpp": "include/mbgl/annotation/annotation.hpp",
+ "mbgl/gfx/backend.hpp": "include/mbgl/gfx/backend.hpp",
+ "mbgl/gfx/backend_scope.hpp": "include/mbgl/gfx/backend_scope.hpp",
+ "mbgl/gfx/renderable.hpp": "include/mbgl/gfx/renderable.hpp",
+ "mbgl/gfx/renderer_backend.hpp": "include/mbgl/gfx/renderer_backend.hpp",
+ "mbgl/gfx/rendering_stats.hpp": "include/mbgl/gfx/rendering_stats.hpp",
+ "mbgl/gl/custom_layer.hpp": "include/mbgl/gl/custom_layer.hpp",
+ "mbgl/gl/custom_layer_factory.hpp": "include/mbgl/gl/custom_layer_factory.hpp",
+ "mbgl/gl/renderable_resource.hpp": "include/mbgl/gl/renderable_resource.hpp",
+ "mbgl/gl/renderer_backend.hpp": "include/mbgl/gl/renderer_backend.hpp",
+ "mbgl/i18n/collator.hpp": "include/mbgl/i18n/collator.hpp",
+ "mbgl/i18n/number_format.hpp": "include/mbgl/i18n/number_format.hpp",
+ "mbgl/layermanager/background_layer_factory.hpp": "include/mbgl/layermanager/background_layer_factory.hpp",
+ "mbgl/layermanager/circle_layer_factory.hpp": "include/mbgl/layermanager/circle_layer_factory.hpp",
+ "mbgl/layermanager/fill_extrusion_layer_factory.hpp": "include/mbgl/layermanager/fill_extrusion_layer_factory.hpp",
+ "mbgl/layermanager/fill_layer_factory.hpp": "include/mbgl/layermanager/fill_layer_factory.hpp",
+ "mbgl/layermanager/heatmap_layer_factory.hpp": "include/mbgl/layermanager/heatmap_layer_factory.hpp",
+ "mbgl/layermanager/hillshade_layer_factory.hpp": "include/mbgl/layermanager/hillshade_layer_factory.hpp",
+ "mbgl/layermanager/layer_factory.hpp": "include/mbgl/layermanager/layer_factory.hpp",
+ "mbgl/layermanager/layer_manager.hpp": "include/mbgl/layermanager/layer_manager.hpp",
+ "mbgl/layermanager/line_layer_factory.hpp": "include/mbgl/layermanager/line_layer_factory.hpp",
+ "mbgl/layermanager/raster_layer_factory.hpp": "include/mbgl/layermanager/raster_layer_factory.hpp",
+ "mbgl/layermanager/symbol_layer_factory.hpp": "include/mbgl/layermanager/symbol_layer_factory.hpp",
+ "mbgl/map/bound_options.hpp": "include/mbgl/map/bound_options.hpp",
+ "mbgl/map/camera.hpp": "include/mbgl/map/camera.hpp",
+ "mbgl/map/change.hpp": "include/mbgl/map/change.hpp",
+ "mbgl/map/map.hpp": "include/mbgl/map/map.hpp",
+ "mbgl/map/map_observer.hpp": "include/mbgl/map/map_observer.hpp",
+ "mbgl/map/map_options.hpp": "include/mbgl/map/map_options.hpp",
+ "mbgl/map/mode.hpp": "include/mbgl/map/mode.hpp",
+ "mbgl/map/projection_mode.hpp": "include/mbgl/map/projection_mode.hpp",
+ "mbgl/math/clamp.hpp": "include/mbgl/math/clamp.hpp",
+ "mbgl/math/log2.hpp": "include/mbgl/math/log2.hpp",
+ "mbgl/math/minmax.hpp": "include/mbgl/math/minmax.hpp",
+ "mbgl/math/wrap.hpp": "include/mbgl/math/wrap.hpp",
+ "mbgl/platform/gl_functions.hpp": "include/mbgl/platform/gl_functions.hpp",
+ "mbgl/platform/settings.hpp": "include/mbgl/platform/settings.hpp",
+ "mbgl/platform/thread.hpp": "include/mbgl/platform/thread.hpp",
+ "mbgl/renderer/query.hpp": "include/mbgl/renderer/query.hpp",
+ "mbgl/renderer/renderer.hpp": "include/mbgl/renderer/renderer.hpp",
+ "mbgl/renderer/renderer_frontend.hpp": "include/mbgl/renderer/renderer_frontend.hpp",
+ "mbgl/renderer/renderer_observer.hpp": "include/mbgl/renderer/renderer_observer.hpp",
+ "mbgl/renderer/renderer_state.hpp": "include/mbgl/renderer/renderer_state.hpp",
+ "mbgl/storage/database_file_source.hpp": "include/mbgl/storage/database_file_source.hpp",
+ "mbgl/storage/file_source.hpp": "include/mbgl/storage/file_source.hpp",
+ "mbgl/storage/file_source_manager.hpp": "include/mbgl/storage/file_source_manager.hpp",
+ "mbgl/storage/network_status.hpp": "include/mbgl/storage/network_status.hpp",
+ "mbgl/storage/offline.hpp": "include/mbgl/storage/offline.hpp",
+ "mbgl/storage/online_file_source.hpp": "include/mbgl/storage/online_file_source.hpp",
+ "mbgl/storage/resource.hpp": "include/mbgl/storage/resource.hpp",
+ "mbgl/storage/resource_options.hpp": "include/mbgl/storage/resource_options.hpp",
+ "mbgl/storage/resource_transform.hpp": "include/mbgl/storage/resource_transform.hpp",
+ "mbgl/storage/response.hpp": "include/mbgl/storage/response.hpp",
+ "mbgl/style/color_ramp_property_value.hpp": "include/mbgl/style/color_ramp_property_value.hpp",
+ "mbgl/style/conversion.hpp": "include/mbgl/style/conversion.hpp",
+ "mbgl/style/conversion/color_ramp_property_value.hpp": "include/mbgl/style/conversion/color_ramp_property_value.hpp",
+ "mbgl/style/conversion/constant.hpp": "include/mbgl/style/conversion/constant.hpp",
+ "mbgl/style/conversion/coordinate.hpp": "include/mbgl/style/conversion/coordinate.hpp",
+ "mbgl/style/conversion/custom_geometry_source_options.hpp": "include/mbgl/style/conversion/custom_geometry_source_options.hpp",
+ "mbgl/style/conversion/filter.hpp": "include/mbgl/style/conversion/filter.hpp",
+ "mbgl/style/conversion/function.hpp": "include/mbgl/style/conversion/function.hpp",
+ "mbgl/style/conversion/geojson.hpp": "include/mbgl/style/conversion/geojson.hpp",
+ "mbgl/style/conversion/geojson_options.hpp": "include/mbgl/style/conversion/geojson_options.hpp",
+ "mbgl/style/conversion/get_json_type.hpp": "include/mbgl/style/conversion/get_json_type.hpp",
+ "mbgl/style/conversion/layer.hpp": "include/mbgl/style/conversion/layer.hpp",
+ "mbgl/style/conversion/light.hpp": "include/mbgl/style/conversion/light.hpp",
+ "mbgl/style/conversion/position.hpp": "include/mbgl/style/conversion/position.hpp",
+ "mbgl/style/conversion/property_value.hpp": "include/mbgl/style/conversion/property_value.hpp",
+ "mbgl/style/conversion/source.hpp": "include/mbgl/style/conversion/source.hpp",
+ "mbgl/style/conversion/tileset.hpp": "include/mbgl/style/conversion/tileset.hpp",
+ "mbgl/style/conversion/transition_options.hpp": "include/mbgl/style/conversion/transition_options.hpp",
+ "mbgl/style/conversion_impl.hpp": "include/mbgl/style/conversion_impl.hpp",
+ "mbgl/style/expression/assertion.hpp": "include/mbgl/style/expression/assertion.hpp",
+ "mbgl/style/expression/at.hpp": "include/mbgl/style/expression/at.hpp",
+ "mbgl/style/expression/boolean_operator.hpp": "include/mbgl/style/expression/boolean_operator.hpp",
+ "mbgl/style/expression/case.hpp": "include/mbgl/style/expression/case.hpp",
+ "mbgl/style/expression/check_subtype.hpp": "include/mbgl/style/expression/check_subtype.hpp",
+ "mbgl/style/expression/coalesce.hpp": "include/mbgl/style/expression/coalesce.hpp",
+ "mbgl/style/expression/coercion.hpp": "include/mbgl/style/expression/coercion.hpp",
+ "mbgl/style/expression/collator.hpp": "include/mbgl/style/expression/collator.hpp",
+ "mbgl/style/expression/collator_expression.hpp": "include/mbgl/style/expression/collator_expression.hpp",
+ "mbgl/style/expression/comparison.hpp": "include/mbgl/style/expression/comparison.hpp",
+ "mbgl/style/expression/compound_expression.hpp": "include/mbgl/style/expression/compound_expression.hpp",
+ "mbgl/style/expression/dsl.hpp": "include/mbgl/style/expression/dsl.hpp",
+ "mbgl/style/expression/error.hpp": "include/mbgl/style/expression/error.hpp",
+ "mbgl/style/expression/expression.hpp": "include/mbgl/style/expression/expression.hpp",
+ "mbgl/style/expression/find_zoom_curve.hpp": "include/mbgl/style/expression/find_zoom_curve.hpp",
+ "mbgl/style/expression/format_expression.hpp": "include/mbgl/style/expression/format_expression.hpp",
+ "mbgl/style/expression/format_section_override.hpp": "include/mbgl/style/expression/format_section_override.hpp",
+ "mbgl/style/expression/formatted.hpp": "include/mbgl/style/expression/formatted.hpp",
+ "mbgl/style/expression/get_covering_stops.hpp": "include/mbgl/style/expression/get_covering_stops.hpp",
+ "mbgl/style/expression/image.hpp": "include/mbgl/style/expression/image.hpp",
+ "mbgl/style/expression/image_expression.hpp": "include/mbgl/style/expression/image_expression.hpp",
+ "mbgl/style/expression/interpolate.hpp": "include/mbgl/style/expression/interpolate.hpp",
+ "mbgl/style/expression/interpolator.hpp": "include/mbgl/style/expression/interpolator.hpp",
+ "mbgl/style/expression/is_constant.hpp": "include/mbgl/style/expression/is_constant.hpp",
+ "mbgl/style/expression/is_expression.hpp": "include/mbgl/style/expression/is_expression.hpp",
+ "mbgl/style/expression/length.hpp": "include/mbgl/style/expression/length.hpp",
+ "mbgl/style/expression/let.hpp": "include/mbgl/style/expression/let.hpp",
+ "mbgl/style/expression/literal.hpp": "include/mbgl/style/expression/literal.hpp",
+ "mbgl/style/expression/match.hpp": "include/mbgl/style/expression/match.hpp",
+ "mbgl/style/expression/number_format.hpp": "include/mbgl/style/expression/number_format.hpp",
+ "mbgl/style/expression/parsing_context.hpp": "include/mbgl/style/expression/parsing_context.hpp",
+ "mbgl/style/expression/step.hpp": "include/mbgl/style/expression/step.hpp",
+ "mbgl/style/expression/type.hpp": "include/mbgl/style/expression/type.hpp",
+ "mbgl/style/expression/value.hpp": "include/mbgl/style/expression/value.hpp",
+ "mbgl/style/expression/within.hpp": "include/mbgl/style/expression/within.hpp",
+ "mbgl/style/filter.hpp": "include/mbgl/style/filter.hpp",
+ "mbgl/style/image.hpp": "include/mbgl/style/image.hpp",
+ "mbgl/style/layer.hpp": "include/mbgl/style/layer.hpp",
+ "mbgl/style/layer_properties.hpp": "include/mbgl/style/layer_properties.hpp",
+ "mbgl/style/layers/background_layer.hpp": "include/mbgl/style/layers/background_layer.hpp",
+ "mbgl/style/layers/circle_layer.hpp": "include/mbgl/style/layers/circle_layer.hpp",
+ "mbgl/style/layers/fill_extrusion_layer.hpp": "include/mbgl/style/layers/fill_extrusion_layer.hpp",
+ "mbgl/style/layers/fill_layer.hpp": "include/mbgl/style/layers/fill_layer.hpp",
+ "mbgl/style/layers/heatmap_layer.hpp": "include/mbgl/style/layers/heatmap_layer.hpp",
+ "mbgl/style/layers/hillshade_layer.hpp": "include/mbgl/style/layers/hillshade_layer.hpp",
+ "mbgl/style/layers/line_layer.hpp": "include/mbgl/style/layers/line_layer.hpp",
+ "mbgl/style/layers/raster_layer.hpp": "include/mbgl/style/layers/raster_layer.hpp",
+ "mbgl/style/layers/symbol_layer.hpp": "include/mbgl/style/layers/symbol_layer.hpp",
+ "mbgl/style/light.hpp": "include/mbgl/style/light.hpp",
+ "mbgl/style/position.hpp": "include/mbgl/style/position.hpp",
+ "mbgl/style/property_expression.hpp": "include/mbgl/style/property_expression.hpp",
+ "mbgl/style/property_value.hpp": "include/mbgl/style/property_value.hpp",
+ "mbgl/style/source.hpp": "include/mbgl/style/source.hpp",
+ "mbgl/style/sources/custom_geometry_source.hpp": "include/mbgl/style/sources/custom_geometry_source.hpp",
+ "mbgl/style/sources/geojson_source.hpp": "include/mbgl/style/sources/geojson_source.hpp",
+ "mbgl/style/sources/image_source.hpp": "include/mbgl/style/sources/image_source.hpp",
+ "mbgl/style/sources/raster_dem_source.hpp": "include/mbgl/style/sources/raster_dem_source.hpp",
+ "mbgl/style/sources/raster_source.hpp": "include/mbgl/style/sources/raster_source.hpp",
+ "mbgl/style/sources/vector_source.hpp": "include/mbgl/style/sources/vector_source.hpp",
+ "mbgl/style/style.hpp": "include/mbgl/style/style.hpp",
+ "mbgl/style/style_property.hpp": "include/mbgl/style/style_property.hpp",
+ "mbgl/style/transition_options.hpp": "include/mbgl/style/transition_options.hpp",
+ "mbgl/style/types.hpp": "include/mbgl/style/types.hpp",
+ "mbgl/style/undefined.hpp": "include/mbgl/style/undefined.hpp",
+ "mbgl/tile/tile_id.hpp": "include/mbgl/tile/tile_id.hpp",
+ "mbgl/tile/tile_necessity.hpp": "include/mbgl/tile/tile_necessity.hpp",
+ "mbgl/util/async_request.hpp": "include/mbgl/util/async_request.hpp",
+ "mbgl/util/async_task.hpp": "include/mbgl/util/async_task.hpp",
+ "mbgl/util/bitmask_operations.hpp": "include/mbgl/util/bitmask_operations.hpp",
+ "mbgl/util/char_array_buffer.hpp": "include/mbgl/util/char_array_buffer.hpp",
+ "mbgl/util/chrono.hpp": "include/mbgl/util/chrono.hpp",
+ "mbgl/util/color.hpp": "include/mbgl/util/color.hpp",
+ "mbgl/util/compression.hpp": "include/mbgl/util/compression.hpp",
+ "mbgl/util/constants.hpp": "include/mbgl/util/constants.hpp",
+ "mbgl/util/convert.hpp": "include/mbgl/util/convert.hpp",
+ "mbgl/util/default_styles.hpp": "include/mbgl/util/default_styles.hpp",
+ "mbgl/util/enum.hpp": "include/mbgl/util/enum.hpp",
+ "mbgl/util/event.hpp": "include/mbgl/util/event.hpp",
+ "mbgl/util/exception.hpp": "include/mbgl/util/exception.hpp",
+ "mbgl/util/expected.hpp": "include/mbgl/util/expected.hpp",
+ "mbgl/util/feature.hpp": "include/mbgl/util/feature.hpp",
+ "mbgl/util/font_stack.hpp": "include/mbgl/util/font_stack.hpp",
+ "mbgl/util/geo.hpp": "include/mbgl/util/geo.hpp",
+ "mbgl/util/geojson.hpp": "include/mbgl/util/geojson.hpp",
+ "mbgl/util/geometry.hpp": "include/mbgl/util/geometry.hpp",
+ "mbgl/util/ignore.hpp": "include/mbgl/util/ignore.hpp",
+ "mbgl/util/image.hpp": "include/mbgl/util/image.hpp",
+ "mbgl/util/immutable.hpp": "include/mbgl/util/immutable.hpp",
+ "mbgl/util/indexed_tuple.hpp": "include/mbgl/util/indexed_tuple.hpp",
+ "mbgl/util/interpolate.hpp": "include/mbgl/util/interpolate.hpp",
+ "mbgl/util/logging.hpp": "include/mbgl/util/logging.hpp",
+ "mbgl/util/monotonic_timer.hpp": "include/mbgl/util/monotonic_timer.hpp",
+ "mbgl/util/noncopyable.hpp": "include/mbgl/util/noncopyable.hpp",
+ "mbgl/util/optional.hpp": "include/mbgl/util/optional.hpp",
+ "mbgl/util/platform.hpp": "include/mbgl/util/platform.hpp",
+ "mbgl/util/premultiply.hpp": "include/mbgl/util/premultiply.hpp",
+ "mbgl/util/projection.hpp": "include/mbgl/util/projection.hpp",
+ "mbgl/util/range.hpp": "include/mbgl/util/range.hpp",
+ "mbgl/util/run_loop.hpp": "include/mbgl/util/run_loop.hpp",
+ "mbgl/util/size.hpp": "include/mbgl/util/size.hpp",
+ "mbgl/util/string.hpp": "include/mbgl/util/string.hpp",
+ "mbgl/util/thread.hpp": "include/mbgl/util/thread.hpp",
+ "mbgl/util/tileset.hpp": "include/mbgl/util/tileset.hpp",
+ "mbgl/util/timer.hpp": "include/mbgl/util/timer.hpp",
+ "mbgl/util/traits.hpp": "include/mbgl/util/traits.hpp",
+ "mbgl/util/type_list.hpp": "include/mbgl/util/type_list.hpp",
+ "mbgl/util/unitbezier.hpp": "include/mbgl/util/unitbezier.hpp",
+ "mbgl/util/util.hpp": "include/mbgl/util/util.hpp",
+ "mbgl/util/variant.hpp": "include/mbgl/util/variant.hpp",
+ "mbgl/util/work_request.hpp": "include/mbgl/util/work_request.hpp",
+ "mbgl/util/work_task.hpp": "include/mbgl/util/work_task.hpp",
+ "mbgl/util/work_task_impl.hpp": "include/mbgl/util/work_task_impl.hpp"
+ },
+ "private_headers": {
+ "csscolorparser/csscolorparser.hpp": "src/csscolorparser/csscolorparser.hpp",
+ "mbgl/algorithm/update_renderables.hpp": "src/mbgl/algorithm/update_renderables.hpp",
+ "mbgl/algorithm/update_tile_masks.hpp": "src/mbgl/algorithm/update_tile_masks.hpp",
+ "mbgl/annotation/annotation_manager.hpp": "src/mbgl/annotation/annotation_manager.hpp",
+ "mbgl/annotation/annotation_source.hpp": "src/mbgl/annotation/annotation_source.hpp",
+ "mbgl/annotation/annotation_tile.hpp": "src/mbgl/annotation/annotation_tile.hpp",
+ "mbgl/annotation/fill_annotation_impl.hpp": "src/mbgl/annotation/fill_annotation_impl.hpp",
+ "mbgl/annotation/line_annotation_impl.hpp": "src/mbgl/annotation/line_annotation_impl.hpp",
+ "mbgl/annotation/render_annotation_source.hpp": "src/mbgl/annotation/render_annotation_source.hpp",
+ "mbgl/annotation/shape_annotation_impl.hpp": "src/mbgl/annotation/shape_annotation_impl.hpp",
+ "mbgl/annotation/symbol_annotation_impl.hpp": "src/mbgl/annotation/symbol_annotation_impl.hpp",
+ "mbgl/geometry/anchor.hpp": "src/mbgl/geometry/anchor.hpp",
+ "mbgl/geometry/debug_font_data.hpp": "src/mbgl/geometry/debug_font_data.hpp",
+ "mbgl/geometry/dem_data.hpp": "src/mbgl/geometry/dem_data.hpp",
+ "mbgl/geometry/feature_index.hpp": "src/mbgl/geometry/feature_index.hpp",
+ "mbgl/geometry/line_atlas.hpp": "src/mbgl/geometry/line_atlas.hpp",
+ "mbgl/gfx/attribute.hpp": "src/mbgl/gfx/attribute.hpp",
+ "mbgl/gfx/color_mode.hpp": "src/mbgl/gfx/color_mode.hpp",
+ "mbgl/gfx/command_encoder.hpp": "src/mbgl/gfx/command_encoder.hpp",
+ "mbgl/gfx/context.hpp": "src/mbgl/gfx/context.hpp",
+ "mbgl/gfx/cull_face_mode.hpp": "src/mbgl/gfx/cull_face_mode.hpp",
+ "mbgl/gfx/debug_group.hpp": "src/mbgl/gfx/debug_group.hpp",
+ "mbgl/gfx/depth_mode.hpp": "src/mbgl/gfx/depth_mode.hpp",
+ "mbgl/gfx/draw_mode.hpp": "src/mbgl/gfx/draw_mode.hpp",
+ "mbgl/gfx/draw_scope.hpp": "src/mbgl/gfx/draw_scope.hpp",
+ "mbgl/gfx/index_buffer.hpp": "src/mbgl/gfx/index_buffer.hpp",
+ "mbgl/gfx/index_vector.hpp": "src/mbgl/gfx/index_vector.hpp",
+ "mbgl/gfx/offscreen_texture.hpp": "src/mbgl/gfx/offscreen_texture.hpp",
+ "mbgl/gfx/program.hpp": "src/mbgl/gfx/program.hpp",
+ "mbgl/gfx/render_pass.hpp": "src/mbgl/gfx/render_pass.hpp",
+ "mbgl/gfx/renderbuffer.hpp": "src/mbgl/gfx/renderbuffer.hpp",
+ "mbgl/gfx/stencil_mode.hpp": "src/mbgl/gfx/stencil_mode.hpp",
+ "mbgl/gfx/texture.hpp": "src/mbgl/gfx/texture.hpp",
+ "mbgl/gfx/types.hpp": "src/mbgl/gfx/types.hpp",
+ "mbgl/gfx/uniform.hpp": "src/mbgl/gfx/uniform.hpp",
+ "mbgl/gfx/upload_pass.hpp": "src/mbgl/gfx/upload_pass.hpp",
+ "mbgl/gfx/vertex_buffer.hpp": "src/mbgl/gfx/vertex_buffer.hpp",
+ "mbgl/gfx/vertex_vector.hpp": "src/mbgl/gfx/vertex_vector.hpp",
+ "mbgl/gl/attribute.hpp": "src/mbgl/gl/attribute.hpp",
+ "mbgl/gl/command_encoder.hpp": "src/mbgl/gl/command_encoder.hpp",
+ "mbgl/gl/context.hpp": "src/mbgl/gl/context.hpp",
+ "mbgl/gl/custom_layer_impl.hpp": "src/mbgl/gl/custom_layer_impl.hpp",
+ "mbgl/gl/debugging_extension.hpp": "src/mbgl/gl/debugging_extension.hpp",
+ "mbgl/gl/defines.hpp": "src/mbgl/gl/defines.hpp",
+ "mbgl/gl/draw_scope_resource.hpp": "src/mbgl/gl/draw_scope_resource.hpp",
+ "mbgl/gl/enum.hpp": "src/mbgl/gl/enum.hpp",
+ "mbgl/gl/extension.hpp": "src/mbgl/gl/extension.hpp",
+ "mbgl/gl/framebuffer.hpp": "src/mbgl/gl/framebuffer.hpp",
+ "mbgl/gl/index_buffer_resource.hpp": "src/mbgl/gl/index_buffer_resource.hpp",
+ "mbgl/gl/object.hpp": "src/mbgl/gl/object.hpp",
+ "mbgl/gl/offscreen_texture.hpp": "src/mbgl/gl/offscreen_texture.hpp",
+ "mbgl/gl/program.hpp": "src/mbgl/gl/program.hpp",
+ "mbgl/gl/render_custom_layer.hpp": "src/mbgl/gl/render_custom_layer.hpp",
+ "mbgl/gl/render_pass.hpp": "src/mbgl/gl/render_pass.hpp",
+ "mbgl/gl/renderbuffer_resource.hpp": "src/mbgl/gl/renderbuffer_resource.hpp",
+ "mbgl/gl/state.hpp": "src/mbgl/gl/state.hpp",
+ "mbgl/gl/texture.hpp": "src/mbgl/gl/texture.hpp",
+ "mbgl/gl/texture_resource.hpp": "src/mbgl/gl/texture_resource.hpp",
+ "mbgl/gl/types.hpp": "src/mbgl/gl/types.hpp",
+ "mbgl/gl/uniform.hpp": "src/mbgl/gl/uniform.hpp",
+ "mbgl/gl/upload_pass.hpp": "src/mbgl/gl/upload_pass.hpp",
+ "mbgl/gl/value.hpp": "src/mbgl/gl/value.hpp",
+ "mbgl/gl/vertex_array.hpp": "src/mbgl/gl/vertex_array.hpp",
+ "mbgl/gl/vertex_array_extension.hpp": "src/mbgl/gl/vertex_array_extension.hpp",
+ "mbgl/gl/vertex_buffer_resource.hpp": "src/mbgl/gl/vertex_buffer_resource.hpp",
+ "mbgl/layout/clip_lines.hpp": "src/mbgl/layout/clip_lines.hpp",
+ "mbgl/layout/layout.hpp": "src/mbgl/layout/layout.hpp",
+ "mbgl/layout/merge_lines.hpp": "src/mbgl/layout/merge_lines.hpp",
+ "mbgl/layout/pattern_layout.hpp": "src/mbgl/layout/pattern_layout.hpp",
+ "mbgl/layout/symbol_feature.hpp": "src/mbgl/layout/symbol_feature.hpp",
+ "mbgl/layout/symbol_instance.hpp": "src/mbgl/layout/symbol_instance.hpp",
+ "mbgl/layout/symbol_layout.hpp": "src/mbgl/layout/symbol_layout.hpp",
+ "mbgl/layout/symbol_projection.hpp": "src/mbgl/layout/symbol_projection.hpp",
+ "mbgl/map/map_impl.hpp": "src/mbgl/map/map_impl.hpp",
+ "mbgl/map/transform.hpp": "src/mbgl/map/transform.hpp",
+ "mbgl/map/transform_state.hpp": "src/mbgl/map/transform_state.hpp",
+ "mbgl/map/zoom_history.hpp": "src/mbgl/map/zoom_history.hpp",
+ "mbgl/programs/attributes.hpp": "src/mbgl/programs/attributes.hpp",
+ "mbgl/programs/background_pattern_program.hpp": "src/mbgl/programs/background_pattern_program.hpp",
+ "mbgl/programs/background_program.hpp": "src/mbgl/programs/background_program.hpp",
+ "mbgl/programs/circle_program.hpp": "src/mbgl/programs/circle_program.hpp",
+ "mbgl/programs/clipping_mask_program.hpp": "src/mbgl/programs/clipping_mask_program.hpp",
+ "mbgl/programs/collision_box_program.hpp": "src/mbgl/programs/collision_box_program.hpp",
+ "mbgl/programs/collision_circle_program.hpp": "src/mbgl/programs/collision_circle_program.hpp",
+ "mbgl/programs/debug_program.hpp": "src/mbgl/programs/debug_program.hpp",
+ "mbgl/programs/fill_extrusion_pattern_program.hpp": "src/mbgl/programs/fill_extrusion_pattern_program.hpp",
+ "mbgl/programs/fill_extrusion_program.hpp": "src/mbgl/programs/fill_extrusion_program.hpp",
+ "mbgl/programs/fill_outline_pattern_program.hpp": "src/mbgl/programs/fill_outline_pattern_program.hpp",
+ "mbgl/programs/fill_outline_program.hpp": "src/mbgl/programs/fill_outline_program.hpp",
+ "mbgl/programs/fill_pattern_program.hpp": "src/mbgl/programs/fill_pattern_program.hpp",
+ "mbgl/programs/fill_program.hpp": "src/mbgl/programs/fill_program.hpp",
+ "mbgl/programs/gl/preludes.hpp": "src/mbgl/programs/gl/preludes.hpp",
+ "mbgl/programs/gl/shader_source.hpp": "src/mbgl/programs/gl/shader_source.hpp",
+ "mbgl/programs/gl/shaders.hpp": "src/mbgl/programs/gl/shaders.hpp",
+ "mbgl/programs/heatmap_program.hpp": "src/mbgl/programs/heatmap_program.hpp",
+ "mbgl/programs/heatmap_texture_program.hpp": "src/mbgl/programs/heatmap_texture_program.hpp",
+ "mbgl/programs/hillshade_prepare_program.hpp": "src/mbgl/programs/hillshade_prepare_program.hpp",
+ "mbgl/programs/hillshade_program.hpp": "src/mbgl/programs/hillshade_program.hpp",
+ "mbgl/programs/line_gradient_program.hpp": "src/mbgl/programs/line_gradient_program.hpp",
+ "mbgl/programs/line_pattern_program.hpp": "src/mbgl/programs/line_pattern_program.hpp",
+ "mbgl/programs/line_program.hpp": "src/mbgl/programs/line_program.hpp",
+ "mbgl/programs/line_sdf_program.hpp": "src/mbgl/programs/line_sdf_program.hpp",
+ "mbgl/programs/program.hpp": "src/mbgl/programs/program.hpp",
+ "mbgl/programs/program_parameters.hpp": "src/mbgl/programs/program_parameters.hpp",
+ "mbgl/programs/programs.hpp": "src/mbgl/programs/programs.hpp",
+ "mbgl/programs/raster_program.hpp": "src/mbgl/programs/raster_program.hpp",
+ "mbgl/programs/segment.hpp": "src/mbgl/programs/segment.hpp",
+ "mbgl/programs/symbol_icon_program.hpp": "src/mbgl/programs/symbol_icon_program.hpp",
+ "mbgl/programs/symbol_program.hpp": "src/mbgl/programs/symbol_program.hpp",
+ "mbgl/programs/symbol_sdf_icon_program.hpp": "src/mbgl/programs/symbol_sdf_icon_program.hpp",
+ "mbgl/programs/symbol_sdf_text_program.hpp": "src/mbgl/programs/symbol_sdf_text_program.hpp",
+ "mbgl/programs/symbol_text_and_icon_program.hpp": "src/mbgl/programs/symbol_text_and_icon_program.hpp",
+ "mbgl/programs/textures.hpp": "src/mbgl/programs/textures.hpp",
+ "mbgl/programs/uniforms.hpp": "src/mbgl/programs/uniforms.hpp",
+ "mbgl/renderer/bucket.hpp": "src/mbgl/renderer/bucket.hpp",
+ "mbgl/renderer/bucket_parameters.hpp": "src/mbgl/renderer/bucket_parameters.hpp",
+ "mbgl/renderer/buckets/circle_bucket.hpp": "src/mbgl/renderer/buckets/circle_bucket.hpp",
+ "mbgl/renderer/buckets/debug_bucket.hpp": "src/mbgl/renderer/buckets/debug_bucket.hpp",
+ "mbgl/renderer/buckets/fill_bucket.hpp": "src/mbgl/renderer/buckets/fill_bucket.hpp",
+ "mbgl/renderer/buckets/fill_extrusion_bucket.hpp": "src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp",
+ "mbgl/renderer/buckets/heatmap_bucket.hpp": "src/mbgl/renderer/buckets/heatmap_bucket.hpp",
+ "mbgl/renderer/buckets/hillshade_bucket.hpp": "src/mbgl/renderer/buckets/hillshade_bucket.hpp",
+ "mbgl/renderer/buckets/line_bucket.hpp": "src/mbgl/renderer/buckets/line_bucket.hpp",
+ "mbgl/renderer/buckets/raster_bucket.hpp": "src/mbgl/renderer/buckets/raster_bucket.hpp",
+ "mbgl/renderer/buckets/symbol_bucket.hpp": "src/mbgl/renderer/buckets/symbol_bucket.hpp",
+ "mbgl/renderer/cross_faded_property_evaluator.hpp": "src/mbgl/renderer/cross_faded_property_evaluator.hpp",
+ "mbgl/renderer/data_driven_property_evaluator.hpp": "src/mbgl/renderer/data_driven_property_evaluator.hpp",
+ "mbgl/renderer/group_by_layout.hpp": "src/mbgl/renderer/group_by_layout.hpp",
+ "mbgl/renderer/image_atlas.hpp": "src/mbgl/renderer/image_atlas.hpp",
+ "mbgl/renderer/image_manager.hpp": "src/mbgl/renderer/image_manager.hpp",
+ "mbgl/renderer/image_manager_observer.hpp": "src/mbgl/renderer/image_manager_observer.hpp",
+ "mbgl/renderer/layers/render_background_layer.hpp": "src/mbgl/renderer/layers/render_background_layer.hpp",
+ "mbgl/renderer/layers/render_circle_layer.hpp": "src/mbgl/renderer/layers/render_circle_layer.hpp",
+ "mbgl/renderer/layers/render_fill_extrusion_layer.hpp": "src/mbgl/renderer/layers/render_fill_extrusion_layer.hpp",
+ "mbgl/renderer/layers/render_fill_layer.hpp": "src/mbgl/renderer/layers/render_fill_layer.hpp",
+ "mbgl/renderer/layers/render_heatmap_layer.hpp": "src/mbgl/renderer/layers/render_heatmap_layer.hpp",
+ "mbgl/renderer/layers/render_hillshade_layer.hpp": "src/mbgl/renderer/layers/render_hillshade_layer.hpp",
+ "mbgl/renderer/layers/render_line_layer.hpp": "src/mbgl/renderer/layers/render_line_layer.hpp",
+ "mbgl/renderer/layers/render_raster_layer.hpp": "src/mbgl/renderer/layers/render_raster_layer.hpp",
+ "mbgl/renderer/layers/render_symbol_layer.hpp": "src/mbgl/renderer/layers/render_symbol_layer.hpp",
+ "mbgl/renderer/paint_parameters.hpp": "src/mbgl/renderer/paint_parameters.hpp",
+ "mbgl/renderer/paint_property_binder.hpp": "src/mbgl/renderer/paint_property_binder.hpp",
+ "mbgl/renderer/paint_property_statistics.hpp": "src/mbgl/renderer/paint_property_statistics.hpp",
+ "mbgl/renderer/pattern_atlas.hpp": "src/mbgl/renderer/pattern_atlas.hpp",
+ "mbgl/renderer/possibly_evaluated_property_value.hpp": "src/mbgl/renderer/possibly_evaluated_property_value.hpp",
+ "mbgl/renderer/property_evaluation_parameters.hpp": "src/mbgl/renderer/property_evaluation_parameters.hpp",
+ "mbgl/renderer/property_evaluator.hpp": "src/mbgl/renderer/property_evaluator.hpp",
+ "mbgl/renderer/render_layer.hpp": "src/mbgl/renderer/render_layer.hpp",
+ "mbgl/renderer/render_light.hpp": "src/mbgl/renderer/render_light.hpp",
+ "mbgl/renderer/render_orchestrator.hpp": "src/mbgl/renderer/render_orchestrator.hpp",
+ "mbgl/renderer/render_pass.hpp": "src/mbgl/renderer/render_pass.hpp",
+ "mbgl/renderer/render_source.hpp": "src/mbgl/renderer/render_source.hpp",
+ "mbgl/renderer/render_source_observer.hpp": "src/mbgl/renderer/render_source_observer.hpp",
+ "mbgl/renderer/render_static_data.hpp": "src/mbgl/renderer/render_static_data.hpp",
+ "mbgl/renderer/render_tile.hpp": "src/mbgl/renderer/render_tile.hpp",
+ "mbgl/renderer/render_tree.hpp": "src/mbgl/renderer/render_tree.hpp",
+ "mbgl/renderer/renderer_impl.hpp": "src/mbgl/renderer/renderer_impl.hpp",
+ "mbgl/renderer/source_state.hpp": "src/mbgl/renderer/source_state.hpp",
+ "mbgl/renderer/sources/render_custom_geometry_source.hpp": "src/mbgl/renderer/sources/render_custom_geometry_source.hpp",
+ "mbgl/renderer/sources/render_geojson_source.hpp": "src/mbgl/renderer/sources/render_geojson_source.hpp",
+ "mbgl/renderer/sources/render_image_source.hpp": "src/mbgl/renderer/sources/render_image_source.hpp",
+ "mbgl/renderer/sources/render_raster_dem_source.hpp": "src/mbgl/renderer/sources/render_raster_dem_source.hpp",
+ "mbgl/renderer/sources/render_raster_source.hpp": "src/mbgl/renderer/sources/render_raster_source.hpp",
+ "mbgl/renderer/sources/render_tile_source.hpp": "src/mbgl/renderer/sources/render_tile_source.hpp",
+ "mbgl/renderer/sources/render_vector_source.hpp": "src/mbgl/renderer/sources/render_vector_source.hpp",
+ "mbgl/renderer/style_diff.hpp": "src/mbgl/renderer/style_diff.hpp",
+ "mbgl/renderer/tile_mask.hpp": "src/mbgl/renderer/tile_mask.hpp",
+ "mbgl/renderer/tile_parameters.hpp": "src/mbgl/renderer/tile_parameters.hpp",
+ "mbgl/renderer/tile_pyramid.hpp": "src/mbgl/renderer/tile_pyramid.hpp",
+ "mbgl/renderer/tile_render_data.hpp": "src/mbgl/renderer/tile_render_data.hpp",
+ "mbgl/renderer/transition_parameters.hpp": "src/mbgl/renderer/transition_parameters.hpp",
+ "mbgl/renderer/update_parameters.hpp": "src/mbgl/renderer/update_parameters.hpp",
+ "mbgl/renderer/upload_parameters.hpp": "src/mbgl/renderer/upload_parameters.hpp",
+ "mbgl/sprite/sprite_loader.hpp": "src/mbgl/sprite/sprite_loader.hpp",
+ "mbgl/sprite/sprite_loader_observer.hpp": "src/mbgl/sprite/sprite_loader_observer.hpp",
+ "mbgl/sprite/sprite_loader_worker.hpp": "src/mbgl/sprite/sprite_loader_worker.hpp",
+ "mbgl/sprite/sprite_parser.hpp": "src/mbgl/sprite/sprite_parser.hpp",
+ "mbgl/storage/asset_file_source.hpp": "src/mbgl/storage/asset_file_source.hpp",
+ "mbgl/storage/http_file_source.hpp": "src/mbgl/storage/http_file_source.hpp",
+ "mbgl/storage/local_file_source.hpp": "src/mbgl/storage/local_file_source.hpp",
+ "mbgl/storage/main_resource_loader.hpp": "src/mbgl/storage/main_resource_loader.hpp",
+ "mbgl/style/collection.hpp": "src/mbgl/style/collection.hpp",
+ "mbgl/style/conversion/json.hpp": "src/mbgl/style/conversion/json.hpp",
+ "mbgl/style/conversion/stringify.hpp": "src/mbgl/style/conversion/stringify.hpp",
+ "mbgl/style/custom_tile_loader.hpp": "src/mbgl/style/custom_tile_loader.hpp",
+ "mbgl/style/expression/dsl_impl.hpp": "src/mbgl/style/expression/dsl_impl.hpp",
+ "mbgl/style/expression/util.hpp": "src/mbgl/style/expression/util.hpp",
+ "mbgl/style/image_impl.hpp": "src/mbgl/style/image_impl.hpp",
+ "mbgl/style/layer_impl.hpp": "src/mbgl/style/layer_impl.hpp",
+ "mbgl/style/layer_observer.hpp": "src/mbgl/style/layer_observer.hpp",
+ "mbgl/style/layers/background_layer_impl.hpp": "src/mbgl/style/layers/background_layer_impl.hpp",
+ "mbgl/style/layers/background_layer_properties.hpp": "src/mbgl/style/layers/background_layer_properties.hpp",
+ "mbgl/style/layers/circle_layer_impl.hpp": "src/mbgl/style/layers/circle_layer_impl.hpp",
+ "mbgl/style/layers/circle_layer_properties.hpp": "src/mbgl/style/layers/circle_layer_properties.hpp",
+ "mbgl/style/layers/fill_extrusion_layer_impl.hpp": "src/mbgl/style/layers/fill_extrusion_layer_impl.hpp",
+ "mbgl/style/layers/fill_extrusion_layer_properties.hpp": "src/mbgl/style/layers/fill_extrusion_layer_properties.hpp",
+ "mbgl/style/layers/fill_layer_impl.hpp": "src/mbgl/style/layers/fill_layer_impl.hpp",
+ "mbgl/style/layers/fill_layer_properties.hpp": "src/mbgl/style/layers/fill_layer_properties.hpp",
+ "mbgl/style/layers/heatmap_layer_impl.hpp": "src/mbgl/style/layers/heatmap_layer_impl.hpp",
+ "mbgl/style/layers/heatmap_layer_properties.hpp": "src/mbgl/style/layers/heatmap_layer_properties.hpp",
+ "mbgl/style/layers/hillshade_layer_impl.hpp": "src/mbgl/style/layers/hillshade_layer_impl.hpp",
+ "mbgl/style/layers/hillshade_layer_properties.hpp": "src/mbgl/style/layers/hillshade_layer_properties.hpp",
+ "mbgl/style/layers/line_layer_impl.hpp": "src/mbgl/style/layers/line_layer_impl.hpp",
+ "mbgl/style/layers/line_layer_properties.hpp": "src/mbgl/style/layers/line_layer_properties.hpp",
+ "mbgl/style/layers/raster_layer_impl.hpp": "src/mbgl/style/layers/raster_layer_impl.hpp",
+ "mbgl/style/layers/raster_layer_properties.hpp": "src/mbgl/style/layers/raster_layer_properties.hpp",
+ "mbgl/style/layers/symbol_layer_impl.hpp": "src/mbgl/style/layers/symbol_layer_impl.hpp",
+ "mbgl/style/layers/symbol_layer_properties.hpp": "src/mbgl/style/layers/symbol_layer_properties.hpp",
+ "mbgl/style/layout_property.hpp": "src/mbgl/style/layout_property.hpp",
+ "mbgl/style/light_impl.hpp": "src/mbgl/style/light_impl.hpp",
+ "mbgl/style/light_observer.hpp": "src/mbgl/style/light_observer.hpp",
+ "mbgl/style/observer.hpp": "src/mbgl/style/observer.hpp",
+ "mbgl/style/paint_property.hpp": "src/mbgl/style/paint_property.hpp",
+ "mbgl/style/parser.hpp": "src/mbgl/style/parser.hpp",
+ "mbgl/style/properties.hpp": "src/mbgl/style/properties.hpp",
+ "mbgl/style/rapidjson_conversion.hpp": "src/mbgl/style/rapidjson_conversion.hpp",
+ "mbgl/style/source_impl.hpp": "src/mbgl/style/source_impl.hpp",
+ "mbgl/style/source_observer.hpp": "src/mbgl/style/source_observer.hpp",
+ "mbgl/style/sources/custom_geometry_source_impl.hpp": "src/mbgl/style/sources/custom_geometry_source_impl.hpp",
+ "mbgl/style/sources/geojson_source_impl.hpp": "src/mbgl/style/sources/geojson_source_impl.hpp",
+ "mbgl/style/sources/image_source_impl.hpp": "src/mbgl/style/sources/image_source_impl.hpp",
+ "mbgl/style/sources/raster_source_impl.hpp": "src/mbgl/style/sources/raster_source_impl.hpp",
+ "mbgl/style/sources/vector_source_impl.hpp": "src/mbgl/style/sources/vector_source_impl.hpp",
+ "mbgl/style/style_impl.hpp": "src/mbgl/style/style_impl.hpp",
+ "mbgl/text/bidi.hpp": "src/mbgl/text/bidi.hpp",
+ "mbgl/text/check_max_angle.hpp": "src/mbgl/text/check_max_angle.hpp",
+ "mbgl/text/collision_feature.hpp": "src/mbgl/text/collision_feature.hpp",
+ "mbgl/text/collision_index.hpp": "src/mbgl/text/collision_index.hpp",
+ "mbgl/text/cross_tile_symbol_index.hpp": "src/mbgl/text/cross_tile_symbol_index.hpp",
+ "mbgl/text/get_anchors.hpp": "src/mbgl/text/get_anchors.hpp",
+ "mbgl/text/glyph.hpp": "src/mbgl/text/glyph.hpp",
+ "mbgl/text/glyph_atlas.hpp": "src/mbgl/text/glyph_atlas.hpp",
+ "mbgl/text/glyph_manager.hpp": "src/mbgl/text/glyph_manager.hpp",
+ "mbgl/text/glyph_manager_observer.hpp": "src/mbgl/text/glyph_manager_observer.hpp",
+ "mbgl/text/glyph_pbf.hpp": "src/mbgl/text/glyph_pbf.hpp",
+ "mbgl/text/glyph_range.hpp": "src/mbgl/text/glyph_range.hpp",
+ "mbgl/text/language_tag.hpp": "src/mbgl/text/language_tag.hpp",
+ "mbgl/text/local_glyph_rasterizer.hpp": "src/mbgl/text/local_glyph_rasterizer.hpp",
+ "mbgl/text/placement.hpp": "src/mbgl/text/placement.hpp",
+ "mbgl/text/quads.hpp": "src/mbgl/text/quads.hpp",
+ "mbgl/text/shaping.hpp": "src/mbgl/text/shaping.hpp",
+ "mbgl/text/tagged_string.hpp": "src/mbgl/text/tagged_string.hpp",
+ "mbgl/tile/custom_geometry_tile.hpp": "src/mbgl/tile/custom_geometry_tile.hpp",
+ "mbgl/tile/geojson_tile.hpp": "src/mbgl/tile/geojson_tile.hpp",
+ "mbgl/tile/geojson_tile_data.hpp": "src/mbgl/tile/geojson_tile_data.hpp",
+ "mbgl/tile/geometry_tile.hpp": "src/mbgl/tile/geometry_tile.hpp",
+ "mbgl/tile/geometry_tile_data.hpp": "src/mbgl/tile/geometry_tile_data.hpp",
+ "mbgl/tile/geometry_tile_worker.hpp": "src/mbgl/tile/geometry_tile_worker.hpp",
+ "mbgl/tile/raster_dem_tile.hpp": "src/mbgl/tile/raster_dem_tile.hpp",
+ "mbgl/tile/raster_dem_tile_worker.hpp": "src/mbgl/tile/raster_dem_tile_worker.hpp",
+ "mbgl/tile/raster_tile.hpp": "src/mbgl/tile/raster_tile.hpp",
+ "mbgl/tile/raster_tile_worker.hpp": "src/mbgl/tile/raster_tile_worker.hpp",
+ "mbgl/tile/tile.hpp": "src/mbgl/tile/tile.hpp",
+ "mbgl/tile/tile_cache.hpp": "src/mbgl/tile/tile_cache.hpp",
+ "mbgl/tile/tile_loader.hpp": "src/mbgl/tile/tile_loader.hpp",
+ "mbgl/tile/tile_loader_impl.hpp": "src/mbgl/tile/tile_loader_impl.hpp",
+ "mbgl/tile/tile_observer.hpp": "src/mbgl/tile/tile_observer.hpp",
+ "mbgl/tile/vector_tile.hpp": "src/mbgl/tile/vector_tile.hpp",
+ "mbgl/tile/vector_tile_data.hpp": "src/mbgl/tile/vector_tile_data.hpp",
+ "mbgl/util/dtoa.hpp": "src/mbgl/util/dtoa.hpp",
+ "mbgl/util/grid_index.hpp": "src/mbgl/util/grid_index.hpp",
+ "mbgl/util/hash.hpp": "src/mbgl/util/hash.hpp",
+ "mbgl/util/http_header.hpp": "src/mbgl/util/http_header.hpp",
+ "mbgl/util/http_timeout.hpp": "src/mbgl/util/http_timeout.hpp",
+ "mbgl/util/i18n.hpp": "src/mbgl/util/i18n.hpp",
+ "mbgl/util/id.hpp": "src/mbgl/util/id.hpp",
+ "mbgl/util/intersection_tests.hpp": "src/mbgl/util/intersection_tests.hpp",
+ "mbgl/util/io.hpp": "src/mbgl/util/io.hpp",
+ "mbgl/util/literal.hpp": "src/mbgl/util/literal.hpp",
+ "mbgl/util/longest_common_subsequence.hpp": "src/mbgl/util/longest_common_subsequence.hpp",
+ "mbgl/util/mapbox.hpp": "src/mbgl/util/mapbox.hpp",
+ "mbgl/util/mat2.hpp": "src/mbgl/util/mat2.hpp",
+ "mbgl/util/mat3.hpp": "src/mbgl/util/mat3.hpp",
+ "mbgl/util/mat4.hpp": "src/mbgl/util/mat4.hpp",
+ "mbgl/util/math.hpp": "src/mbgl/util/math.hpp",
+ "mbgl/util/rapidjson.hpp": "src/mbgl/util/rapidjson.hpp",
+ "mbgl/util/rect.hpp": "src/mbgl/util/rect.hpp",
+ "mbgl/util/std.hpp": "src/mbgl/util/std.hpp",
+ "mbgl/util/stopwatch.hpp": "src/mbgl/util/stopwatch.hpp",
+ "mbgl/util/thread_local.hpp": "src/mbgl/util/thread_local.hpp",
+ "mbgl/util/thread_pool.hpp": "src/mbgl/util/thread_pool.hpp",
+ "mbgl/util/tile_coordinate.hpp": "src/mbgl/util/tile_coordinate.hpp",
+ "mbgl/util/tile_cover.hpp": "src/mbgl/util/tile_cover.hpp",
+ "mbgl/util/tile_cover_impl.hpp": "src/mbgl/util/tile_cover_impl.hpp",
+ "mbgl/util/tile_range.hpp": "src/mbgl/util/tile_range.hpp",
+ "mbgl/util/tiny_sdf.hpp": "src/mbgl/util/tiny_sdf.hpp",
+ "mbgl/util/token.hpp": "src/mbgl/util/token.hpp",
+ "mbgl/util/url.hpp": "src/mbgl/util/url.hpp",
+ "mbgl/util/utf.hpp": "src/mbgl/util/utf.hpp",
+ "mbgl/util/version.hpp": "src/mbgl/util/version.hpp",
+ "parsedate/parsedate.hpp": "src/parsedate/parsedate.hpp"
+ }
+}
diff --git a/src/mbgl/layout/layout.hpp b/src/mbgl/layout/layout.hpp
index 4e7c0c7aca..ae0eb5d5f3 100644
--- a/src/mbgl/layout/layout.hpp
+++ b/src/mbgl/layout/layout.hpp
@@ -21,7 +21,8 @@ public:
std::unique_ptr<FeatureIndex>&,
std::unordered_map<std::string, LayerRenderData>&,
const bool,
- const bool) = 0;
+ const bool,
+ const CanonicalTileID&) = 0;
virtual void prepareSymbols(const GlyphMap&, const GlyphPositions&, const ImageMap&, const ImagePositions&){};
diff --git a/src/mbgl/layout/pattern_layout.hpp b/src/mbgl/layout/pattern_layout.hpp
index 44729dea83..c6815e4cad 100644
--- a/src/mbgl/layout/pattern_layout.hpp
+++ b/src/mbgl/layout/pattern_layout.hpp
@@ -152,7 +152,12 @@ public:
return hasPattern;
}
- void createBucket(const ImagePositions& patternPositions, std::unique_ptr<FeatureIndex>& featureIndex, std::unordered_map<std::string, LayerRenderData>& renderData, const bool, const bool) override {
+ void createBucket(const ImagePositions& patternPositions,
+ std::unique_ptr<FeatureIndex>& featureIndex,
+ std::unordered_map<std::string, LayerRenderData>& renderData,
+ const bool,
+ const bool,
+ const CanonicalTileID& canonical) override {
auto bucket = std::make_shared<BucketType>(layout, layerPropertiesMap, zoom, overscaling);
for (auto & patternFeature : features) {
const auto i = patternFeature.i;
@@ -160,7 +165,7 @@ public:
const PatternLayerMap& patterns = patternFeature.patterns;
const GeometryCollection& geometries = feature->getGeometries();
- bucket->addFeature(*feature, geometries, patternPositions, patterns, i);
+ bucket->addFeature(*feature, geometries, patternPositions, patterns, i, canonical);
featureIndex->insert(geometries, i, sourceLayerID, bucketLeaderID);
}
if (bucket->hasData()) {
diff --git a/src/mbgl/layout/symbol_feature.hpp b/src/mbgl/layout/symbol_feature.hpp
index d0aced1b19..f536642709 100644
--- a/src/mbgl/layout/symbol_feature.hpp
+++ b/src/mbgl/layout/symbol_feature.hpp
@@ -12,16 +12,16 @@ namespace mbgl {
class SymbolFeature : public GeometryTileFeature {
public:
- SymbolFeature(std::unique_ptr<GeometryTileFeature> feature_) :
- feature(std::move(feature_)),
- geometry(feature->getGeometries().clone()) // we need a mutable copy of the geometry for mergeLines()
+ SymbolFeature(std::unique_ptr<GeometryTileFeature> feature_)
+ : feature(std::move(feature_)),
+ geometry(feature->getGeometries().clone()) // we need a mutable copy of the geometry for mergeLines()
{}
-
+
FeatureType getType() const override { return feature->getType(); }
- optional<Value> getValue(const std::string& key) const override { return feature->getValue(key); };
- const PropertyMap& getProperties() const override { return feature->getProperties(); };
+ optional<Value> getValue(const std::string& key) const override { return feature->getValue(key); }
+ const PropertyMap& getProperties() const override { return feature->getProperties(); }
FeatureIdentifier getID() const override { return feature->getID(); };
- const GeometryCollection& getGeometries() const override { return geometry; };
+ const GeometryCollection& getGeometries() const override { return feature->getGeometries(); }
friend bool operator < (const SymbolFeature& lhs, const SymbolFeature& rhs) {
return lhs.sortKey < rhs.sortKey;
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp
index 61c3b4ad66..a4890c85d1 100644
--- a/src/mbgl/layout/symbol_layout.cpp
+++ b/src/mbgl/layout/symbol_layout.cpp
@@ -742,7 +742,12 @@ std::vector<float> SymbolLayout::calculateTileDistances(const GeometryCoordinate
return tileDistances;
}
-void SymbolLayout::createBucket(const ImagePositions&, std::unique_ptr<FeatureIndex>&, std::unordered_map<std::string, LayerRenderData>& renderData, const bool firstLoad, const bool showCollisionBoxes) {
+void SymbolLayout::createBucket(const ImagePositions&,
+ std::unique_ptr<FeatureIndex>&,
+ std::unordered_map<std::string, LayerRenderData>& renderData,
+ const bool firstLoad,
+ const bool showCollisionBoxes,
+ const CanonicalTileID& canonical) {
auto bucket = std::make_shared<SymbolBucket>(layout,
layerPaintProperties,
textSize,
@@ -796,8 +801,8 @@ void SymbolLayout::createBucket(const ImagePositions&, std::unique_ptr<FeatureIn
}
for (auto& pair : bucket->paintProperties) {
- pair.second.iconBinders.populateVertexVectors(feature, iconBuffer.vertices.elements(),
- symbolInstance.dataFeatureIndex, {}, {});
+ pair.second.iconBinders.populateVertexVectors(
+ feature, iconBuffer.vertices.elements(), symbolInstance.dataFeatureIndex, {}, {}, canonical);
}
}
@@ -805,26 +810,61 @@ void SymbolLayout::createBucket(const ImagePositions&, std::unique_ptr<FeatureIn
optional<std::size_t> lastAddedSection;
if (singleLine) {
optional<std::size_t> placedTextIndex;
- lastAddedSection = addSymbolGlyphQuads(*bucket, symbolInstance, feature, symbolInstance.writingModes, placedTextIndex, symbolInstance.rightJustifiedGlyphQuads(), lastAddedSection);
+ lastAddedSection = addSymbolGlyphQuads(*bucket,
+ symbolInstance,
+ feature,
+ symbolInstance.writingModes,
+ placedTextIndex,
+ symbolInstance.rightJustifiedGlyphQuads(),
+ canonical,
+ lastAddedSection);
symbolInstance.placedRightTextIndex = placedTextIndex;
symbolInstance.placedCenterTextIndex = placedTextIndex;
symbolInstance.placedLeftTextIndex = placedTextIndex;
} else {
if (symbolInstance.rightJustifiedGlyphQuadsSize) {
- lastAddedSection = addSymbolGlyphQuads(*bucket, symbolInstance, feature, symbolInstance.writingModes, symbolInstance.placedRightTextIndex, symbolInstance.rightJustifiedGlyphQuads(), lastAddedSection);
+ lastAddedSection = addSymbolGlyphQuads(*bucket,
+ symbolInstance,
+ feature,
+ symbolInstance.writingModes,
+ symbolInstance.placedRightTextIndex,
+ symbolInstance.rightJustifiedGlyphQuads(),
+ canonical,
+ lastAddedSection);
}
if (symbolInstance.centerJustifiedGlyphQuadsSize) {
- lastAddedSection = addSymbolGlyphQuads(*bucket, symbolInstance, feature, symbolInstance.writingModes, symbolInstance.placedCenterTextIndex, symbolInstance.centerJustifiedGlyphQuads(), lastAddedSection);
+ lastAddedSection = addSymbolGlyphQuads(*bucket,
+ symbolInstance,
+ feature,
+ symbolInstance.writingModes,
+ symbolInstance.placedCenterTextIndex,
+ symbolInstance.centerJustifiedGlyphQuads(),
+ canonical,
+ lastAddedSection);
}
if (symbolInstance.leftJustifiedGlyphQuadsSize) {
- lastAddedSection = addSymbolGlyphQuads(*bucket, symbolInstance, feature, symbolInstance.writingModes, symbolInstance.placedLeftTextIndex, symbolInstance.leftJustifiedGlyphQuads(), lastAddedSection);
+ lastAddedSection = addSymbolGlyphQuads(*bucket,
+ symbolInstance,
+ feature,
+ symbolInstance.writingModes,
+ symbolInstance.placedLeftTextIndex,
+ symbolInstance.leftJustifiedGlyphQuads(),
+ canonical,
+ lastAddedSection);
}
}
if (symbolInstance.writingModes & WritingModeType::Vertical && symbolInstance.verticalGlyphQuadsSize) {
- lastAddedSection = addSymbolGlyphQuads(*bucket, symbolInstance, feature, WritingModeType::Vertical, symbolInstance.placedVerticalTextIndex, symbolInstance.verticalGlyphQuads(), lastAddedSection);
+ lastAddedSection = addSymbolGlyphQuads(*bucket,
+ symbolInstance,
+ feature,
+ WritingModeType::Vertical,
+ symbolInstance.placedVerticalTextIndex,
+ symbolInstance.verticalGlyphQuads(),
+ canonical,
+ lastAddedSection);
}
assert(lastAddedSection); // True, as hasText == true;
- updatePaintPropertiesForSection(*bucket, feature, *lastAddedSection);
+ updatePaintPropertiesForSection(*bucket, feature, *lastAddedSection, canonical);
}
symbolInstance.releaseSharedData();
@@ -841,16 +881,16 @@ void SymbolLayout::createBucket(const ImagePositions&, std::unique_ptr<FeatureIn
renderData.emplace(pair.first, LayerRenderData{bucket, pair.second});
}
}
-
}
void SymbolLayout::updatePaintPropertiesForSection(SymbolBucket& bucket,
const SymbolFeature& feature,
- std::size_t sectionIndex) {
+ std::size_t sectionIndex,
+ const CanonicalTileID& canonical) {
const auto& formattedSection = sectionOptionsToValue((*feature.formattedText).sectionAt(sectionIndex));
for (auto& pair : bucket.paintProperties) {
- pair.second.textBinders.populateVertexVectors(feature, bucket.text.vertices.elements(), feature.index, {}, {},
- formattedSection);
+ pair.second.textBinders.populateVertexVectors(
+ feature, bucket.text.vertices.elements(), feature.index, {}, {}, canonical, formattedSection);
}
}
@@ -860,6 +900,7 @@ std::size_t SymbolLayout::addSymbolGlyphQuads(SymbolBucket& bucket,
WritingModeType writingMode,
optional<size_t>& placedIndex,
const SymbolQuads& glyphQuads,
+ const CanonicalTileID& canonical,
optional<std::size_t> lastAddedSection) {
const Range<float> sizeData = bucket.textSizeBinder->getVertexSizeData(feature);
const bool hasFormatSectionOverrides = bucket.hasFormatSectionOverrides();
@@ -881,7 +922,7 @@ std::size_t SymbolLayout::addSymbolGlyphQuads(SymbolBucket& bucket,
for (const auto& symbolQuad : glyphQuads) {
if (hasFormatSectionOverrides) {
if (lastAddedSection && *lastAddedSection != symbolQuad.sectionIndex) {
- updatePaintPropertiesForSection(bucket, feature, *lastAddedSection);
+ updatePaintPropertiesForSection(bucket, feature, *lastAddedSection, canonical);
}
lastAddedSection = symbolQuad.sectionIndex;
}
diff --git a/src/mbgl/layout/symbol_layout.hpp b/src/mbgl/layout/symbol_layout.hpp
index 52c912c8ae..740a69df9e 100644
--- a/src/mbgl/layout/symbol_layout.hpp
+++ b/src/mbgl/layout/symbol_layout.hpp
@@ -36,7 +36,12 @@ public:
const ImageMap&,
const ImagePositions&) override;
- void createBucket(const ImagePositions&, std::unique_ptr<FeatureIndex>&, std::unordered_map<std::string, LayerRenderData>&, const bool firstLoad, const bool showCollisionBoxes) override;
+ void createBucket(const ImagePositions&,
+ std::unique_ptr<FeatureIndex>&,
+ std::unordered_map<std::string, LayerRenderData>&,
+ const bool firstLoad,
+ const bool showCollisionBoxes,
+ const CanonicalTileID& canonical) override;
bool hasSymbolInstances() const override;
bool hasDependencies() const override;
@@ -97,11 +102,13 @@ private:
WritingModeType,
optional<size_t>& placedIndex,
const SymbolQuads&,
+ const CanonicalTileID& canonical,
optional<std::size_t> lastAddedSection = nullopt);
void updatePaintPropertiesForSection(SymbolBucket&,
const SymbolFeature&,
- std::size_t sectionIndex);
+ std::size_t sectionIndex,
+ const CanonicalTileID& canonical);
// Stores the layer so that we can hold on to GeometryTileFeature instances in SymbolFeature,
// which may reference data from this object.
diff --git a/src/mbgl/renderer/bucket.hpp b/src/mbgl/renderer/bucket.hpp
index fc34f55e75..4e28107f07 100644
--- a/src/mbgl/renderer/bucket.hpp
+++ b/src/mbgl/renderer/bucket.hpp
@@ -32,8 +32,12 @@ public:
// Feature geometries are also used to populate the feature index.
// Obtaining these is a costly operation, so we do it only once, and
// pass-by-const-ref the geometries as a second parameter.
- virtual void addFeature(const GeometryTileFeature&, const GeometryCollection&, const ImagePositions&,
- const PatternLayerMap&, std::size_t){};
+ virtual void addFeature(const GeometryTileFeature&,
+ const GeometryCollection&,
+ const ImagePositions&,
+ const PatternLayerMap&,
+ std::size_t,
+ const CanonicalTileID&){};
virtual void update(const FeatureStates&, const GeometryTileLayer&, const std::string&, const ImagePositions&) {}
diff --git a/src/mbgl/renderer/buckets/circle_bucket.cpp b/src/mbgl/renderer/buckets/circle_bucket.cpp
index 560a74781a..744b559c42 100644
--- a/src/mbgl/renderer/buckets/circle_bucket.cpp
+++ b/src/mbgl/renderer/buckets/circle_bucket.cpp
@@ -41,8 +41,12 @@ bool CircleBucket::hasData() const {
return !segments.empty();
}
-void CircleBucket::addFeature(const GeometryTileFeature& feature, const GeometryCollection& geometry,
- const ImagePositions&, const PatternLayerMap&, std::size_t featureIndex) {
+void CircleBucket::addFeature(const GeometryTileFeature& feature,
+ const GeometryCollection& geometry,
+ const ImagePositions&,
+ const PatternLayerMap&,
+ std::size_t featureIndex,
+ const CanonicalTileID& canonical) {
constexpr const uint16_t vertexLength = 4;
for (auto& circle : geometry) {
@@ -90,7 +94,7 @@ void CircleBucket::addFeature(const GeometryTileFeature& feature, const Geometry
}
for (auto& pair : paintPropertyBinders) {
- pair.second.populateVertexVectors(feature, vertices.elements(), featureIndex, {}, {});
+ pair.second.populateVertexVectors(feature, vertices.elements(), featureIndex, {}, {}, canonical);
}
}
diff --git a/src/mbgl/renderer/buckets/circle_bucket.hpp b/src/mbgl/renderer/buckets/circle_bucket.hpp
index e514f8a5f2..17ddd9dc10 100644
--- a/src/mbgl/renderer/buckets/circle_bucket.hpp
+++ b/src/mbgl/renderer/buckets/circle_bucket.hpp
@@ -18,8 +18,12 @@ public:
CircleBucket(const BucketParameters&, const std::vector<Immutable<style::LayerProperties>>&);
~CircleBucket() override;
- void addFeature(const GeometryTileFeature&, const GeometryCollection&, const ImagePositions&,
- const PatternLayerMap&, std::size_t) override;
+ void addFeature(const GeometryTileFeature&,
+ const GeometryCollection&,
+ const ImagePositions&,
+ const PatternLayerMap&,
+ std::size_t,
+ const CanonicalTileID&) override;
bool hasData() const override;
diff --git a/src/mbgl/renderer/buckets/fill_bucket.cpp b/src/mbgl/renderer/buckets/fill_bucket.cpp
index 6660934f8d..73c2530241 100644
--- a/src/mbgl/renderer/buckets/fill_bucket.cpp
+++ b/src/mbgl/renderer/buckets/fill_bucket.cpp
@@ -44,9 +44,12 @@ FillBucket::FillBucket(const FillBucket::PossiblyEvaluatedLayoutProperties,
FillBucket::~FillBucket() = default;
-void FillBucket::addFeature(const GeometryTileFeature& feature, const GeometryCollection& geometry,
- const ImagePositions& patternPositions, const PatternLayerMap& patternDependencies,
- std::size_t index) {
+void FillBucket::addFeature(const GeometryTileFeature& feature,
+ const GeometryCollection& geometry,
+ const ImagePositions& patternPositions,
+ const PatternLayerMap& patternDependencies,
+ std::size_t index,
+ const CanonicalTileID& canonical) {
for (auto& polygon : classifyRings(geometry)) {
// Optimize polygons with many interior rings for earcut tesselation.
limitHoles(polygon, 500);
@@ -113,9 +116,10 @@ void FillBucket::addFeature(const GeometryTileFeature& feature, const GeometryCo
for (auto& pair : paintPropertyBinders) {
const auto it = patternDependencies.find(pair.first);
if (it != patternDependencies.end()){
- pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, it->second);
+ pair.second.populateVertexVectors(
+ feature, vertices.elements(), index, patternPositions, it->second, canonical);
} else {
- pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, {});
+ pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, {}, canonical);
}
}
}
diff --git a/src/mbgl/renderer/buckets/fill_bucket.hpp b/src/mbgl/renderer/buckets/fill_bucket.hpp
index 7a3f681121..4de97141a7 100644
--- a/src/mbgl/renderer/buckets/fill_bucket.hpp
+++ b/src/mbgl/renderer/buckets/fill_bucket.hpp
@@ -25,8 +25,12 @@ public:
const float zoom,
const uint32_t overscaling);
- void addFeature(const GeometryTileFeature&, const GeometryCollection&, const mbgl::ImagePositions&,
- const PatternLayerMap&, std::size_t) override;
+ void addFeature(const GeometryTileFeature&,
+ const GeometryCollection&,
+ const mbgl::ImagePositions&,
+ const PatternLayerMap&,
+ std::size_t,
+ const CanonicalTileID&) override;
bool hasData() const override;
diff --git a/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp b/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp
index 698895fdcf..39c9f9af1e 100644
--- a/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp
+++ b/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp
@@ -50,9 +50,12 @@ FillExtrusionBucket::FillExtrusionBucket(const FillExtrusionBucket::PossiblyEval
FillExtrusionBucket::~FillExtrusionBucket() = default;
-void FillExtrusionBucket::addFeature(const GeometryTileFeature& feature, const GeometryCollection& geometry,
- const ImagePositions& patternPositions, const PatternLayerMap& patternDependencies,
- std::size_t index) {
+void FillExtrusionBucket::addFeature(const GeometryTileFeature& feature,
+ const GeometryCollection& geometry,
+ const ImagePositions& patternPositions,
+ const PatternLayerMap& patternDependencies,
+ std::size_t index,
+ const CanonicalTileID& canonical) {
for (auto& polygon : classifyRings(geometry)) {
// Optimize polygons with many interior rings for earcut tesselation.
limitHoles(polygon, 500);
@@ -157,9 +160,10 @@ void FillExtrusionBucket::addFeature(const GeometryTileFeature& feature, const G
for (auto& pair : paintPropertyBinders) {
const auto it = patternDependencies.find(pair.first);
if (it != patternDependencies.end()){
- pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, it->second);
+ pair.second.populateVertexVectors(
+ feature, vertices.elements(), index, patternPositions, it->second, canonical);
} else {
- pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, {});
+ pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, {}, canonical);
}
}
}
diff --git a/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp b/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp
index 8535f99b70..833eee7a73 100644
--- a/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp
+++ b/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp
@@ -24,8 +24,12 @@ public:
const float,
const uint32_t);
- void addFeature(const GeometryTileFeature&, const GeometryCollection&, const mbgl::ImagePositions&,
- const PatternLayerMap&, std::size_t) override;
+ void addFeature(const GeometryTileFeature&,
+ const GeometryCollection&,
+ const mbgl::ImagePositions&,
+ const PatternLayerMap&,
+ std::size_t,
+ const CanonicalTileID&) override;
bool hasData() const override;
diff --git a/src/mbgl/renderer/buckets/heatmap_bucket.cpp b/src/mbgl/renderer/buckets/heatmap_bucket.cpp
index 78c4fb7507..31c4bc0e9c 100644
--- a/src/mbgl/renderer/buckets/heatmap_bucket.cpp
+++ b/src/mbgl/renderer/buckets/heatmap_bucket.cpp
@@ -39,8 +39,12 @@ bool HeatmapBucket::hasData() const {
return !segments.empty();
}
-void HeatmapBucket::addFeature(const GeometryTileFeature& feature, const GeometryCollection& geometry,
- const ImagePositions&, const PatternLayerMap&, std::size_t featureIndex) {
+void HeatmapBucket::addFeature(const GeometryTileFeature& feature,
+ const GeometryCollection& geometry,
+ const ImagePositions&,
+ const PatternLayerMap&,
+ std::size_t featureIndex,
+ const CanonicalTileID& canonical) {
constexpr const uint16_t vertexLength = 4;
for (auto& points : geometry) {
@@ -87,7 +91,7 @@ void HeatmapBucket::addFeature(const GeometryTileFeature& feature, const Geometr
}
for (auto& pair : paintPropertyBinders) {
- pair.second.populateVertexVectors(feature, vertices.elements(), featureIndex, {}, {});
+ pair.second.populateVertexVectors(feature, vertices.elements(), featureIndex, {}, {}, canonical);
}
}
diff --git a/src/mbgl/renderer/buckets/heatmap_bucket.hpp b/src/mbgl/renderer/buckets/heatmap_bucket.hpp
index 04d4170b50..0aaff7f298 100644
--- a/src/mbgl/renderer/buckets/heatmap_bucket.hpp
+++ b/src/mbgl/renderer/buckets/heatmap_bucket.hpp
@@ -18,8 +18,12 @@ public:
HeatmapBucket(const BucketParameters&, const std::vector<Immutable<style::LayerProperties>>&);
~HeatmapBucket() override;
- void addFeature(const GeometryTileFeature&, const GeometryCollection&, const ImagePositions&,
- const PatternLayerMap&, std::size_t) override;
+ void addFeature(const GeometryTileFeature&,
+ const GeometryCollection&,
+ const ImagePositions&,
+ const PatternLayerMap&,
+ std::size_t,
+ const CanonicalTileID&) override;
bool hasData() const override;
void upload(gfx::UploadPass&) override;
diff --git a/src/mbgl/renderer/buckets/line_bucket.cpp b/src/mbgl/renderer/buckets/line_bucket.cpp
index c32515e016..fdb110bc9d 100644
--- a/src/mbgl/renderer/buckets/line_bucket.cpp
+++ b/src/mbgl/renderer/buckets/line_bucket.cpp
@@ -27,9 +27,12 @@ LineBucket::LineBucket(const LineBucket::PossiblyEvaluatedLayoutProperties layou
LineBucket::~LineBucket() = default;
-void LineBucket::addFeature(const GeometryTileFeature& feature, const GeometryCollection& geometryCollection,
- const ImagePositions& patternPositions, const PatternLayerMap& patternDependencies,
- std::size_t index) {
+void LineBucket::addFeature(const GeometryTileFeature& feature,
+ const GeometryCollection& geometryCollection,
+ const ImagePositions& patternPositions,
+ const PatternLayerMap& patternDependencies,
+ std::size_t index,
+ const CanonicalTileID& canonical) {
for (auto& line : geometryCollection) {
addGeometry(line, feature);
}
@@ -37,9 +40,10 @@ void LineBucket::addFeature(const GeometryTileFeature& feature, const GeometryCo
for (auto& pair : paintPropertyBinders) {
const auto it = patternDependencies.find(pair.first);
if (it != patternDependencies.end()){
- pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, it->second);
+ pair.second.populateVertexVectors(
+ feature, vertices.elements(), index, patternPositions, it->second, canonical);
} else {
- pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, {});
+ pair.second.populateVertexVectors(feature, vertices.elements(), index, patternPositions, {}, canonical);
}
}
}
diff --git a/src/mbgl/renderer/buckets/line_bucket.hpp b/src/mbgl/renderer/buckets/line_bucket.hpp
index a3237c9df9..a3821d108b 100644
--- a/src/mbgl/renderer/buckets/line_bucket.hpp
+++ b/src/mbgl/renderer/buckets/line_bucket.hpp
@@ -25,8 +25,12 @@ public:
const uint32_t overscaling);
~LineBucket() override;
- void addFeature(const GeometryTileFeature&, const GeometryCollection&, const mbgl::ImagePositions& patternPositions,
- const PatternLayerMap&, std::size_t) override;
+ void addFeature(const GeometryTileFeature&,
+ const GeometryCollection&,
+ const mbgl::ImagePositions& patternPositions,
+ const PatternLayerMap&,
+ std::size_t,
+ const CanonicalTileID&) override;
bool hasData() const override;
diff --git a/src/mbgl/renderer/paint_property_binder.hpp b/src/mbgl/renderer/paint_property_binder.hpp
index db9f61411a..3a9dceacc0 100644
--- a/src/mbgl/renderer/paint_property_binder.hpp
+++ b/src/mbgl/renderer/paint_property_binder.hpp
@@ -105,8 +105,12 @@ public:
virtual ~PaintPropertyBinder() = default;
- virtual void populateVertexVector(const GeometryTileFeature& feature, std::size_t length, std::size_t index,
- const ImagePositions&, const optional<PatternDependency>&,
+ virtual void populateVertexVector(const GeometryTileFeature& feature,
+ std::size_t length,
+ std::size_t index,
+ const ImagePositions&,
+ const optional<PatternDependency>&,
+ const CanonicalTileID& canonical,
const style::expression::Value&) = 0;
virtual void updateVertexVectors(const FeatureStates&, const GeometryTileLayer&, const ImagePositions&) {}
@@ -131,8 +135,13 @@ public:
: constant(std::move(constant_)) {
}
- void populateVertexVector(const GeometryTileFeature&, std::size_t, std::size_t, const ImagePositions&,
- const optional<PatternDependency>&, const style::expression::Value&) override {}
+ void populateVertexVector(const GeometryTileFeature&,
+ std::size_t,
+ std::size_t,
+ const ImagePositions&,
+ const optional<PatternDependency>&,
+ const CanonicalTileID&,
+ const style::expression::Value&) override {}
void updateVertexVector(std::size_t, std::size_t, const GeometryTileFeature&, const FeatureState&) override {}
void upload(gfx::UploadPass&) override {}
void setPatternParameters(const optional<ImagePosition>&, const optional<ImagePosition>&, const CrossfadeParameters&) override {};
@@ -160,8 +169,13 @@ public:
: constant(std::move(constant_)), constantPatternPositions({}) {
}
- void populateVertexVector(const GeometryTileFeature&, std::size_t, std::size_t, const ImagePositions&,
- const optional<PatternDependency>&, const style::expression::Value&) override {}
+ void populateVertexVector(const GeometryTileFeature&,
+ std::size_t,
+ std::size_t,
+ const ImagePositions&,
+ const optional<PatternDependency>&,
+ const CanonicalTileID&,
+ const style::expression::Value&) override {}
void updateVertexVector(std::size_t, std::size_t, const GeometryTileFeature&, const FeatureState&) override {}
void upload(gfx::UploadPass&) override {}
@@ -204,11 +218,17 @@ public:
defaultValue(std::move(defaultValue_)) {
}
void setPatternParameters(const optional<ImagePosition>&, const optional<ImagePosition>&, const CrossfadeParameters&) override {};
- void populateVertexVector(const GeometryTileFeature& feature, std::size_t length, std::size_t index,
- const ImagePositions&, const optional<PatternDependency>&,
+ void populateVertexVector(const GeometryTileFeature& feature,
+ std::size_t length,
+ std::size_t index,
+ const ImagePositions&,
+ const optional<PatternDependency>&,
+ const CanonicalTileID& canonical,
const style::expression::Value& formattedSection) override {
using style::expression::EvaluationContext;
- auto evaluated = expression.evaluate(EvaluationContext(&feature).withFormattedSection(&formattedSection), defaultValue);
+ auto evaluated = expression.evaluate(
+ EvaluationContext(&feature).withFormattedSection(&formattedSection).withCanonicalTileID(canonical),
+ defaultValue);
this->statistics.add(evaluated);
auto value = attributeValue(evaluated);
auto elements = vertexVector.elements();
@@ -299,13 +319,23 @@ public:
zoomRange({zoom, zoom + 1}) {
}
void setPatternParameters(const optional<ImagePosition>&, const optional<ImagePosition>&, const CrossfadeParameters&) override {};
- void populateVertexVector(const GeometryTileFeature& feature, std::size_t length, std::size_t index,
- const ImagePositions&, const optional<PatternDependency>&,
+ void populateVertexVector(const GeometryTileFeature& feature,
+ std::size_t length,
+ std::size_t index,
+ const ImagePositions&,
+ const optional<PatternDependency>&,
+ const CanonicalTileID& canonical,
const style::expression::Value& formattedSection) override {
using style::expression::EvaluationContext;
Range<T> range = {
- expression.evaluate(EvaluationContext(zoomRange.min, &feature).withFormattedSection(&formattedSection), defaultValue),
- expression.evaluate(EvaluationContext(zoomRange.max, &feature).withFormattedSection(&formattedSection), defaultValue),
+ expression.evaluate(EvaluationContext(zoomRange.min, &feature)
+ .withFormattedSection(&formattedSection)
+ .withCanonicalTileID(canonical),
+ defaultValue),
+ expression.evaluate(EvaluationContext(zoomRange.max, &feature)
+ .withFormattedSection(&formattedSection)
+ .withCanonicalTileID(canonical),
+ defaultValue),
};
this->statistics.add(range.min);
this->statistics.add(range.max);
@@ -416,9 +446,12 @@ public:
crossfade = crossfade_;
};
- void populateVertexVector(const GeometryTileFeature&, std::size_t length, std::size_t /* index */,
+ void populateVertexVector(const GeometryTileFeature&,
+ std::size_t length,
+ std::size_t /* index */,
const ImagePositions& patternPositions,
const optional<PatternDependency>& patternDependencies,
+ const CanonicalTileID&,
const style::expression::Value&) override {
if (!patternDependencies || patternDependencies->mid.empty()) {
// Unlike other propperties with expressions that evaluate to null, the default value for `*-pattern` properties is an empty
@@ -589,12 +622,15 @@ public:
PaintPropertyBinders(PaintPropertyBinders&&) = default;
PaintPropertyBinders(const PaintPropertyBinders&) = delete;
- void populateVertexVectors(const GeometryTileFeature& feature, std::size_t length, std::size_t index,
+ void populateVertexVectors(const GeometryTileFeature& feature,
+ std::size_t length,
+ std::size_t index,
const ImagePositions& patternPositions,
const optional<PatternDependency>& patternDependencies,
+ const CanonicalTileID& canonical,
const style::expression::Value& formattedSection = {}) {
- util::ignore({(binders.template get<Ps>()->populateVertexVector(feature, length, index, patternPositions,
- patternDependencies, formattedSection),
+ util::ignore({(binders.template get<Ps>()->populateVertexVector(
+ feature, length, index, patternPositions, patternDependencies, canonical, formattedSection),
0)...});
}
diff --git a/src/mbgl/style/expression/is_constant.cpp b/src/mbgl/style/expression/is_constant.cpp
index eb823bc77c..e6bd05418f 100644
--- a/src/mbgl/style/expression/is_constant.cpp
+++ b/src/mbgl/style/expression/is_constant.cpp
@@ -29,6 +29,10 @@ bool isFeatureConstant(const Expression& expression) {
return false;
}
+ if (expression.getKind() == Kind::Within) {
+ return false;
+ }
+
if (expression.getKind() == Kind::CollatorExpression) {
// Although the results of a Collator expression with fixed arguments
// generally shouldn't change between executions, we can't serialize them
diff --git a/src/mbgl/style/expression/parsing_context.cpp b/src/mbgl/style/expression/parsing_context.cpp
index ae991b2e88..d42c46bb09 100644
--- a/src/mbgl/style/expression/parsing_context.cpp
+++ b/src/mbgl/style/expression/parsing_context.cpp
@@ -22,6 +22,7 @@
#include <mbgl/style/expression/match.hpp>
#include <mbgl/style/expression/number_format.hpp>
#include <mbgl/style/expression/step.hpp>
+#include <mbgl/style/expression/within.hpp>
#include <mbgl/style/expression/find_zoom_curve.hpp>
#include <mbgl/style/expression/dsl.hpp>
@@ -134,6 +135,7 @@ MAPBOX_ETERNAL_CONSTEXPR const auto expressionRegistry =
{"to-number", Coercion::parse},
{"to-string", Coercion::parse},
{"var", Var::parse},
+ {"within", Within::parse},
});
bool isExpression(const std::string& name) {
diff --git a/src/mbgl/style/expression/within.cpp b/src/mbgl/style/expression/within.cpp
new file mode 100644
index 0000000000..1b1b8b11b9
--- /dev/null
+++ b/src/mbgl/style/expression/within.cpp
@@ -0,0 +1,139 @@
+#include <mapbox/geojson.hpp>
+#include <mapbox/geometry.hpp>
+#include <mbgl/style/conversion_impl.hpp>
+#include <mbgl/style/expression/within.hpp>
+#include <mbgl/tile/geometry_tile_data.hpp>
+#include <mbgl/util/string.hpp>
+
+namespace {
+
+double isLeft(mbgl::Point<double> P0, mbgl::Point<double> P1, mbgl::Point<double> P2) {
+ return ((P1.x - P0.x) * (P2.y - P0.y) - (P2.x - P0.x) * (P1.y - P0.y));
+}
+
+// winding number algorithm for checking if point inside a ploygon or not.
+// http://geomalgorithms.com/a03-_inclusion.html#wn_PnPoly()
+bool pointWithinPoly(mbgl::Point<double> point, const mapbox::geometry::polygon<double>& polys) {
+ // wn = the winding number (=0 only when point is outside)
+ int wn = 0;
+ for (auto poly : polys) {
+ auto size = poly.size();
+ auto i = size;
+ // loop through every edge of the polygon
+ for (i = 0; i < size - 1; ++i) {
+ if (poly[i].y <= point.y) {
+ if (poly[i + 1].y > point.y) { // upward horizontal crossing from point to edge E(poly[i], poly[i+1])
+ if (isLeft(poly[i], poly[i + 1], point) > 0) {
+ ++wn;
+ }
+ }
+ } else {
+ if (poly[i + 1].y <= point.y) { // downward crossing
+ if (isLeft(poly[i], poly[i + 1], point) < 0) {
+ --wn;
+ }
+ }
+ }
+ }
+ if (wn != 0) {
+ return true;
+ }
+ }
+ return wn != 0;
+}
+
+bool pointsWithinPoly(const mbgl::GeometryTileFeature& feature,
+ const mbgl::CanonicalTileID& canonical,
+ const mbgl::GeoJSON& geoJson) {
+ bool result = false;
+ geoJson.match(
+ [&](const mapbox::geometry::geometry<double>& geometrySet) {
+ geometrySet.match(
+ [&](const mapbox::geometry::polygon<double>& polygons) {
+ convertGeometry(feature, canonical)
+ .match(
+ [&](const mapbox::geometry::point<double>& point) {
+ result = pointWithinPoly(point, polygons);
+ },
+ [&](const mapbox::geometry::multi_point<double>& points) {
+ for (const auto& p : points) {
+ result = pointWithinPoly(p, polygons);
+ if (!result) {
+ return;
+ }
+ }
+ },
+ [&](const auto&) { return; });
+ },
+ [&](const auto&) { return; });
+ },
+ [&](const auto&) { return; });
+
+ return result;
+}
+
+mbgl::optional<mbgl::GeoJSON> parseValue(const mbgl::style::conversion::Convertible& value_,
+ mbgl::style::expression::ParsingContext& ctx) {
+ if (isObject(value_)) {
+ const auto geometryType = objectMember(value_, "type");
+ if (geometryType) {
+ const auto type = toString(*geometryType);
+ if (type && *type == "Polygon") {
+ mbgl::style::conversion::Error error;
+ auto geojson = toGeoJSON(value_, error);
+ if (geojson && error.message.empty()) {
+ return geojson;
+ }
+ ctx.error(error.message);
+ }
+ }
+ }
+ ctx.error("'Within' expression requires valid geojson source that contains polygon geometry type.");
+ return mbgl::optional<mbgl::GeoJSON>();
+}
+
+} // namespace
+
+namespace mbgl {
+namespace style {
+namespace expression {
+
+using namespace mbgl::style::conversion;
+
+EvaluationResult Within::evaluate(const EvaluationContext& params) const {
+ if (!params.feature || !params.canonical) {
+ return false;
+ }
+ auto geometryType = params.feature->getType();
+ // Currently only support Point/Points in polygon
+ if (geometryType == FeatureType::Point) {
+ return pointsWithinPoly(*params.feature, *params.canonical, geoJSONSource);
+ }
+ return false;
+}
+
+ParseResult Within::parse(const Convertible& value, ParsingContext& ctx) {
+ if (isArray(value)) {
+ // object value, quoted with ["Within", value]
+ if (arrayLength(value) != 2) {
+ ctx.error("'Within' expression requires exactly one argument, but found " +
+ util::toString(arrayLength(value) - 1) + " instead.");
+ return ParseResult();
+ }
+
+ auto parsedValue = parseValue(arrayMember(value, 1), ctx);
+ if (!parsedValue) {
+ return ParseResult();
+ }
+ return ParseResult(std::make_unique<Within>(*parsedValue));
+ }
+ return ParseResult();
+}
+
+mbgl::Value Within::serialize() const {
+ return std::vector<mbgl::Value>{{getOperator()}, {mapbox::geojson::stringify(geoJSONSource)}};
+}
+
+} // namespace expression
+} // namespace style
+} // namespace mbgl
diff --git a/src/mbgl/style/properties.hpp b/src/mbgl/style/properties.hpp
index 9c8996fcbe..2fab53ad12 100644
--- a/src/mbgl/style/properties.hpp
+++ b/src/mbgl/style/properties.hpp
@@ -206,6 +206,11 @@ public:
}
template <class P>
+ auto evaluate(float z, const GeometryTileFeature& feature, const CanonicalTileID& canonical) const {
+ return evaluate(z, feature, canonical, this->template get<P>(), P::defaultValue());
+ }
+
+ template <class P>
auto evaluate(float z, const GeometryTileFeature& feature, const FeatureState& state) const {
return evaluate(z, feature, state, this->template get<P>(), P::defaultValue());
}
diff --git a/src/mbgl/tile/geometry_tile_data.cpp b/src/mbgl/tile/geometry_tile_data.cpp
index f723a94800..838f37f0da 100644
--- a/src/mbgl/tile/geometry_tile_data.cpp
+++ b/src/mbgl/tile/geometry_tile_data.cpp
@@ -99,7 +99,7 @@ void limitHoles(GeometryCollection& polygon, uint32_t maxHoles) {
}
}
-static Feature::geometry_type convertGeometry(const GeometryTileFeature& geometryTileFeature, const CanonicalTileID& tileID) {
+Feature::geometry_type convertGeometry(const GeometryTileFeature& geometryTileFeature, const CanonicalTileID& tileID) {
const double size = util::EXTENT * std::pow(2, tileID.z);
const double x0 = util::EXTENT * static_cast<double>(tileID.x);
const double y0 = util::EXTENT * static_cast<double>(tileID.y);
diff --git a/src/mbgl/tile/geometry_tile_data.hpp b/src/mbgl/tile/geometry_tile_data.hpp
index 49620982c1..a0a069f3d1 100644
--- a/src/mbgl/tile/geometry_tile_data.hpp
+++ b/src/mbgl/tile/geometry_tile_data.hpp
@@ -80,6 +80,8 @@ std::vector<GeometryCollection> classifyRings(const GeometryCollection&);
// Truncate polygon to the largest `maxHoles` inner rings by area.
void limitHoles(GeometryCollection&, uint32_t maxHoles);
+Feature::geometry_type convertGeometry(const GeometryTileFeature& geometryTileFeature, const CanonicalTileID& tileID);
+
// convert from GeometryTileFeature to Feature (eventually we should eliminate GeometryTileFeature)
Feature convertFeature(const GeometryTileFeature&, const CanonicalTileID&);
diff --git a/src/mbgl/tile/geometry_tile_worker.cpp b/src/mbgl/tile/geometry_tile_worker.cpp
index c38464bb04..0729ed2aa5 100644
--- a/src/mbgl/tile/geometry_tile_worker.cpp
+++ b/src/mbgl/tile/geometry_tile_worker.cpp
@@ -391,7 +391,7 @@ void GeometryTileWorker::parse() {
if (layout->hasDependencies()) {
layouts.push_back(std::move(layout));
} else {
- layout->createBucket({}, featureIndex, renderData, firstLoad, showCollisionBoxes);
+ layout->createBucket({}, featureIndex, renderData, firstLoad, showCollisionBoxes, id.canonical);
}
} else {
const Filter& filter = leaderImpl.filter;
@@ -405,7 +405,7 @@ void GeometryTileWorker::parse() {
continue;
const GeometryCollection& geometries = feature->getGeometries();
- bucket->addFeature(*feature, geometries, {}, PatternLayerMap(), i);
+ bucket->addFeature(*feature, geometries, {}, PatternLayerMap(), i, id.canonical);
featureIndex->insert(geometries, i, sourceLayerID, leaderImpl.id);
}
@@ -467,7 +467,8 @@ void GeometryTileWorker::finalizeLayout() {
}
// layout adds the bucket to buckets
- layout->createBucket(iconAtlas.patternPositions, featureIndex, renderData, firstLoad, showCollisionBoxes);
+ layout->createBucket(
+ iconAtlas.patternPositions, featureIndex, renderData, firstLoad, showCollisionBoxes, id.canonical);
}
}
diff --git a/test/gl/bucket.test.cpp b/test/gl/bucket.test.cpp
index c7636dabcf..9f780fcffa 100644
--- a/test/gl/bucket.test.cpp
+++ b/test/gl/bucket.test.cpp
@@ -52,8 +52,12 @@ TEST(Buckets, CircleBucket) {
ASSERT_FALSE(bucket.needsUpload());
GeometryCollection point { { { 0, 0 } } };
- bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::Point, point, properties}, point, {}, PatternLayerMap(),
- 0);
+ bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::Point, point, properties},
+ point,
+ {},
+ PatternLayerMap(),
+ 0,
+ CanonicalTileID(0, 0, 0));
ASSERT_TRUE(bucket.hasData());
ASSERT_TRUE(bucket.needsUpload());
@@ -75,8 +79,12 @@ TEST(Buckets, FillBucket) {
ASSERT_FALSE(bucket.needsUpload());
GeometryCollection polygon { { { 0, 0 }, { 0, 1 }, { 1, 1 } } };
- bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::Polygon, polygon, properties}, polygon, {},
- PatternLayerMap(), 0);
+ bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::Polygon, polygon, properties},
+ polygon,
+ {},
+ PatternLayerMap(),
+ 0,
+ CanonicalTileID(0, 0, 0));
ASSERT_TRUE(bucket.hasData());
ASSERT_TRUE(bucket.needsUpload());
@@ -98,13 +106,21 @@ TEST(Buckets, LineBucket) {
// Ignore invalid feature type.
GeometryCollection point { { { 0, 0 } } };
- bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::Point, point, properties}, point, {}, PatternLayerMap(),
- 0);
+ bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::Point, point, properties},
+ point,
+ {},
+ PatternLayerMap(),
+ 0,
+ CanonicalTileID(0, 0, 0));
ASSERT_FALSE(bucket.hasData());
GeometryCollection line { { { 0, 0 }, { 1, 1 } } };
- bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::LineString, line, properties}, line, {},
- PatternLayerMap(), 1);
+ bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::LineString, line, properties},
+ line,
+ {},
+ PatternLayerMap(),
+ 1,
+ CanonicalTileID(0, 0, 0));
ASSERT_TRUE(bucket.hasData());
ASSERT_TRUE(bucket.needsUpload());
@@ -152,8 +168,12 @@ TEST(Buckets, SymbolBucket) {
// SymbolBucket::addFeature() is a no-op.
GeometryCollection point { { { 0, 0 } } };
- bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::Point, std::move(point), properties}, point, {},
- PatternLayerMap(), 0);
+ bucket.addFeature(StubGeometryTileFeature{{}, FeatureType::Point, std::move(point), properties},
+ point,
+ {},
+ PatternLayerMap(),
+ 0,
+ CanonicalTileID(0, 0, 0));
ASSERT_FALSE(bucket.hasData());
ASSERT_FALSE(bucket.needsUpload());