diff options
Diffstat (limited to 'src/mbgl/renderer/placement_state.hpp')
-rw-r--r-- | src/mbgl/renderer/placement_state.hpp | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/mbgl/renderer/placement_state.hpp b/src/mbgl/renderer/placement_state.hpp new file mode 100644 index 0000000000..07c655ca03 --- /dev/null +++ b/src/mbgl/renderer/placement_state.hpp @@ -0,0 +1,70 @@ +#pragma once + +#include <mbgl/map/transform_state.hpp> +#include <mbgl/style/collection.hpp> +#include <mbgl/style/layer.hpp> +#include <mbgl/tile/tile_id.hpp> +#include <mbgl/util/chrono.hpp> +#include <mbgl/util/optional.hpp> + +#include <functional> +#include <map> +#include <string> + +namespace mbgl { + +// TODO: Placeholder +class CollisionIndex { +public: + CollisionIndex(const TransformState&) {} +}; + +class RenderLayer; +class RenderSymbolLayer; +class RenderSource; + +struct CollisionFadeTimes { + TimePoint latestStart; + Duration fadeDuration; +}; + +class LayerPlacementState { +public: + LayerPlacementState(); + bool continuePlacement(RenderSymbolLayer& renderLayer, + CollisionIndex& collisionIndex, + const bool showCollisionBoxes, + std::function<bool()> shouldPausePlacement); + +private: + size_t currentTileIndex; +}; + +class PlacementState +{ +public: + PlacementState(const TransformState& transformState, + const std::vector<RenderLayer>& order, + const bool forceFullPlacement, + const bool showCollisionBoxes, + Duration fadeDuration, + optional<PlacementState>& previousPlacement); + + bool isDone() const { return done; } + bool stillFading() const; + + void continuePlacement(std::vector<RenderLayer>& order, std::vector<RenderSource>& sources); + +private: + CollisionIndex collisionIndex; + bool done; + size_t currentLayerIndex; + bool forceFullPlacement; + bool showCollisionBoxes; + TimePoint delayUntil; + CollisionFadeTimes collisionFadeTimes; + optional<LayerPlacementState> inProgressLayer; + +}; + +}; // mbgl |