summaryrefslogtreecommitdiff
path: root/src/mbgl/text/placement.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/text/placement.hpp')
-rw-r--r--src/mbgl/text/placement.hpp41
1 files changed, 20 insertions, 21 deletions
diff --git a/src/mbgl/text/placement.hpp b/src/mbgl/text/placement.hpp
index fd36ad25e9..ab8f4e1e5a 100644
--- a/src/mbgl/text/placement.hpp
+++ b/src/mbgl/text/placement.hpp
@@ -2,15 +2,16 @@
#include <string>
#include <unordered_map>
+#include <mbgl/actor/actor.hpp>
#include <mbgl/util/chrono.hpp>
-#include <mbgl/text/collision_index.hpp>
+#include <mbgl/text/placement_worker.hpp>
#include <mbgl/layout/symbol_projection.hpp>
+#include <mbgl/renderer/buckets/symbol_bucket.hpp>
#include <unordered_set>
namespace mbgl {
class RenderSymbolLayer;
- class SymbolBucket;
class OpacityState {
public:
@@ -30,17 +31,12 @@ namespace mbgl {
OpacityState text;
};
- class PlacementPair {
- public:
- PlacementPair(bool text_, bool icon_) : text(text_), icon(icon_) {}
- bool text;
- bool icon;
- };
-
class Placement {
public:
- Placement(const TransformState&, MapMode mapMode);
- void placeLayer(RenderSymbolLayer&, const mat4&, bool showCollisionBoxes);
+ Placement(const TransformState&, MapMode mapMode, const mat4& projMatrix, const bool showCollisionBoxes, Scheduler&);
+ void addLayer(RenderSymbolLayer&);
+ void place();
+ bool isReady();
bool commit(const Placement& prevPlacement, TimePoint);
void updateLayerOpacities(RenderSymbolLayer&);
JointOpacityState getOpacity(uint32_t crossTileSymbolID) const;
@@ -48,7 +44,7 @@ namespace mbgl {
bool hasTransitions(TimePoint now) const;
// TODO: public for queryRenderedFeatures
- CollisionIndex collisionIndex;
+ Immutable<PlacementResult> result;
bool stillRecent(TimePoint now) const;
void setRecent(TimePoint now);
@@ -56,22 +52,25 @@ namespace mbgl {
private:
void placeLayerBucket(
- SymbolBucket&,
- const mat4& posMatrix,
- const mat4& textLabelPlaneMatrix,
- const mat4& iconLabelPlaneMatrix,
- const float scale,
- const float pixelRatio,
- const bool showCollisionBoxes,
+ const SymbolBucket::Core&,
+ const std::vector<uint32_t>& symbolCrossTileIDs,
+ const UnwrappedTileID&,
+ const OverscaledTileID&,
std::unordered_set<uint32_t>& seenCrossTileIDs);
void updateBucketOpacities(SymbolBucket&, std::unordered_set<uint32_t>&);
TransformState state;
- MapMode mapMode;
+ const MapMode mapMode;
TimePoint commitTime;
+ const bool showCollisionBoxes;
+ const mat4 projMatrix;
+
+ Actor<PlacementWorker> worker;
+ std::future<Immutable<PlacementResult>> future;
+
+ Mutable<std::vector<std::vector<PlacementBucket>>> placementBucketLayers;
- std::unordered_map<uint32_t,PlacementPair> placements;
std::unordered_map<uint32_t,JointOpacityState> opacities;
TimePoint recentUntil;