From 924ce26efba44578174f30dcbc848408c89add28 Mon Sep 17 00:00:00 2001 From: zmiao Date: Wed, 29 Jan 2020 12:46:16 +0200 Subject: [PATCH 1/7] 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 +- .../buckets/fill_extrusion_bucket.cpp | 14 +- .../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 9893daa8c42..f19f64c1e72 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 @@ class EvaluationContext { 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 00000000000..5e2b5e06719 --- /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 00000000000..ab63a55aebc --- /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 00000000000..49fc69705cf --- /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 4e7c0c7acae..ae0eb5d5f31 100644 --- a/src/mbgl/layout/layout.hpp +++ b/src/mbgl/layout/layout.hpp @@ -21,7 +21,8 @@ class Layout { 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 44729dea835..c6815e4cad9 100644 --- a/src/mbgl/layout/pattern_layout.hpp +++ b/src/mbgl/layout/pattern_layout.hpp @@ -152,7 +152,12 @@ class PatternLayout : public Layout { 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 @@ class PatternLayout : public Layout { 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 d0aced1b19a..f536642709b 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 e0475f0acb0..2192e46bc45 100644 --- a/src/mbgl/layout/symbol_layout.cpp +++ b/src/mbgl/layout/symbol_layout.cpp @@ -718,7 +718,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, @@ -771,8 +776,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); } } @@ -780,26 +785,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(); @@ -816,16 +856,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(); @@ -856,7 +897,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 b906b0b36c9..9f861102432 100644 --- a/src/mbgl/layout/symbol_layout.hpp +++ b/src/mbgl/layout/symbol_layout.hpp @@ -36,7 +36,12 @@ class SymbolLayout final : public Layout { 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; @@ -96,11 +101,13 @@ class SymbolLayout final : public Layout { 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 fc34f55e75f..4e28107f070 100644 --- a/src/mbgl/renderer/bucket.hpp +++ b/src/mbgl/renderer/bucket.hpp @@ -32,8 +32,12 @@ class Bucket { // 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 560a74781af..744b559c429 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 e514f8a5f24..17ddd9dc100 100644 --- a/src/mbgl/renderer/buckets/circle_bucket.hpp +++ b/src/mbgl/renderer/buckets/circle_bucket.hpp @@ -18,8 +18,12 @@ class CircleBucket final : public Bucket { 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 6660934f8dc..73c25302417 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 7a3f6811215..4de97141a7e 100644 --- a/src/mbgl/renderer/buckets/fill_bucket.hpp +++ b/src/mbgl/renderer/buckets/fill_bucket.hpp @@ -25,8 +25,12 @@ class FillBucket final : public Bucket { 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 698895fdcf7..39c9f9af1e8 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 8535f99b706..833eee7a735 100644 --- a/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp +++ b/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp @@ -24,8 +24,12 @@ class FillExtrusionBucket final : public Bucket { 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 78c4fb75070..31c4bc0e9ca 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 04d4170b504..0aaff7f298f 100644 --- a/src/mbgl/renderer/buckets/heatmap_bucket.hpp +++ b/src/mbgl/renderer/buckets/heatmap_bucket.hpp @@ -18,8 +18,12 @@ class HeatmapBucket final : public Bucket { 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 c32515e0160..fdb110bc9d6 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 a3237c9df9d..a3821d108b8 100644 --- a/src/mbgl/renderer/buckets/line_bucket.hpp +++ b/src/mbgl/renderer/buckets/line_bucket.hpp @@ -25,8 +25,12 @@ class LineBucket final : public Bucket { 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 db9f61411a8..3a9dceacc06 100644 --- a/src/mbgl/renderer/paint_property_binder.hpp +++ b/src/mbgl/renderer/paint_property_binder.hpp @@ -105,8 +105,12 @@ class PaintPropertyBinder { 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 @@ class ConstantPaintPropertyBinder : public PaintPropertyBinder&, 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 @@ class ConstantCrossFadedPaintPropertyBinder final : public PaintPropertyBinder&, 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 @@ class SourceFunctionPaintPropertyBinder final : public PaintPropertyBinder&, 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 @@ class CompositeFunctionPaintPropertyBinder final : public PaintPropertyBinder&, 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 @@ class CompositeCrossFadedPaintPropertyBinder final : public PaintPropertyBinder< 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 @@ class PaintPropertyBinders> { 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 eb823bc77c4..e6bd05418fa 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 ae991b2e880..d42c46bb09e 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 00000000000..1b1b8b11b98 --- /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 9c8996fcbe7..2fab53ad122 100644 --- a/src/mbgl/style/properties.hpp +++ b/src/mbgl/style/properties.hpp @@ -205,6 +205,11 @@ class Properties { 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 f723a948009..838f37f0dae 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 49620982c15..a0a069f3d11 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 c38464bb04f..0729ed2aa54 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 2a7455e17c7..213e754e3ce 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()); @@ -150,8 +166,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()); From c1beba8b7db04d9e6c290811e65676b2d9e74908 Mon Sep 17 00:00:00 2001 From: zmiao Date: Mon, 3 Feb 2020 16:53:15 +0200 Subject: [PATCH 2/7] Enable within expression with Filter add canonical as pointer fix review findings --- include/mbgl/style/expression/expression.hpp | 6 +- include/mbgl/style/expression/within.hpp | 6 +- src/mbgl/layout/pattern_layout.hpp | 8 ++- src/mbgl/layout/symbol_layout.cpp | 3 +- src/mbgl/renderer/paint_property_binder.hpp | 6 +- src/mbgl/style/conversion/filter.cpp | 3 + src/mbgl/style/expression/within.cpp | 58 +++++++++++--------- src/mbgl/tile/geometry_tile_worker.cpp | 3 +- 8 files changed, 54 insertions(+), 39 deletions(-) diff --git a/include/mbgl/style/expression/expression.hpp b/include/mbgl/style/expression/expression.hpp index f19f64c1e72..1e34a8bd387 100644 --- a/include/mbgl/style/expression/expression.hpp +++ b/include/mbgl/style/expression/expression.hpp @@ -54,20 +54,20 @@ class EvaluationContext { return *this; }; - EvaluationContext& withCanonicalTileID(const mbgl::CanonicalTileID& canonical_) noexcept { + EvaluationContext& withCanonicalTileID(const mbgl::CanonicalTileID* canonical_) noexcept { canonical = canonical_; return *this; }; optional zoom; optional accumulated; - optional canonical; - GeometryTileFeature const * feature = nullptr; + GeometryTileFeature const* feature = nullptr; optional colorRampParameter; // Contains formatted section object, std::unordered_map. const Value* formattedSection = nullptr; const FeatureState* featureState = nullptr; const std::set* availableImages = nullptr; + const mbgl::CanonicalTileID* canonical = nullptr; }; template diff --git a/include/mbgl/style/expression/within.hpp b/include/mbgl/style/expression/within.hpp index 5e2b5e06719..88e9cc56b89 100644 --- a/include/mbgl/style/expression/within.hpp +++ b/include/mbgl/style/expression/within.hpp @@ -11,9 +11,11 @@ namespace mbgl { namespace style { namespace expression { -class Within : public Expression { +class Within final : public Expression { public: - Within(GeoJSON& geojson) : Expression(Kind::Within, type::Boolean), geoJSONSource(geojson) {} + explicit Within(GeoJSON geojson); + + ~Within() final; EvaluationResult evaluate(const EvaluationContext&) const override; diff --git a/src/mbgl/layout/pattern_layout.hpp b/src/mbgl/layout/pattern_layout.hpp index c6815e4cad9..81ff3996dbe 100644 --- a/src/mbgl/layout/pattern_layout.hpp +++ b/src/mbgl/layout/pattern_layout.hpp @@ -108,7 +108,9 @@ class PatternLayout : public Layout { const size_t featureCount = sourceLayer->featureCount(); for (size_t i = 0; i < featureCount; ++i) { auto feature = sourceLayer->getFeature(i); - if (!leaderLayerProperties->layerImpl().filter(style::expression::EvaluationContext { this->zoom, feature.get() })) + if (!leaderLayerProperties->layerImpl().filter( + style::expression::EvaluationContext(this->zoom, feature.get()) + .withCanonicalTileID(¶meters.tileID.canonical))) continue; PatternLayerMap patternDependencyMap; @@ -155,8 +157,8 @@ class PatternLayout : public Layout { void createBucket(const ImagePositions& patternPositions, std::unique_ptr& featureIndex, std::unordered_map& renderData, - const bool, - const bool, + const bool /*firstLoad*/, + const bool /*showCollisionBoxes*/, const CanonicalTileID& canonical) override { auto bucket = std::make_shared(layout, layerPropertiesMap, zoom, overscaling); for (auto & patternFeature : features) { diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp index 2192e46bc45..d615839f4f2 100644 --- a/src/mbgl/layout/symbol_layout.cpp +++ b/src/mbgl/layout/symbol_layout.cpp @@ -132,7 +132,8 @@ SymbolLayout::SymbolLayout(const BucketParameters& parameters, const size_t featureCount = sourceLayer->featureCount(); for (size_t i = 0; i < featureCount; ++i) { auto feature = sourceLayer->getFeature(i); - if (!leader.filter(expression::EvaluationContext { this->zoom, feature.get() })) + if (!leader.filter(expression::EvaluationContext(this->zoom, feature.get()) + .withCanonicalTileID(¶meters.tileID.canonical))) continue; SymbolFeature ft(std::move(feature)); diff --git a/src/mbgl/renderer/paint_property_binder.hpp b/src/mbgl/renderer/paint_property_binder.hpp index 3a9dceacc06..61544be82d1 100644 --- a/src/mbgl/renderer/paint_property_binder.hpp +++ b/src/mbgl/renderer/paint_property_binder.hpp @@ -227,7 +227,7 @@ class SourceFunctionPaintPropertyBinder final : public PaintPropertyBinderstatistics.add(evaluated); auto value = attributeValue(evaluated); @@ -330,11 +330,11 @@ class CompositeFunctionPaintPropertyBinder final : public PaintPropertyBinder range = { expression.evaluate(EvaluationContext(zoomRange.min, &feature) .withFormattedSection(&formattedSection) - .withCanonicalTileID(canonical), + .withCanonicalTileID(&canonical), defaultValue), expression.evaluate(EvaluationContext(zoomRange.max, &feature) .withFormattedSection(&formattedSection) - .withCanonicalTileID(canonical), + .withCanonicalTileID(&canonical), defaultValue), }; this->statistics.add(range.min); diff --git a/src/mbgl/style/conversion/filter.cpp b/src/mbgl/style/conversion/filter.cpp index 1b77985322e..f3e7050ccc3 100644 --- a/src/mbgl/style/conversion/filter.cpp +++ b/src/mbgl/style/conversion/filter.cpp @@ -207,6 +207,9 @@ ParseResult convertLegacyFilter(const Convertible& values, Error& error) { return nullopt; } else if (arrayLength(values) <= 1) { return {std::make_unique(*op != "any")}; + } else if (*op == "within") { + expression::ParsingContext ctx; + return ctx.parseExpression(values); } else { return { *op == "==" || diff --git a/src/mbgl/style/expression/within.cpp b/src/mbgl/style/expression/within.cpp index 1b1b8b11b98..d02ea47cb22 100644 --- a/src/mbgl/style/expression/within.cpp +++ b/src/mbgl/style/expression/within.cpp @@ -1,10 +1,13 @@ +#include + #include #include #include -#include #include +#include #include +namespace mbgl { namespace { double isLeft(mbgl::Point P0, mbgl::Point P1, mbgl::Point P2) { @@ -13,14 +16,13 @@ double isLeft(mbgl::Point P0, mbgl::Point P1, mbgl::Point point, const mapbox::geometry::polygon& polys) { +bool pointWithinPolygons(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) { + for (decltype(size) 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) { @@ -42,34 +44,33 @@ bool pointWithinPoly(mbgl::Point point, const mapbox::geometry::polygon< 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) +bool pointsWithinPolygons(const mbgl::GeometryTileFeature& feature, + const mbgl::CanonicalTileID& canonical, + const mbgl::GeoJSON& geoJson) { + return geoJson.match( + [&feature, &canonical](const mapbox::geometry::geometry& geometrySet) -> bool { + return geometrySet.match( + [&feature, &canonical](const mapbox::geometry::polygon& polygons) -> bool { + return convertGeometry(feature, canonical) .match( - [&](const mapbox::geometry::point& point) { - result = pointWithinPoly(point, polygons); + [&polygons](const mapbox::geometry::point& point) -> bool { + return pointWithinPolygons(point, polygons); }, - [&](const mapbox::geometry::multi_point& points) { + [&polygons](const mapbox::geometry::multi_point& points) -> bool { + auto result = false; for (const auto& p : points) { - result = pointWithinPoly(p, polygons); + result = pointWithinPolygons(p, polygons); if (!result) { - return; + return result; } } + return result; }, - [&](const auto&) { return; }); + [](const auto&) -> bool { return false; }); }, - [&](const auto&) { return; }); + [](const auto&) -> bool { return false; }); }, - [&](const auto&) { return; }); - - return result; + [](const auto&) -> bool { return false; }); } mbgl::optional parseValue(const mbgl::style::conversion::Convertible& value_, @@ -89,15 +90,18 @@ mbgl::optional parseValue(const mbgl::style::conversion::Converti } } ctx.error("'Within' expression requires valid geojson source that contains polygon geometry type."); - return mbgl::optional(); + return nullopt; } } // namespace -namespace mbgl { namespace style { namespace expression { +Within::Within(GeoJSON geojson) : Expression(Kind::Within, type::Boolean), geoJSONSource(std::move(geojson)) {} + +Within::~Within() {} + using namespace mbgl::style::conversion; EvaluationResult Within::evaluate(const EvaluationContext& params) const { @@ -107,7 +111,9 @@ EvaluationResult Within::evaluate(const EvaluationContext& params) const { auto geometryType = params.feature->getType(); // Currently only support Point/Points in polygon if (geometryType == FeatureType::Point) { - return pointsWithinPoly(*params.feature, *params.canonical, geoJSONSource); + return pointsWithinPolygons(*params.feature, *params.canonical, geoJSONSource); + } else { + mbgl::Log::Warning(mbgl::Event::General, "Within expression currently only support 'Point' geometry type"); } return false; } diff --git a/src/mbgl/tile/geometry_tile_worker.cpp b/src/mbgl/tile/geometry_tile_worker.cpp index 0729ed2aa54..409dfdf428c 100644 --- a/src/mbgl/tile/geometry_tile_worker.cpp +++ b/src/mbgl/tile/geometry_tile_worker.cpp @@ -401,7 +401,8 @@ void GeometryTileWorker::parse() { for (std::size_t i = 0; !obsolete && i < geometryLayer->featureCount(); i++) { std::unique_ptr feature = geometryLayer->getFeature(i); - if (!filter(expression::EvaluationContext { static_cast(this->id.overscaledZ), feature.get() })) + if (!filter(expression::EvaluationContext(static_cast(this->id.overscaledZ), feature.get()) + .withCanonicalTileID(&id.canonical))) continue; const GeometryCollection& geometries = feature->getGeometries(); From 3d19820c43ca159cd3c8e6c88731b632eba7d2c9 Mon Sep 17 00:00:00 2001 From: zmiao Date: Fri, 7 Feb 2020 15:34:01 +0200 Subject: [PATCH 3/7] Add support for expression test Fix polygon within algorithm Add Unit tests Fix incorrect metrics folder for ios-render-test-runner job --- CMakeLists.txt | 2 + expression-test/expression_test_parser.cpp | 30 +- expression-test/expression_test_parser.hpp | 3 + expression-test/expression_test_runner.cpp | 10 +- include/mbgl/style/expression/expression.hpp | 5 + include/mbgl/style/expression/within.hpp | 4 +- next/CMakeLists.txt | 1010 ----------------- src/core-files.json | 817 ------------- src/mbgl/style/expression/expression.cpp | 24 + src/mbgl/style/expression/within.cpp | 131 ++- src/mbgl/tile/geometry_tile_data.cpp | 77 ++ src/mbgl/tile/geometry_tile_data.hpp | 2 + .../expression_equality/within.a.json | 4 + .../expression_equality/within.b.json | 4 + .../mbgl/test/stub_geometry_tile_feature.hpp | 3 + test/style/property_expression.test.cpp | 98 ++ 16 files changed, 357 insertions(+), 1867 deletions(-) delete mode 100644 next/CMakeLists.txt delete mode 100644 src/core-files.json create mode 100644 test/fixtures/expression_equality/within.a.json create mode 100644 test/fixtures/expression_equality/within.b.json diff --git a/CMakeLists.txt b/CMakeLists.txt index e16dd9da057..e008db2117e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -188,6 +188,7 @@ add_library( ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/step.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/type.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/value.hpp + ${PROJECT_SOURCE_DIR}/include/mbgl/style/expression/within.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/style/filter.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/style/image.hpp ${PROJECT_SOURCE_DIR}/include/mbgl/style/layer.hpp @@ -578,6 +579,7 @@ add_library( ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/util.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/util.hpp ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/value.cpp + ${PROJECT_SOURCE_DIR}/src/mbgl/style/expression/within.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/style/filter.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/style/image.cpp ${PROJECT_SOURCE_DIR}/src/mbgl/style/image_impl.cpp diff --git a/expression-test/expression_test_parser.cpp b/expression-test/expression_test_parser.cpp index 44f8bebf5e3..0d414cc2c08 100644 --- a/expression-test/expression_test_parser.cpp +++ b/expression-test/expression_test_parser.cpp @@ -14,6 +14,8 @@ #include +#include + using namespace mbgl; using namespace mbgl::style; using namespace mbgl::style::conversion; @@ -254,6 +256,19 @@ bool parseInputs(const JSValue& inputsValue, TestData& data) { heatmapDensity = evaluationContext["heatmapDensity"].GetDouble(); } + // Parse canonicalID + optional canonical; + if (evaluationContext.HasMember("canonicalID")) { + assert(evaluationContext["canonicalID"].IsObject()); + assert( + evaluationContext["canonicalID"].HasMember("z") && evaluationContext["canonicalID"]["z"].IsNumber() && + evaluationContext["canonicalID"].HasMember("x") && evaluationContext["canonicalID"]["x"].IsNumber() && + evaluationContext["canonicalID"].HasMember("y") && evaluationContext["canonicalID"]["y"].IsNumber()); + canonical = CanonicalTileID(evaluationContext["canonicalID"]["z"].GetUint(), + evaluationContext["canonicalID"]["x"].GetUint(), + evaluationContext["canonicalID"]["y"].GetUint()); + } + // Parse availableImages std::set availableImages; if (evaluationContext.HasMember("availableImages")) { @@ -282,8 +297,11 @@ bool parseInputs(const JSValue& inputsValue, TestData& data) { feature.id = mapbox::geojson::convert(featureObject["id"]); } - data.inputs.emplace_back( - std::move(zoom), std::move(heatmapDensity), std::move(availableImages), std::move(feature)); + data.inputs.emplace_back(std::move(zoom), + std::move(heatmapDensity), + std::move(canonical), + std::move(availableImages), + std::move(feature)); } return true; } @@ -294,11 +312,11 @@ std::tuple, bool, uint32_t> pars args::ArgumentParser argumentParser("Mapbox GL Expression Test Runner"); args::HelpFlag helpFlag(argumentParser, "help", "Display this help menu", { 'h', "help" }); - args::Flag shuffleFlag(argumentParser, "shuffle", "Toggle shuffling the tests order", - { 's', "shuffle" }); + args::Flag shuffleFlag(argumentParser, "shuffle", "Toggle shuffling the tests order", {'s', "shuffle"}); args::ValueFlag seedValue(argumentParser, "seed", "Shuffle seed (default: random)", { "seed" }); args::PositionalList testNameValues(argumentParser, "URL", "Test name(s)"); + args::ValueFlag testFilterValue(argumentParser, "filter", "Test filter regex", {'f', "filter"}); try { argumentParser.ParseCLI(argc, argv); @@ -336,6 +354,7 @@ std::tuple, bool, uint32_t> pars paths.emplace_back(rootPath); } + auto testFilter = testFilterValue ? args::get(testFilterValue) : std::string{}; // Recursively traverse through the test paths and collect test directories containing "test.json". std::vector testPaths; testPaths.reserve(paths.size()); @@ -346,6 +365,9 @@ std::tuple, bool, uint32_t> pars } for (auto& testPath : filesystem::recursive_directory_iterator(path)) { + if (!testFilter.empty() && !std::regex_search(testPath.path().string(), std::regex(testFilter))) { + continue; + } if (testPath.path().filename() == "test.json") { testPaths.emplace_back(testPath.path()); } diff --git a/expression-test/expression_test_parser.hpp b/expression-test/expression_test_parser.hpp index 842d8a15634..b73dbf0539e 100644 --- a/expression-test/expression_test_parser.hpp +++ b/expression-test/expression_test_parser.hpp @@ -16,14 +16,17 @@ using namespace mbgl; struct Input { Input(optional zoom_, optional heatmapDensity_, + optional canonical_, std::set availableImages_, Feature feature_) : zoom(std::move(zoom_)), heatmapDensity(std::move(heatmapDensity_)), + canonical(std::move(canonical_)), availableImages(std::move(availableImages_)), feature(std::move(feature_)) {} optional zoom; optional heatmapDensity; + optional canonical; std::set availableImages; Feature feature; }; diff --git a/expression-test/expression_test_runner.cpp b/expression-test/expression_test_runner.cpp index 436e4499218..c0d45116367 100644 --- a/expression-test/expression_test_runner.cpp +++ b/expression-test/expression_test_runner.cpp @@ -104,8 +104,14 @@ TestRunOutput runExpressionTest(TestData& data, const std::string& rootPath, con std::vector outputs; if (!data.inputs.empty()) { for (const auto& input : data.inputs) { - auto evaluationResult = - expression->evaluate(input.zoom, input.feature, input.heatmapDensity, input.availableImages); + mbgl::style::expression::EvaluationResult evaluationResult; + if (input.canonical) { + evaluationResult = expression->evaluate( + input.zoom, input.feature, input.heatmapDensity, input.availableImages, *input.canonical); + } else { + evaluationResult = + expression->evaluate(input.zoom, input.feature, input.heatmapDensity, input.availableImages); + } if (!evaluationResult) { std::unordered_map error{{"error", Value{evaluationResult.error().message}}}; outputs.emplace_back(Value{std::move(error)}); diff --git a/include/mbgl/style/expression/expression.hpp b/include/mbgl/style/expression/expression.hpp index 1e34a8bd387..0fd5c4959ea 100644 --- a/include/mbgl/style/expression/expression.hpp +++ b/include/mbgl/style/expression/expression.hpp @@ -191,6 +191,11 @@ class Expression { const Feature& feature, optional colorRampParameter, const std::set& availableImages) const; + EvaluationResult evaluate(optional zoom, + const Feature& feature, + optional colorRampParameter, + const std::set& availableImages, + const CanonicalTileID& canonical) const; EvaluationResult evaluate(optional accumulated, const Feature& feature) const; /** diff --git a/include/mbgl/style/expression/within.hpp b/include/mbgl/style/expression/within.hpp index 88e9cc56b89..5cc36ab19c2 100644 --- a/include/mbgl/style/expression/within.hpp +++ b/include/mbgl/style/expression/within.hpp @@ -31,10 +31,10 @@ class Within final : public Expression { return false; } - std::vector> possibleOutputs() const override { return {{false}}; } + std::vector> possibleOutputs() const override { return {{true}, {false}}; } mbgl::Value serialize() const override; - std::string getOperator() const override { return "Within"; } + std::string getOperator() const override { return "within"; } private: GeoJSON geoJSONSource; diff --git a/next/CMakeLists.txt b/next/CMakeLists.txt deleted file mode 100644 index ab63a55aebc..00000000000 --- a/next/CMakeLists.txt +++ /dev/null @@ -1,1010 +0,0 @@ -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 deleted file mode 100644 index 49fc69705cf..00000000000 --- a/src/core-files.json +++ /dev/null @@ -1,817 +0,0 @@ -{ - "//": "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/style/expression/expression.cpp b/src/mbgl/style/expression/expression.cpp index 3252bb632f7..66e2e30b14a 100644 --- a/src/mbgl/style/expression/expression.cpp +++ b/src/mbgl/style/expression/expression.cpp @@ -9,8 +9,16 @@ namespace expression { class GeoJSONFeature : public GeometryTileFeature { public: const Feature& feature; + mutable optional geometry; GeoJSONFeature(const Feature& feature_) : feature(feature_) {} + GeoJSONFeature(const Feature& feature_, const CanonicalTileID& canonical) : feature(feature_) { + geometry = convertGeometry(feature.geometry, canonical); + // https://github.com/mapbox/geojson-vt-cpp/issues/44 + if (getType() == FeatureType::Polygon) { + geometry = fixupPolygons(*geometry); + } + } FeatureType getType() const override { return apply_visitor(ToFeatureType(), feature.geometry); @@ -24,6 +32,11 @@ class GeoJSONFeature : public GeometryTileFeature { } return optional(); } + const GeometryCollection& getGeometries() const override { + if (geometry) return *geometry; + geometry = GeometryCollection(); + return *geometry; + } }; EvaluationResult Expression::evaluate(optional zoom, @@ -41,6 +54,17 @@ EvaluationResult Expression::evaluate(optional zoom, return this->evaluate(EvaluationContext(zoom, &f, colorRampParameter).withAvailableImages(&availableImages)); } +EvaluationResult Expression::evaluate(optional zoom, + const Feature& feature, + optional colorRampParameter, + const std::set& availableImages, + const CanonicalTileID& canonical) const { + GeoJSONFeature f(feature, canonical); + return this->evaluate(EvaluationContext(zoom, &f, colorRampParameter) + .withAvailableImages(&availableImages) + .withCanonicalTileID(&canonical)); +} + EvaluationResult Expression::evaluate(optional accumulated, const Feature& feature) const { GeoJSONFeature f(feature); return this->evaluate(EvaluationContext(accumulated, &f)); diff --git a/src/mbgl/style/expression/within.cpp b/src/mbgl/style/expression/within.cpp index d02ea47cb22..a26f6fb7c88 100644 --- a/src/mbgl/style/expression/within.cpp +++ b/src/mbgl/style/expression/within.cpp @@ -7,41 +7,58 @@ #include #include +#include +#include + namespace mbgl { 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)); +class PolygonFeature : public GeometryTileFeature { +public: + const Feature& feature; + mutable optional geometry; + + PolygonFeature(const Feature& feature_, const CanonicalTileID& canonical) : feature(feature_) { + geometry = convertGeometry(feature.geometry, canonical); + assert(geometry); + geometry = fixupPolygons(*geometry); + } + + FeatureType getType() const override { return FeatureType::Polygon; } + const PropertyMap& getProperties() const override { return feature.properties; } + FeatureIdentifier getID() const override { return feature.id; } + optional getValue(const std::string& /*key*/) const override { return optional(); } + const GeometryCollection& getGeometries() const override { + assert(geometry); + return *geometry; + } +}; + +bool rayIntersect(const mbgl::Point& p, const mbgl::Point& p1, const mbgl::Point& p2) { + return ((p1.y > p.y) != (p2.y > p.y)) && (p.x < (p2.x - p1.x) * (p.y - p1.y) / (p2.y - p1.y) + p1.x); } -// winding number algorithm for checking if point inside a ploygon or not. -// http://geomalgorithms.com/a03-_inclusion.html#wn_PnPoly() -bool pointWithinPolygons(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(); - // loop through every edge of the polygon +// ray casting algorithm for detecting if point is in polygon +bool pointWithinPolygon(const mbgl::Point& point, const mapbox::geometry::polygon& polygon) { + bool within = false; + for (auto ring : polygon) { + auto size = ring.size(); + // loop through every edge of the ring for (decltype(size) 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 (rayIntersect(point, ring[i], ring[i + 1])) { + within = !within; } } - if (wn != 0) { - return true; - } } - return wn != 0; + return within; +} + +bool pointWithinPolygons(const mbgl::Point& point, const mapbox::geometry::multi_polygon& polygons) { + for (auto polygon : polygons) { + auto within = pointWithinPolygon(point, polygon); + if (within) return true; + } + return false; } bool pointsWithinPolygons(const mbgl::GeometryTileFeature& feature, @@ -49,8 +66,11 @@ bool pointsWithinPolygons(const mbgl::GeometryTileFeature& feature, const mbgl::GeoJSON& geoJson) { return geoJson.match( [&feature, &canonical](const mapbox::geometry::geometry& geometrySet) -> bool { - return geometrySet.match( - [&feature, &canonical](const mapbox::geometry::polygon& polygons) -> bool { + mbgl::Feature f(geometrySet); + PolygonFeature polyFeature(f, canonical); + auto refinedGeoSet = convertGeometry(polyFeature, canonical); + return refinedGeoSet.match( + [&feature, &canonical](const mapbox::geometry::multi_polygon& polygons) -> bool { return convertGeometry(feature, canonical) .match( [&polygons](const mapbox::geometry::point& point) -> bool { @@ -68,6 +88,24 @@ bool pointsWithinPolygons(const mbgl::GeometryTileFeature& feature, }, [](const auto&) -> bool { return false; }); }, + [&feature, &canonical](const mapbox::geometry::polygon& polygon) -> bool { + return convertGeometry(feature, canonical) + .match( + [&polygon](const mapbox::geometry::point& point) -> bool { + return pointWithinPolygon(point, polygon); + }, + [&polygon](const mapbox::geometry::multi_point& points) -> bool { + auto result = false; + for (const auto& p : points) { + result = pointWithinPolygon(p, polygon); + if (!result) { + return result; + } + } + return result; + }, + [](const auto&) -> bool { return false; }); + }, [](const auto&) -> bool { return false; }); }, [](const auto&) -> bool { return false; }); @@ -109,11 +147,11 @@ EvaluationResult Within::evaluate(const EvaluationContext& params) const { return false; } auto geometryType = params.feature->getType(); - // Currently only support Point/Points in polygon + // Currently only support Point/Points in Polygon/Polygons if (geometryType == FeatureType::Point) { return pointsWithinPolygons(*params.feature, *params.canonical, geoJSONSource); } else { - mbgl::Log::Warning(mbgl::Event::General, "Within expression currently only support 'Point' geometry type"); + mbgl::Log::Warning(mbgl::Event::General, "within expression currently only support 'Point' geometry type"); } return false; } @@ -122,7 +160,7 @@ 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 " + + ctx.error("'within' expression requires exactly one argument, but found " + util::toString(arrayLength(value) - 1) + " instead."); return ParseResult(); } @@ -136,8 +174,37 @@ ParseResult Within::parse(const Convertible& value, ParsingContext& ctx) { return ParseResult(); } +Value valueConverter(const mapbox::geojson::rapidjson_value& v) { + if (v.IsDouble()) { + return v.GetDouble(); + } + if (v.IsString()) { + return std::string(v.GetString()); + } + if (v.IsArray()) { + std::vector result; + for (const auto& m : v.GetArray()) { + result.push_back(valueConverter(m)); + } + return result; + } + // Ignore other types as valid geojson only contains above types. + return Null; +} + mbgl::Value Within::serialize() const { - return std::vector{{getOperator()}, {mapbox::geojson::stringify(geoJSONSource)}}; + std::unordered_map serialized; + rapidjson::CrtAllocator allocator; + const mapbox::geojson::rapidjson_value value = mapbox::geojson::convert(geoJSONSource, allocator); + if (value.IsObject()) { + for (const auto& m : value.GetObject()) { + serialized.emplace(m.name.GetString(), valueConverter(m.value)); + } + } else { + mbgl::Log::Error(mbgl::Event::General, + "Failed to serialize 'within' expression, converted rapidJSON is not an object"); + } + return std::vector{{getOperator(), *fromExpressionValue(serialized)}}; } } // namespace expression diff --git a/src/mbgl/tile/geometry_tile_data.cpp b/src/mbgl/tile/geometry_tile_data.cpp index 838f37f0dae..56bef66c62f 100644 --- a/src/mbgl/tile/geometry_tile_data.cpp +++ b/src/mbgl/tile/geometry_tile_data.cpp @@ -2,6 +2,7 @@ #include #include +#include namespace mbgl { @@ -173,6 +174,82 @@ Feature::geometry_type convertGeometry(const GeometryTileFeature& geometryTileFe return Point(); } +GeometryCollection convertGeometry(const Feature::geometry_type& 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); + + auto latLonToTileCoodinates = [&](const Point& c) { + Point p; + + auto x = (c.x + 180.0) * size / 360.0 - x0; + p.x = + int16_t(util::clamp(x, std::numeric_limits::min(), std::numeric_limits::max())); + + auto y = (180 - (std::log(std::tan((c.y + 90) * M_PI / 360.0)) * 180 / M_PI)) * size / 360 - y0; + p.y = + int16_t(util::clamp(y, std::numeric_limits::min(), std::numeric_limits::max())); + + return p; + }; + + return geometryTileFeature.match( + [&](const Point& point) -> GeometryCollection { return {{latLonToTileCoodinates(point)}}; }, + [&](const MultiPoint& points) -> GeometryCollection { + GeometryCollection result; + std::vector> temp; + for (const auto p : points) { + temp.emplace_back(latLonToTileCoodinates(p)); + } + result = {temp}; + return result; + }, + [&](const LineString& lineString) -> GeometryCollection { + GeometryCollection result; + std::vector> temp; + for (const auto p : lineString) { + temp.emplace_back(latLonToTileCoodinates(p)); + } + result = {temp}; + return result; + }, + [&](const MultiLineString& lineStrings) -> GeometryCollection { + GeometryCollection result; + for (const auto line : lineStrings) { + std::vector> temp; + for (const auto p : line) { + temp.emplace_back(latLonToTileCoodinates(p)); + } + result.emplace_back(temp); + } + return result; + }, + [&](const Polygon polygon) -> GeometryCollection { + GeometryCollection result; + for (const auto line : polygon) { + std::vector> temp; + for (const auto p : line) { + temp.emplace_back(latLonToTileCoodinates(p)); + } + result.emplace_back(temp); + } + return result; + }, + [&](const MultiPolygon polygons) -> GeometryCollection { + GeometryCollection result; + for (const auto polygon : polygons) + for (const auto line : polygon) { + LineString temp; + for (const auto p : line) { + temp.emplace_back(latLonToTileCoodinates(p)); + } + result.emplace_back(temp); + } + return result; + }, + [](const auto&) -> GeometryCollection { return GeometryCollection(); }); +} + Feature convertFeature(const GeometryTileFeature& geometryTileFeature, const CanonicalTileID& tileID) { Feature feature { convertGeometry(geometryTileFeature, tileID) }; feature.properties = geometryTileFeature.getProperties(); diff --git a/src/mbgl/tile/geometry_tile_data.hpp b/src/mbgl/tile/geometry_tile_data.hpp index a0a069f3d11..fc0790db837 100644 --- a/src/mbgl/tile/geometry_tile_data.hpp +++ b/src/mbgl/tile/geometry_tile_data.hpp @@ -82,6 +82,8 @@ void limitHoles(GeometryCollection&, uint32_t maxHoles); Feature::geometry_type convertGeometry(const GeometryTileFeature& geometryTileFeature, const CanonicalTileID& tileID); +GeometryCollection convertGeometry(const Feature::geometry_type& geometryTileFeature, const CanonicalTileID& tileID); + // convert from GeometryTileFeature to Feature (eventually we should eliminate GeometryTileFeature) Feature convertFeature(const GeometryTileFeature&, const CanonicalTileID&); diff --git a/test/fixtures/expression_equality/within.a.json b/test/fixtures/expression_equality/within.a.json new file mode 100644 index 00000000000..c982681537e --- /dev/null +++ b/test/fixtures/expression_equality/within.a.json @@ -0,0 +1,4 @@ +["within", { + "type": "Polygon", + "coordinates": [[[0, 0], [0, 5], [5, 5], [5, 0], [0, 0]]] + }] \ No newline at end of file diff --git a/test/fixtures/expression_equality/within.b.json b/test/fixtures/expression_equality/within.b.json new file mode 100644 index 00000000000..e5805c93a1f --- /dev/null +++ b/test/fixtures/expression_equality/within.b.json @@ -0,0 +1,4 @@ +["within", { + "type": "Polygon", + "coordinates": [[[0, 0], [0, 6], [5, 5], [5, 0], [0, 0]]] + }] \ No newline at end of file diff --git a/test/src/mbgl/test/stub_geometry_tile_feature.hpp b/test/src/mbgl/test/stub_geometry_tile_feature.hpp index e74988df2e9..024e3c6c405 100644 --- a/test/src/mbgl/test/stub_geometry_tile_feature.hpp +++ b/test/src/mbgl/test/stub_geometry_tile_feature.hpp @@ -16,6 +16,9 @@ class StubGeometryTileFeature : public GeometryTileFeature { geometry(std::move(geometry_)) { } + StubGeometryTileFeature(FeatureType type_, GeometryCollection geometry_) + : type(type_), geometry(std::move(geometry_)) {} + PropertyMap properties; FeatureIdentifier id; FeatureType type = FeatureType::Point; diff --git a/test/style/property_expression.test.cpp b/test/style/property_expression.test.cpp index 6334fcbe390..0624cff385d 100644 --- a/test/style/property_expression.test.cpp +++ b/test/style/property_expression.test.cpp @@ -7,6 +7,8 @@ #include #include +#include + using namespace mbgl; using namespace mbgl::style; using namespace mbgl::style::expression; @@ -218,3 +220,99 @@ TEST(PropertyExpression, ImageExpression) { EXPECT_EQ(evaluatedImage.id(), "bicycle-15"s); } } + +TEST(PropertyExpression, WithinExpression) { + CanonicalTileID canonicalTileID(3, 3, 3); + + // geoJSON source must be Polygon.(Currently only supports Polygon) + static const std::string invalidGeoSource = R"({ + "type": "LineString", + "coordinates": [[0, 0], [0, 5], [5, 5], [5, 0]] + })"; + static const std::string validGeoSource = R"data( + { + "type": "Polygon", + "coordinates": [ + [ + [-11.689453125, -9.79567758282973], + [2.021484375, -10.012129557908128], + [-15.99609375, -17.392579271057766], + [-5.9765625, -5.659718554577273], + [-16.259765625, -3.7327083213358336], + [-17.75390625, -12.897489183755892], + [-17.138671875, -21.002471054356715], + [4.482421875, -16.8886597873816], + [3.076171875, -7.01366792756663], + [ -5.9326171875, 0.6591651462894632], + [-16.1279296875, 1.4939713066293239], + [-11.689453125, -9.79567758282973] + ] + ] + })data"; + + // evaluation test with invalid geojson source + { + std::stringstream ss; + ss << std::string(R"(["within", )") << invalidGeoSource << std::string(R"( ])"); + auto expression = createExpression(ss.str().c_str()); + ASSERT_FALSE(expression); + } + + // evaluation test with valid geojson source + std::stringstream ss; + ss << std::string(R"(["within", )") << validGeoSource << std::string(R"( ])"); + auto expression = createExpression(ss.str().c_str()); + ASSERT_TRUE(expression); + PropertyExpression propExpr(std::move(expression)); + + // evaluation test with valid geojson source but FeatureType is not Point (currently only support + // FeatureType::Point) + { + // testLine is inside polygon, but will return false + LineString testLine{{-9.228515625, -17.560246503294888}, {-2.4609375, -16.04581345375217}}; + auto geoLine = convertGeometry(testLine, canonicalTileID); + StubGeometryTileFeature lineFeature(FeatureType::LineString, geoLine); + + auto evaluatedResult = propExpr.evaluate(EvaluationContext(&lineFeature).withCanonicalTileID(&canonicalTileID)); + EXPECT_FALSE(evaluatedResult); + } + + // evaluation test with valid geojson source and valid point features + { + auto getPointFeature = [&canonicalTileID](const Point& testPoint) -> StubGeometryTileFeature { + auto geoPoint = convertGeometry(testPoint, canonicalTileID); + StubGeometryTileFeature pointFeature(FeatureType::Point, geoPoint); + return pointFeature; + }; + + // check `within` algorithm + auto pointFeature = getPointFeature(Point(-10.72265625, -7.27529233637217)); + auto evaluatedResult = + propExpr.evaluate(EvaluationContext(&pointFeature).withCanonicalTileID(&canonicalTileID)); + EXPECT_FALSE(evaluatedResult); + + pointFeature = getPointFeature(Point(-7.646484374999999, -12.382928338487396)); + evaluatedResult = propExpr.evaluate(EvaluationContext(&pointFeature).withCanonicalTileID(&canonicalTileID)); + EXPECT_FALSE(evaluatedResult); + + pointFeature = getPointFeature(Point(-15.2490234375, -2.986927393334863)); + evaluatedResult = propExpr.evaluate(EvaluationContext(&pointFeature).withCanonicalTileID(&canonicalTileID)); + EXPECT_FALSE(evaluatedResult); + + pointFeature = getPointFeature(Point(-10.590820312499998, 2.4601811810210052)); + evaluatedResult = propExpr.evaluate(EvaluationContext(&pointFeature).withCanonicalTileID(&canonicalTileID)); + EXPECT_FALSE(evaluatedResult); + + pointFeature = getPointFeature(Point(-3.9990234375, -4.915832801313164)); + evaluatedResult = propExpr.evaluate(EvaluationContext(&pointFeature).withCanonicalTileID(&canonicalTileID)); + EXPECT_TRUE(evaluatedResult); + + pointFeature = getPointFeature(Point(-1.1865234375, -16.63619187839765)); + evaluatedResult = propExpr.evaluate(EvaluationContext(&pointFeature).withCanonicalTileID(&canonicalTileID)); + EXPECT_TRUE(evaluatedResult); + + pointFeature = getPointFeature(Point(-15.5126953125, -11.73830237143684)); + evaluatedResult = propExpr.evaluate(EvaluationContext(&pointFeature).withCanonicalTileID(&canonicalTileID)); + EXPECT_TRUE(evaluatedResult); + } +} From 0cd4d5b80b3eed8b75af2ed97837bcd5975f76c4 Mon Sep 17 00:00:00 2001 From: zmiao Date: Tue, 11 Feb 2020 12:35:57 +0200 Subject: [PATCH 4/7] Update baselines --- metrics/binary-size/android-arm64-v8a/metrics.json | 2 +- metrics/binary-size/android-armeabi-v7a/metrics.json | 2 +- metrics/binary-size/android-x86/metrics.json | 2 +- metrics/binary-size/android-x86_64/metrics.json | 2 +- metrics/binary-size/linux-gcc8/metrics.json | 6 +++--- metrics/ignores/platform-all.json | 9 +-------- 6 files changed, 8 insertions(+), 15 deletions(-) diff --git a/metrics/binary-size/android-arm64-v8a/metrics.json b/metrics/binary-size/android-arm64-v8a/metrics.json index 946e33661ac..c523910a2eb 100644 --- a/metrics/binary-size/android-arm64-v8a/metrics.json +++ b/metrics/binary-size/android-arm64-v8a/metrics.json @@ -3,7 +3,7 @@ [ "android-arm64-v8a", "/tmp/attach/install/android-arm64-v8a-release/lib/libmapbox-gl.so", - 1930061 + 1952143 ] ] } \ No newline at end of file diff --git a/metrics/binary-size/android-armeabi-v7a/metrics.json b/metrics/binary-size/android-armeabi-v7a/metrics.json index 58af93376fd..b5691f1e7dd 100644 --- a/metrics/binary-size/android-armeabi-v7a/metrics.json +++ b/metrics/binary-size/android-armeabi-v7a/metrics.json @@ -3,7 +3,7 @@ [ "android-armeabi-v7a", "/tmp/attach/install/android-armeabi-v7a-release/lib/libmapbox-gl.so", - 1643552 + 1647895 ] ] } \ No newline at end of file diff --git a/metrics/binary-size/android-x86/metrics.json b/metrics/binary-size/android-x86/metrics.json index 6606eb920bb..eb4e8af82ce 100644 --- a/metrics/binary-size/android-x86/metrics.json +++ b/metrics/binary-size/android-x86/metrics.json @@ -3,7 +3,7 @@ [ "android-x86", "/tmp/attach/install/android-x86-release/lib/libmapbox-gl.so", - 1953751 + 1976358 ] ] } \ No newline at end of file diff --git a/metrics/binary-size/android-x86_64/metrics.json b/metrics/binary-size/android-x86_64/metrics.json index b64b151ceb4..94b20e9fb37 100644 --- a/metrics/binary-size/android-x86_64/metrics.json +++ b/metrics/binary-size/android-x86_64/metrics.json @@ -3,7 +3,7 @@ [ "android-x86_64", "/tmp/attach/install/android-x86_64-release/lib/libmapbox-gl.so", - 1966850 + 1988396 ] ] } \ No newline at end of file diff --git a/metrics/binary-size/linux-gcc8/metrics.json b/metrics/binary-size/linux-gcc8/metrics.json index 9507fcc6e29..0563028058a 100644 --- a/metrics/binary-size/linux-gcc8/metrics.json +++ b/metrics/binary-size/linux-gcc8/metrics.json @@ -3,17 +3,17 @@ [ "mbgl-glfw", "/tmp/attach/install/linux-gcc8-release/bin/mbgl-glfw", - 7549288 + 7598440 ], [ "mbgl-offline", "/tmp/attach/install/linux-gcc8-release/bin/mbgl-offline", - 6631656 + 6684904 ], [ "mbgl-render", "/tmp/attach/install/linux-gcc8-release/bin/mbgl-render", - 7434600 + 7483752 ] ] } \ No newline at end of file diff --git a/metrics/ignores/platform-all.json b/metrics/ignores/platform-all.json index 2f1bce6e4f3..f27941a3b68 100644 --- a/metrics/ignores/platform-all.json +++ b/metrics/ignores/platform-all.json @@ -22,8 +22,6 @@ "expression-tests/legacy/interval/composite-default": "https://github.com/mapbox/mapbox-gl-native/issues/12747", "expression-tests/legacy/interval/tokens-zoom": "https://github.com/mapbox/mapbox-gl-native/issues/12747", "expression-tests/resolved-locale/basic": "Even the 'en' locale may not be present on some test systems.", - "expression-tests/within/basic": "TODO: Fix by implementing `within` expression", - "expression-tests/within/invalid-geojson": "TODO: Fix by implementing `within` expression", "probes/file-size/fail-file-doesnt-match": "Should fail, doesn't match the expectation.", "probes/file-size/fail-file-not-found": "Should fail, file not found.", "probes/file-size/fail-size-is-over": "Should fail, size is bigger than expected.", @@ -135,10 +133,5 @@ "render-tests/line-pattern/with-dasharray":"https://github.com/mapbox/mapbox-gl-js/pull/9189", "render-tests/symbol-sort-key/placement-tile-boundary-right-then-left": "https://github.com/mapbox/mapbox-gl-js/pull/9054", "render-tests/line-dasharray/zero-length-gap":"https://github.com/mapbox/mapbox-gl-js/pull/9246", - "render-tests/within/layout-text": "TODO: Fix by enabling `within` expreesion with layout property", - "render-tests/within/filter-with-inlined-geojson": "TODO: Fix by enabling `within` expreesion with filter expression", - "render-tests/within/paint-circle": "TODO: Fix by enabling `within` expreesion with paint property", - "render-tests/within/paint-icon": "TODO: Fix by enabling `within` expreesion with paint property", - "render-tests/within/paint-text": "TODO: Fix by enabling `within` expreesion with paint property" - + "render-tests/within/layout-text": "TODO: Fix by enabling `within` expreesion with layout property" } From 1defde6cec99633a0c4334aa6e770bb266fbbd8a Mon Sep 17 00:00:00 2001 From: zmiao Date: Tue, 11 Feb 2020 13:28:04 +0200 Subject: [PATCH 5/7] Add metric baselines for within expression/render tests --- .../filter-with-inlined-geojson/metrics.json | 35 +++++++++++++++++++ .../within/paint-circle/metrics.json | 35 +++++++++++++++++++ .../within/paint-icon/metrics.json | 35 +++++++++++++++++++ .../within/paint-text/metrics.json | 35 +++++++++++++++++++ .../filter-with-inlined-geojson/metrics.json | 35 +++++++++++++++++++ .../within/paint-circle/metrics.json | 35 +++++++++++++++++++ .../within/paint-icon/metrics.json | 35 +++++++++++++++++++ .../within/paint-text/metrics.json | 35 +++++++++++++++++++ .../filter-with-inlined-geojson/metrics.json | 35 +++++++++++++++++++ .../within/paint-circle/metrics.json | 35 +++++++++++++++++++ .../within/paint-icon/metrics.json | 35 +++++++++++++++++++ .../within/paint-text/metrics.json | 35 +++++++++++++++++++ .../filter-with-inlined-geojson/metrics.json | 35 +++++++++++++++++++ .../within/paint-circle/metrics.json | 35 +++++++++++++++++++ .../within/paint-icon/metrics.json | 35 +++++++++++++++++++ .../within/paint-text/metrics.json | 35 +++++++++++++++++++ 16 files changed, 560 insertions(+) create mode 100644 metrics/android-render-test-runner/render-tests/within/filter-with-inlined-geojson/metrics.json create mode 100644 metrics/android-render-test-runner/render-tests/within/paint-circle/metrics.json create mode 100644 metrics/android-render-test-runner/render-tests/within/paint-icon/metrics.json create mode 100644 metrics/android-render-test-runner/render-tests/within/paint-text/metrics.json create mode 100644 metrics/ios-render-test-runner/render-tests/within/filter-with-inlined-geojson/metrics.json create mode 100644 metrics/ios-render-test-runner/render-tests/within/paint-circle/metrics.json create mode 100644 metrics/ios-render-test-runner/render-tests/within/paint-icon/metrics.json create mode 100644 metrics/ios-render-test-runner/render-tests/within/paint-text/metrics.json create mode 100644 metrics/linux-clang8-release/render-tests/within/filter-with-inlined-geojson/metrics.json create mode 100644 metrics/linux-clang8-release/render-tests/within/paint-circle/metrics.json create mode 100644 metrics/linux-clang8-release/render-tests/within/paint-icon/metrics.json create mode 100644 metrics/linux-clang8-release/render-tests/within/paint-text/metrics.json create mode 100644 metrics/linux-gcc8-release/render-tests/within/filter-with-inlined-geojson/metrics.json create mode 100644 metrics/linux-gcc8-release/render-tests/within/paint-circle/metrics.json create mode 100644 metrics/linux-gcc8-release/render-tests/within/paint-icon/metrics.json create mode 100644 metrics/linux-gcc8-release/render-tests/within/paint-text/metrics.json diff --git a/metrics/android-render-test-runner/render-tests/within/filter-with-inlined-geojson/metrics.json b/metrics/android-render-test-runner/render-tests/within/filter-with-inlined-geojson/metrics.json new file mode 100644 index 00000000000..12b2edda3bf --- /dev/null +++ b/metrics/android-render-test-runner/render-tests/within/filter-with-inlined-geojson/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 0, + 0 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 4, + 4, + 10, + 1, + [ + 49152, + 49152 + ], + [ + 66, + 66 + ], + [ + 100, + 100 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/android-render-test-runner/render-tests/within/paint-circle/metrics.json b/metrics/android-render-test-runner/render-tests/within/paint-circle/metrics.json new file mode 100644 index 00000000000..e76ac664a03 --- /dev/null +++ b/metrics/android-render-test-runner/render-tests/within/paint-circle/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 0, + 0 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 16, + 13, + 29, + 1, + [ + 196608, + 196608 + ], + [ + 246, + 246 + ], + [ + 528, + 528 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/android-render-test-runner/render-tests/within/paint-icon/metrics.json b/metrics/android-render-test-runner/render-tests/within/paint-icon/metrics.json new file mode 100644 index 00000000000..a65edfc8c98 --- /dev/null +++ b/metrics/android-render-test-runner/render-tests/within/paint-icon/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 2, + 211659 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 13, + 17, + 22, + 1, + [ + 154848, + 154848 + ], + [ + 174, + 174 + ], + [ + 528, + 528 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/android-render-test-runner/render-tests/within/paint-text/metrics.json b/metrics/android-render-test-runner/render-tests/within/paint-text/metrics.json new file mode 100644 index 00000000000..b42b2f76347 --- /dev/null +++ b/metrics/android-render-test-runner/render-tests/within/paint-text/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 1, + 84942 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 13, + 17, + 22, + 1, + [ + 207700, + 207700 + ], + [ + 246, + 246 + ], + [ + 1680, + 1680 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/ios-render-test-runner/render-tests/within/filter-with-inlined-geojson/metrics.json b/metrics/ios-render-test-runner/render-tests/within/filter-with-inlined-geojson/metrics.json new file mode 100644 index 00000000000..12b2edda3bf --- /dev/null +++ b/metrics/ios-render-test-runner/render-tests/within/filter-with-inlined-geojson/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 0, + 0 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 4, + 4, + 10, + 1, + [ + 49152, + 49152 + ], + [ + 66, + 66 + ], + [ + 100, + 100 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/ios-render-test-runner/render-tests/within/paint-circle/metrics.json b/metrics/ios-render-test-runner/render-tests/within/paint-circle/metrics.json new file mode 100644 index 00000000000..e76ac664a03 --- /dev/null +++ b/metrics/ios-render-test-runner/render-tests/within/paint-circle/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 0, + 0 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 16, + 13, + 29, + 1, + [ + 196608, + 196608 + ], + [ + 246, + 246 + ], + [ + 528, + 528 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/ios-render-test-runner/render-tests/within/paint-icon/metrics.json b/metrics/ios-render-test-runner/render-tests/within/paint-icon/metrics.json new file mode 100644 index 00000000000..a65edfc8c98 --- /dev/null +++ b/metrics/ios-render-test-runner/render-tests/within/paint-icon/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 2, + 211659 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 13, + 17, + 22, + 1, + [ + 154848, + 154848 + ], + [ + 174, + 174 + ], + [ + 528, + 528 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/ios-render-test-runner/render-tests/within/paint-text/metrics.json b/metrics/ios-render-test-runner/render-tests/within/paint-text/metrics.json new file mode 100644 index 00000000000..b42b2f76347 --- /dev/null +++ b/metrics/ios-render-test-runner/render-tests/within/paint-text/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 1, + 84942 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 13, + 17, + 22, + 1, + [ + 207700, + 207700 + ], + [ + 246, + 246 + ], + [ + 1680, + 1680 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/linux-clang8-release/render-tests/within/filter-with-inlined-geojson/metrics.json b/metrics/linux-clang8-release/render-tests/within/filter-with-inlined-geojson/metrics.json new file mode 100644 index 00000000000..12b2edda3bf --- /dev/null +++ b/metrics/linux-clang8-release/render-tests/within/filter-with-inlined-geojson/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 0, + 0 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 4, + 4, + 10, + 1, + [ + 49152, + 49152 + ], + [ + 66, + 66 + ], + [ + 100, + 100 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/linux-clang8-release/render-tests/within/paint-circle/metrics.json b/metrics/linux-clang8-release/render-tests/within/paint-circle/metrics.json new file mode 100644 index 00000000000..e76ac664a03 --- /dev/null +++ b/metrics/linux-clang8-release/render-tests/within/paint-circle/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 0, + 0 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 16, + 13, + 29, + 1, + [ + 196608, + 196608 + ], + [ + 246, + 246 + ], + [ + 528, + 528 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/linux-clang8-release/render-tests/within/paint-icon/metrics.json b/metrics/linux-clang8-release/render-tests/within/paint-icon/metrics.json new file mode 100644 index 00000000000..a65edfc8c98 --- /dev/null +++ b/metrics/linux-clang8-release/render-tests/within/paint-icon/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 2, + 211659 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 13, + 17, + 22, + 1, + [ + 154848, + 154848 + ], + [ + 174, + 174 + ], + [ + 528, + 528 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/linux-clang8-release/render-tests/within/paint-text/metrics.json b/metrics/linux-clang8-release/render-tests/within/paint-text/metrics.json new file mode 100644 index 00000000000..b42b2f76347 --- /dev/null +++ b/metrics/linux-clang8-release/render-tests/within/paint-text/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 1, + 84942 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 13, + 17, + 22, + 1, + [ + 207700, + 207700 + ], + [ + 246, + 246 + ], + [ + 1680, + 1680 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/linux-gcc8-release/render-tests/within/filter-with-inlined-geojson/metrics.json b/metrics/linux-gcc8-release/render-tests/within/filter-with-inlined-geojson/metrics.json new file mode 100644 index 00000000000..12b2edda3bf --- /dev/null +++ b/metrics/linux-gcc8-release/render-tests/within/filter-with-inlined-geojson/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 0, + 0 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 4, + 4, + 10, + 1, + [ + 49152, + 49152 + ], + [ + 66, + 66 + ], + [ + 100, + 100 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/linux-gcc8-release/render-tests/within/paint-circle/metrics.json b/metrics/linux-gcc8-release/render-tests/within/paint-circle/metrics.json new file mode 100644 index 00000000000..e76ac664a03 --- /dev/null +++ b/metrics/linux-gcc8-release/render-tests/within/paint-circle/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 0, + 0 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 16, + 13, + 29, + 1, + [ + 196608, + 196608 + ], + [ + 246, + 246 + ], + [ + 528, + 528 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/linux-gcc8-release/render-tests/within/paint-icon/metrics.json b/metrics/linux-gcc8-release/render-tests/within/paint-icon/metrics.json new file mode 100644 index 00000000000..a65edfc8c98 --- /dev/null +++ b/metrics/linux-gcc8-release/render-tests/within/paint-icon/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 2, + 211659 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 13, + 17, + 22, + 1, + [ + 154848, + 154848 + ], + [ + 174, + 174 + ], + [ + 528, + 528 + ] + ] + ] +} \ No newline at end of file diff --git a/metrics/linux-gcc8-release/render-tests/within/paint-text/metrics.json b/metrics/linux-gcc8-release/render-tests/within/paint-text/metrics.json new file mode 100644 index 00000000000..b42b2f76347 --- /dev/null +++ b/metrics/linux-gcc8-release/render-tests/within/paint-text/metrics.json @@ -0,0 +1,35 @@ +{ + "network": [ + [ + "probeNetwork - default - end", + 1, + 84942 + ], + [ + "probeNetwork - default - start", + 0, + 0 + ] + ], + "gfx": [ + [ + "probeGFX - default - end", + 13, + 17, + 22, + 1, + [ + 207700, + 207700 + ], + [ + 246, + 246 + ], + [ + 1680, + 1680 + ] + ] + ] +} \ No newline at end of file From 4e662464ae3c1409db57dbf47bbdc06f068e879d Mon Sep 17 00:00:00 2001 From: zmiao Date: Tue, 11 Feb 2020 14:40:51 +0200 Subject: [PATCH 6/7] reserve vecotr capacity, fix for points within polygon Address review findings/nit --- expression-test/expression_test_parser.cpp | 15 ++++---- include/mbgl/style/expression/within.hpp | 2 +- src/mbgl/style/expression/within.cpp | 36 +++++++---------- src/mbgl/tile/geometry_tile_data.cpp | 45 ++++++++++++---------- 4 files changed, 46 insertions(+), 52 deletions(-) diff --git a/expression-test/expression_test_parser.cpp b/expression-test/expression_test_parser.cpp index 0d414cc2c08..9edc3b98660 100644 --- a/expression-test/expression_test_parser.cpp +++ b/expression-test/expression_test_parser.cpp @@ -259,14 +259,13 @@ bool parseInputs(const JSValue& inputsValue, TestData& data) { // Parse canonicalID optional canonical; if (evaluationContext.HasMember("canonicalID")) { - assert(evaluationContext["canonicalID"].IsObject()); - assert( - evaluationContext["canonicalID"].HasMember("z") && evaluationContext["canonicalID"]["z"].IsNumber() && - evaluationContext["canonicalID"].HasMember("x") && evaluationContext["canonicalID"]["x"].IsNumber() && - evaluationContext["canonicalID"].HasMember("y") && evaluationContext["canonicalID"]["y"].IsNumber()); - canonical = CanonicalTileID(evaluationContext["canonicalID"]["z"].GetUint(), - evaluationContext["canonicalID"]["x"].GetUint(), - evaluationContext["canonicalID"]["y"].GetUint()); + const auto& canonicalIDObject = evaluationContext["canonicalID"]; + assert(canonicalIDObject.IsObject()); + assert(canonicalIDObject.HasMember("z") && canonicalIDObject["z"].IsNumber()); + assert(canonicalIDObject.HasMember("x") && canonicalIDObject["x"].IsNumber()); + assert(canonicalIDObject.HasMember("y") && canonicalIDObject["y"].IsNumber()); + canonical = CanonicalTileID( + canonicalIDObject["z"].GetUint(), canonicalIDObject["x"].GetUint(), canonicalIDObject["y"].GetUint()); } // Parse availableImages diff --git a/include/mbgl/style/expression/within.hpp b/include/mbgl/style/expression/within.hpp index 5cc36ab19c2..7e4050509dc 100644 --- a/include/mbgl/style/expression/within.hpp +++ b/include/mbgl/style/expression/within.hpp @@ -15,7 +15,7 @@ class Within final : public Expression { public: explicit Within(GeoJSON geojson); - ~Within() final; + ~Within() override; EvaluationResult evaluate(const EvaluationContext&) const override; diff --git a/src/mbgl/style/expression/within.cpp b/src/mbgl/style/expression/within.cpp index a26f6fb7c88..0df0bd86ce4 100644 --- a/src/mbgl/style/expression/within.cpp +++ b/src/mbgl/style/expression/within.cpp @@ -44,7 +44,7 @@ bool pointWithinPolygon(const mbgl::Point& point, const mapbox::geometry for (auto ring : polygon) { auto size = ring.size(); // loop through every edge of the ring - for (decltype(size) i = 0; i < size - 1; ++i) { + for (std::size_t i = 0; i < size - 1; ++i) { if (rayIntersect(point, ring[i], ring[i + 1])) { within = !within; } @@ -55,8 +55,7 @@ bool pointWithinPolygon(const mbgl::Point& point, const mapbox::geometry bool pointWithinPolygons(const mbgl::Point& point, const mapbox::geometry::multi_polygon& polygons) { for (auto polygon : polygons) { - auto within = pointWithinPolygon(point, polygon); - if (within) return true; + if (pointWithinPolygon(point, polygon)) return true; } return false; } @@ -77,14 +76,9 @@ bool pointsWithinPolygons(const mbgl::GeometryTileFeature& feature, return pointWithinPolygons(point, polygons); }, [&polygons](const mapbox::geometry::multi_point& points) -> bool { - auto result = false; - for (const auto& p : points) { - result = pointWithinPolygons(p, polygons); - if (!result) { - return result; - } - } - return result; + return std::all_of(points.begin(), points.end(), [&polygons](const auto& p) { + return pointWithinPolygons(p, polygons); + }); }, [](const auto&) -> bool { return false; }); }, @@ -95,14 +89,9 @@ bool pointsWithinPolygons(const mbgl::GeometryTileFeature& feature, return pointWithinPolygon(point, polygon); }, [&polygon](const mapbox::geometry::multi_point& points) -> bool { - auto result = false; - for (const auto& p : points) { - result = pointWithinPolygon(p, polygon); - if (!result) { - return result; - } - } - return result; + return std::all_of(points.begin(), points.end(), [&polygon](const auto& p) { + return pointWithinPolygon(p, polygon); + }); }, [](const auto&) -> bool { return false; }); }, @@ -138,7 +127,7 @@ namespace expression { Within::Within(GeoJSON geojson) : Expression(Kind::Within, type::Boolean), geoJSONSource(std::move(geojson)) {} -Within::~Within() {} +Within::~Within() = default; using namespace mbgl::style::conversion; @@ -150,15 +139,15 @@ EvaluationResult Within::evaluate(const EvaluationContext& params) const { // Currently only support Point/Points in Polygon/Polygons if (geometryType == FeatureType::Point) { return pointsWithinPolygons(*params.feature, *params.canonical, geoJSONSource); - } else { - mbgl::Log::Warning(mbgl::Event::General, "within expression currently only support 'Point' geometry type"); } + mbgl::Log::Warning(mbgl::Event::General, "within expression currently only support 'Point' geometry type"); + return false; } ParseResult Within::parse(const Convertible& value, ParsingContext& ctx) { if (isArray(value)) { - // object value, quoted with ["Within", 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."); @@ -183,6 +172,7 @@ Value valueConverter(const mapbox::geojson::rapidjson_value& v) { } if (v.IsArray()) { std::vector result; + result.reserve(v.Size()); for (const auto& m : v.GetArray()) { result.push_back(valueConverter(m)); } diff --git a/src/mbgl/tile/geometry_tile_data.cpp b/src/mbgl/tile/geometry_tile_data.cpp index 56bef66c62f..2f1c9e92fdc 100644 --- a/src/mbgl/tile/geometry_tile_data.cpp +++ b/src/mbgl/tile/geometry_tile_data.cpp @@ -196,27 +196,27 @@ GeometryCollection convertGeometry(const Feature::geometry_type& geometryTileFea return geometryTileFeature.match( [&](const Point& point) -> GeometryCollection { return {{latLonToTileCoodinates(point)}}; }, [&](const MultiPoint& points) -> GeometryCollection { - GeometryCollection result; - std::vector> temp; + MultiPoint result; + result.reserve(points.size()); for (const auto p : points) { - temp.emplace_back(latLonToTileCoodinates(p)); + result.emplace_back(latLonToTileCoodinates(p)); } - result = {temp}; - return result; + return {std::move(result)}; }, [&](const LineString& lineString) -> GeometryCollection { - GeometryCollection result; - std::vector> temp; + LineString result; + result.reserve(lineString.size()); for (const auto p : lineString) { - temp.emplace_back(latLonToTileCoodinates(p)); + result.emplace_back(latLonToTileCoodinates(p)); } - result = {temp}; - return result; + return {std::move(result)}; }, [&](const MultiLineString& lineStrings) -> GeometryCollection { GeometryCollection result; + result.reserve(lineStrings.size()); for (const auto line : lineStrings) { - std::vector> temp; + LineString temp; + temp.reserve(line.size()); for (const auto p : line) { temp.emplace_back(latLonToTileCoodinates(p)); } @@ -226,9 +226,11 @@ GeometryCollection convertGeometry(const Feature::geometry_type& geometryTileFea }, [&](const Polygon polygon) -> GeometryCollection { GeometryCollection result; - for (const auto line : polygon) { - std::vector> temp; - for (const auto p : line) { + result.reserve(polygon.size()); + for (const auto ring : polygon) { + LinearRing temp; + temp.reserve(ring.size()); + for (const auto p : ring) { temp.emplace_back(latLonToTileCoodinates(p)); } result.emplace_back(temp); @@ -237,14 +239,17 @@ GeometryCollection convertGeometry(const Feature::geometry_type& geometryTileFea }, [&](const MultiPolygon polygons) -> GeometryCollection { GeometryCollection result; - for (const auto polygon : polygons) - for (const auto line : polygon) { - LineString temp; - for (const auto p : line) { - temp.emplace_back(latLonToTileCoodinates(p)); + result.reserve(polygons.size()); + for (const auto pg : polygons) { + for (const auto r : pg) { + LinearRing ring; + ring.reserve(r.size()); + for (const auto p : r) { + ring.emplace_back(latLonToTileCoodinates(p)); } - result.emplace_back(temp); + result.emplace_back(ring); } + } return result; }, [](const auto&) -> GeometryCollection { return GeometryCollection(); }); From 3c065b8e63558427e69e34718da2c8247a907cac Mon Sep 17 00:00:00 2001 From: zmiao Date: Wed, 12 Feb 2020 00:48:10 +0200 Subject: [PATCH 7/7] Add Changelog entry for within expression usage with paint property and filter expression --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 95bda43b5db..62b441e532d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,12 @@ The new `Source::setPrefetchZoomDelta(optional)` method allows overriding default tile prefetch setting that is defined by the Map instance. +- [core] Add support for `within expression`. Implement the use of `within expression` with paint propery and filter expression. ([#16157](https://github.com/mapbox/mapbox-gl-native/pull/16157)) + + The `within expression` enables checking whether a feature is inside a pre-defined geometry set/boundary or not. This `within expression` returns a boolean value, `true` indicates that the feature being evaluated is inside the geometry set. The returned value can be then consumed as input by another expression or used directly by a paint/layer property. + + Support for using `within expression` with layout propery will be implemented separately. + ### 🏁 Performance improvements - [core] Loading images to style optimization ([#16187](https://github.com/mapbox/mapbox-gl-native/pull/16187))