diff options
author | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-01-16 12:05:11 +0200 |
---|---|---|
committer | Mikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com> | 2020-01-22 14:30:26 +0200 |
commit | 769a822fec2090fc37e00344dc63d5a1c2e32ac2 (patch) | |
tree | 83fbd610bd9498b4032077c03592fbcd3d2f930a /src | |
parent | d24c1d625af61328b8ada2d005ab3f9e659a2c69 (diff) | |
download | qtlocation-mapboxgl-769a822fec2090fc37e00344dc63d5a1c2e32ac2.tar.gz |
[core] Pass UpdateParameters to Placement constructor
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/renderer/render_orchestrator.cpp | 13 | ||||
-rw-r--r-- | src/mbgl/text/collision_index.cpp | 2 | ||||
-rw-r--r-- | src/mbgl/text/collision_index.hpp | 2 | ||||
-rw-r--r-- | src/mbgl/text/placement.cpp | 30 | ||||
-rw-r--r-- | src/mbgl/text/placement.hpp | 18 |
5 files changed, 27 insertions, 38 deletions
diff --git a/src/mbgl/renderer/render_orchestrator.cpp b/src/mbgl/renderer/render_orchestrator.cpp index 239ad19876..c77eaca37e 100644 --- a/src/mbgl/renderer/render_orchestrator.cpp +++ b/src/mbgl/renderer/render_orchestrator.cpp @@ -394,12 +394,7 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree( std::set<std::string> usedSymbolLayers; if (renderTreeParameters->placementChanged) { - Mutable<Placement> placement = makeMutable<Placement>(updateParameters->transformState, - updateParameters->mode, - updateParameters->transitionOptions, - updateParameters->crossSourceCollisions, - updateParameters->timePoint, - placementController.getPlacement()); + Mutable<Placement> placement = makeMutable<Placement>(updateParameters, placementController.getPlacement()); for (auto it = layersNeedPlacement.crbegin(); it != layersNeedPlacement.crend(); ++it) { const RenderLayer& layer = *it; @@ -425,11 +420,7 @@ std::unique_ptr<RenderTree> RenderOrchestrator::createRenderTree( crossTileSymbolIndex.reset(); renderTreeParameters->placementChanged = symbolBucketsChanged = !layersNeedPlacement.empty(); if (renderTreeParameters->placementChanged) { - Mutable<Placement> placement = makeMutable<Placement>(updateParameters->transformState, - updateParameters->mode, - updateParameters->transitionOptions, - updateParameters->crossSourceCollisions, - updateParameters->timePoint); + Mutable<Placement> placement = makeMutable<Placement>(updateParameters); for (auto it = layersNeedPlacement.crbegin(); it != layersNeedPlacement.crend(); ++it) { const RenderLayer& layer = *it; crossTileSymbolIndex.addLayer(layer, updateParameters->transformState.getLatLng().longitude()); diff --git a/src/mbgl/text/collision_index.cpp b/src/mbgl/text/collision_index.cpp index 50567ab895..e75bdf8ba9 100644 --- a/src/mbgl/text/collision_index.cpp +++ b/src/mbgl/text/collision_index.cpp @@ -26,7 +26,7 @@ static const float viewportPaddingDefault = 100; // Viewport padding must be much larger for static tiles to avoid clipped labels. static const float viewportPaddingForStaticTiles = 1024; -CollisionIndex::CollisionIndex(const TransformState& transformState_, MapMode& mapMode) +CollisionIndex::CollisionIndex(const TransformState& transformState_, MapMode mapMode) : transformState(transformState_), viewportPadding(mapMode == MapMode::Tile ? viewportPaddingForStaticTiles : viewportPaddingDefault), collisionGrid(transformState.getSize().width + 2 * viewportPadding, diff --git a/src/mbgl/text/collision_index.hpp b/src/mbgl/text/collision_index.hpp index d1a77b5492..b9f3e9d88a 100644 --- a/src/mbgl/text/collision_index.hpp +++ b/src/mbgl/text/collision_index.hpp @@ -20,7 +20,7 @@ class CollisionIndex { public: using CollisionGrid = GridIndex<IndexedSubfeature>; - explicit CollisionIndex(const TransformState&, MapMode&); + explicit CollisionIndex(const TransformState&, MapMode); bool featureIntersectsTileBorders(const CollisionFeature& feature, Point<float> shift, const mat4& posMatrix, diff --git a/src/mbgl/text/placement.cpp b/src/mbgl/text/placement.cpp index f3917a8fdb..5673ff5041 100644 --- a/src/mbgl/text/placement.cpp +++ b/src/mbgl/text/placement.cpp @@ -1,11 +1,12 @@ #include <mbgl/text/placement.hpp> #include <mbgl/layout/symbol_layout.hpp> +#include <mbgl/renderer/bucket.hpp> +#include <mbgl/renderer/buckets/symbol_bucket.hpp> #include <mbgl/renderer/render_layer.hpp> #include <mbgl/renderer/render_tile.hpp> +#include <mbgl/renderer/update_parameters.hpp> #include <mbgl/tile/geometry_tile.hpp> -#include <mbgl/renderer/buckets/symbol_bucket.hpp> -#include <mbgl/renderer/bucket.hpp> #include <mbgl/util/math.hpp> #include <utility> @@ -60,9 +61,7 @@ const CollisionGroups::CollisionGroup& CollisionGroups::get(const std::string& s // PlacementController implemenation -PlacementController::PlacementController() - : placement(makeMutable<Placement>( - TransformState{}, MapMode::Static, style::TransitionOptions{}, true, TimePoint(), nullopt)) {} +PlacementController::PlacementController() : placement(makeMutable<Placement>()) {} void PlacementController::setPlacement(Immutable<Placement> placement_) { placement = std::move(placement_); @@ -91,18 +90,15 @@ bool PlacementController::hasTransitions(TimePoint now) const { // Placement implementation -Placement::Placement(const TransformState& state_, - MapMode mapMode_, - style::TransitionOptions transitionOptions_, - const bool crossSourceCollisions, - TimePoint commitTime_, +Placement::Placement(std::shared_ptr<const UpdateParameters> updateParameters_, optional<Immutable<Placement>> prevPlacement_) - : collisionIndex(state_, mapMode_), - mapMode(mapMode_), - transitionOptions(std::move(transitionOptions_)), - commitTime(commitTime_), - placementZoom(state_.getZoom()), - collisionGroups(crossSourceCollisions), + : updateParameters(std::move(updateParameters_)), + collisionIndex(updateParameters->transformState, updateParameters->mode), + mapMode(updateParameters->mode), + transitionOptions(updateParameters->transitionOptions), + commitTime(updateParameters->timePoint), + placementZoom(updateParameters->transformState.getZoom()), + collisionGroups(updateParameters->crossSourceCollisions), prevPlacement(std::move(prevPlacement_)) { assert(prevPlacement || mapMode != MapMode::Continuous); if (prevPlacement) { @@ -110,6 +106,8 @@ Placement::Placement(const TransformState& state_, } } +Placement::Placement() : collisionIndex({}, MapMode::Static), collisionGroups(true) {} + void Placement::placeLayer(const RenderLayer& layer, const mat4& projMatrix, bool showCollisionBoxes) { std::set<uint32_t> seenCrossTileIDs; for (const auto& item : layer.getPlacementData()) { diff --git a/src/mbgl/text/placement.hpp b/src/mbgl/text/placement.hpp index dd46970780..04a0bc7f5d 100644 --- a/src/mbgl/text/placement.hpp +++ b/src/mbgl/text/placement.hpp @@ -12,6 +12,7 @@ namespace mbgl { class SymbolBucket; class SymbolInstance; +class UpdateParameters; enum class PlacedSymbolOrientation : bool; class OpacityState { @@ -112,12 +113,9 @@ private: class Placement { public: - Placement(const TransformState&, - MapMode, - style::TransitionOptions, - const bool crossSourceCollisions, - TimePoint commitTime, - optional<Immutable<Placement>> prevPlacement = nullopt); + Placement(std::shared_ptr<const UpdateParameters>, optional<Immutable<Placement>> prevPlacement = nullopt); + Placement(); + void placeLayer(const RenderLayer&, const mat4&, bool showCollisionBoxes); void commit(); void updateLayerBuckets(const RenderLayer&, const TransformState&, bool updateOpacities) const; @@ -132,6 +130,7 @@ public: float zoomAdjustment(const float zoom) const; const RetainedQueryData& getQueryData(uint32_t bucketInstanceId) const; + private: friend SymbolBucket; void placeBucket(const SymbolBucket&, const BucketPlacementParameters&, std::set<uint32_t>& seenCrossTileIDs); @@ -145,15 +144,16 @@ private: void markUsedOrientation(SymbolBucket&, style::TextWritingModeType, const SymbolInstance&) const; const Placement* getPrevPlacement() const { return prevPlacement ? prevPlacement->get() : nullptr; } + std::shared_ptr<const UpdateParameters> updateParameters; CollisionIndex collisionIndex; - MapMode mapMode; + MapMode mapMode = MapMode::Static; style::TransitionOptions transitionOptions; TimePoint fadeStartTime; TimePoint commitTime; - const float placementZoom; - float prevZoomAdjustment = 0; + float placementZoom = 0.0f; + float prevZoomAdjustment = 0.0f; std::unordered_map<uint32_t, JointPlacement> placements; std::unordered_map<uint32_t, JointOpacityState> opacities; |