From 3e99c08ea610d791b21f1631308451687c464d98 Mon Sep 17 00:00:00 2001 From: zmiao Date: Wed, 29 Jan 2020 12:46:16 +0200 Subject: Enable parse within expression Add geometry type checker --- include/mbgl/style/expression/expression.hpp | 18 +- include/mbgl/style/expression/within.hpp | 43 + next/CMakeLists.txt | 1010 ++++++++++++++++++++ src/core-files.json | 817 ++++++++++++++++ src/mbgl/layout/layout.hpp | 3 +- src/mbgl/layout/pattern_layout.hpp | 9 +- src/mbgl/layout/symbol_feature.hpp | 14 +- src/mbgl/layout/symbol_layout.cpp | 69 +- src/mbgl/layout/symbol_layout.hpp | 11 +- src/mbgl/renderer/bucket.hpp | 8 +- src/mbgl/renderer/buckets/circle_bucket.cpp | 10 +- src/mbgl/renderer/buckets/circle_bucket.hpp | 8 +- src/mbgl/renderer/buckets/fill_bucket.cpp | 14 +- src/mbgl/renderer/buckets/fill_bucket.hpp | 8 +- .../renderer/buckets/fill_extrusion_bucket.cpp | 14 +- .../renderer/buckets/fill_extrusion_bucket.hpp | 8 +- src/mbgl/renderer/buckets/heatmap_bucket.cpp | 10 +- src/mbgl/renderer/buckets/heatmap_bucket.hpp | 8 +- src/mbgl/renderer/buckets/line_bucket.cpp | 14 +- src/mbgl/renderer/buckets/line_bucket.hpp | 8 +- src/mbgl/renderer/paint_property_binder.hpp | 70 +- src/mbgl/style/expression/is_constant.cpp | 4 + src/mbgl/style/expression/parsing_context.cpp | 2 + src/mbgl/style/expression/within.cpp | 139 +++ src/mbgl/style/properties.hpp | 5 + src/mbgl/tile/geometry_tile_data.cpp | 2 +- src/mbgl/tile/geometry_tile_data.hpp | 2 + src/mbgl/tile/geometry_tile_worker.cpp | 7 +- test/gl/bucket.test.cpp | 40 +- 29 files changed, 2280 insertions(+), 95 deletions(-) create mode 100644 include/mbgl/style/expression/within.hpp create mode 100644 next/CMakeLists.txt create mode 100644 src/core-files.json create mode 100644 src/mbgl/style/expression/within.cpp 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 -#include -#include +#include #include #include -#include +#include +#include +#include +#include #include #include @@ -53,8 +54,14 @@ public: return *this; }; + EvaluationContext& withCanonicalTileID(const mbgl::CanonicalTileID& canonical_) noexcept { + canonical = canonical_; + return *this; + }; + optional zoom; optional accumulated; + optional canonical; GeometryTileFeature const * feature = nullptr; optional colorRampParameter; // Contains formatted section object, std::unordered_map. @@ -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 +#include +#include +#include + +#include + +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&) const override {} + + bool operator==(const Expression& e) const override { + if (e.getKind() == Kind::Within) { + auto rhs = static_cast(&e); + return geoJSONSource == rhs->geoJSONSource; + } + return false; + } + + std::vector> 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 + $<$:--coverage> + $<$:-DSANITIZE> + $<$:-fno-omit-frame-pointer> + $<$:-fno-optimize-sibling-calls> + $<$:-fsanitize=address> + $<$:-fsanitize=thread> + $<$:-fsanitize=implicit-conversion> + $<$:-fsanitize=undefined> + $<$:-fsanitize=unsigned-integer-overflow> + $<$,$>>:-fno-rtti> + $<$,$>>:-Wall> + $<$,$>>:-Wshadow> + $<$,$>>:-Wextra> + $<$,$>>:-Werror> + $<$,$>:-Wno-error=tautological-constant-compare> + $<$:-Wno-error=maybe-uninitialized> + $<$:-Wno-error=return-type> + $<$:-Wno-error=unknown-pragmas> + $<$:-Wno-error=deprecated-declarations> + $<$:-Wno-error=unused-parameter> + $<$:-Wno-error=unused-property-ivar> +) + +target_link_libraries( + mbgl-compiler-options + INTERFACE + $<$:--coverage> + $<$:-fsanitize=address> + $<$:-fsanitize=thread> + $<$:-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&, std::unordered_map&, 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, std::unordered_map& renderData, const bool, const bool) override { + void createBucket(const ImagePositions& patternPositions, + std::unique_ptr& featureIndex, + std::unordered_map& renderData, + const bool, + const bool, + const CanonicalTileID& canonical) override { auto bucket = std::make_shared(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 feature_) : - feature(std::move(feature_)), - geometry(feature->getGeometries().clone()) // we need a mutable copy of the geometry for mergeLines() + SymbolFeature(std::unique_ptr 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 getValue(const std::string& key) const override { return feature->getValue(key); }; - const PropertyMap& getProperties() const override { return feature->getProperties(); }; + optional 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 SymbolLayout::calculateTileDistances(const GeometryCoordinate return tileDistances; } -void SymbolLayout::createBucket(const ImagePositions&, std::unique_ptr&, std::unordered_map& renderData, const bool firstLoad, const bool showCollisionBoxes) { +void SymbolLayout::createBucket(const ImagePositions&, + std::unique_ptr&, + std::unordered_map& renderData, + const bool firstLoad, + const bool showCollisionBoxes, + const CanonicalTileID& canonical) { auto bucket = std::make_shared(layout, layerPaintProperties, textSize, @@ -796,8 +801,8 @@ void SymbolLayout::createBucket(const ImagePositions&, std::unique_ptrpaintProperties) { - 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 lastAddedSection; if (singleLine) { optional 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& placedIndex, const SymbolQuads& glyphQuads, + const CanonicalTileID& canonical, optional lastAddedSection) { const Range 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&, std::unordered_map&, const bool firstLoad, const bool showCollisionBoxes) override; + void createBucket(const ImagePositions&, + std::unique_ptr&, + std::unordered_map&, + 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& placedIndex, const SymbolQuads&, + const CanonicalTileID& canonical, optional 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>&); ~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>&); ~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&, + virtual void populateVertexVector(const GeometryTileFeature& feature, + std::size_t length, + std::size_t index, + const ImagePositions&, + const optional&, + 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&, const style::expression::Value&) override {} + void populateVertexVector(const GeometryTileFeature&, + std::size_t, + std::size_t, + const ImagePositions&, + const optional&, + 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&, const optional&, 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&, const style::expression::Value&) override {} + void populateVertexVector(const GeometryTileFeature&, + std::size_t, + std::size_t, + const ImagePositions&, + const optional&, + 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&, const optional&, const CrossfadeParameters&) override {}; - void populateVertexVector(const GeometryTileFeature& feature, std::size_t length, std::size_t index, - const ImagePositions&, const optional&, + void populateVertexVector(const GeometryTileFeature& feature, + std::size_t length, + std::size_t index, + const ImagePositions&, + const optional&, + 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&, const optional&, const CrossfadeParameters&) override {}; - void populateVertexVector(const GeometryTileFeature& feature, std::size_t length, std::size_t index, - const ImagePositions&, const optional&, + void populateVertexVector(const GeometryTileFeature& feature, + std::size_t length, + std::size_t index, + const ImagePositions&, + const optional&, + const CanonicalTileID& canonical, const style::expression::Value& formattedSection) override { using style::expression::EvaluationContext; Range 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& 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& patternDependencies, + const CanonicalTileID& canonical, const style::expression::Value& formattedSection = {}) { - util::ignore({(binders.template get()->populateVertexVector(feature, length, index, patternPositions, - patternDependencies, formattedSection), + util::ignore({(binders.template get()->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 #include #include +#include #include #include @@ -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 +#include +#include +#include +#include +#include + +namespace { + +double isLeft(mbgl::Point P0, mbgl::Point P1, mbgl::Point 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 point, const mapbox::geometry::polygon& 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& geometrySet) { + geometrySet.match( + [&](const mapbox::geometry::polygon& polygons) { + convertGeometry(feature, canonical) + .match( + [&](const mapbox::geometry::point& point) { + result = pointWithinPoly(point, polygons); + }, + [&](const mapbox::geometry::multi_point& 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 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(); +} + +} // 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(*parsedValue)); + } + return ParseResult(); +} + +mbgl::Value Within::serialize() const { + return std::vector{{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 @@ -205,6 +205,11 @@ public: return evaluate(z, feature, this->template get

(), P::defaultValue()); } + template + auto evaluate(float z, const GeometryTileFeature& feature, const CanonicalTileID& canonical) const { + return evaluate(z, feature, canonical, this->template get

(), P::defaultValue()); + } + template auto evaluate(float z, const GeometryTileFeature& feature, const FeatureState& state) const { return evaluate(z, feature, state, this->template get

(), 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(tileID.x); const double y0 = util::EXTENT * static_cast(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 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()); -- cgit v1.2.1