Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorExMix <rahuba.youri@mapswithme.com>2014-04-08 17:27:56 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:14:44 +0300
commit9dc9209d58858e40a5d3407e3cf21c8ab628c231 (patch)
tree2817553457058dc2a606892e5edcbe6db90b3eb3
parent8c254b8bc521b0052cb13fa53acff69cc13943b9 (diff)
[drape] overlay handle contains priority for displacement, and FeatureID for tap search
-rw-r--r--drape/overlay_handle.cpp18
-rw-r--r--drape/overlay_handle.hpp13
-rw-r--r--drape_frontend/apply_feature_functors.cpp19
-rw-r--r--drape_frontend/apply_feature_functors.hpp16
-rw-r--r--drape_frontend/circle_shape.cpp6
-rw-r--r--drape_frontend/poi_symbol_shape.cpp6
-rw-r--r--drape_frontend/rule_drawer.cpp6
-rw-r--r--drape_frontend/shape_view_params.hpp8
8 files changed, 68 insertions, 24 deletions
diff --git a/drape/overlay_handle.cpp b/drape/overlay_handle.cpp
index 0ad0384f8a..ec3d6b43f4 100644
--- a/drape/overlay_handle.cpp
+++ b/drape/overlay_handle.cpp
@@ -1,10 +1,12 @@
#include "overlay_handle.hpp"
-OverlayHandle::OverlayHandle(OverlayHandle::Anchor anchor, m2::PointD const & gbPivot,
- m2::PointD const & pxSize)
- : m_anchor(anchor)
+OverlayHandle::OverlayHandle(const FeatureID & id, OverlayHandle::Anchor anchor, m2::PointD const & gbPivot,
+ m2::PointD const & pxSize, double priority)
+ : m_id(id)
+ , m_anchor(anchor)
, m_gbPivot(gbPivot)
, m_pxHalfSize(pxSize.x / 2.0, pxSize.y / 2.0)
+ , m_priority(priority)
, m_isVisible(false)
{
}
@@ -55,3 +57,13 @@ void OverlayHandle::GetElementIndexes(RefPointer<IndexBufferMutator> mutator) co
ASSERT_EQUAL(m_isVisible, true, ());
mutator->AppendIndexes(&m_indexes[0], m_indexes.size());
}
+
+FeatureID const & OverlayHandle::GetFeatureID() const
+{
+ return m_id;
+}
+
+double const & OverlayHandle::GetPriority() const
+{
+ return m_priority;
+}
diff --git a/drape/overlay_handle.hpp b/drape/overlay_handle.hpp
index bfbf3b6f57..35b4b16c0b 100644
--- a/drape/overlay_handle.hpp
+++ b/drape/overlay_handle.hpp
@@ -1,5 +1,7 @@
#pragma once
+#include "../indexer/feature_decl.hpp"
+
#include "../geometry/screenbase.hpp"
#include "../geometry/point2d.hpp"
#include "../geometry/rect2d.hpp"
@@ -22,8 +24,10 @@ public:
RightBottom = Right | Bottom
};
- OverlayHandle(Anchor anchor, m2::PointD const & gbPivot,
- m2::PointD const & pxSize);
+ OverlayHandle(FeatureID const & id,
+ Anchor anchor, m2::PointD const & gbPivot,
+ m2::PointD const & pxSize,
+ double priority);
bool IsVisible() const;
void SetIsVisible(bool isVisible);
@@ -33,10 +37,15 @@ public:
size_t GetIndexCount() const;
void GetElementIndexes(RefPointer<IndexBufferMutator> mutator) const;
+ FeatureID const & GetFeatureID() const;
+ double const & GetPriority() const;
+
private:
+ FeatureID m_id;
Anchor m_anchor;
m2::PointD m_gbPivot;
m2::PointD m_pxHalfSize;
+ double m_priority;
bool m_isVisible;
vector<uint16_t> m_indexes;
diff --git a/drape_frontend/apply_feature_functors.cpp b/drape_frontend/apply_feature_functors.cpp
index 2f4be97cf9..353853ba4e 100644
--- a/drape_frontend/apply_feature_functors.cpp
+++ b/drape_frontend/apply_feature_functors.cpp
@@ -56,16 +56,17 @@ namespace df
}
}
- BaseApplyFeature::BaseApplyFeature(EngineContext & context, TileKey tileKey)
+ BaseApplyFeature::BaseApplyFeature(EngineContext & context, TileKey tileKey, FeatureID const & id)
: m_context(context)
, m_tileKey(tileKey)
+ , m_id(id)
{
}
// ============================================= //
- ApplyPointFeature::ApplyPointFeature(EngineContext & context, TileKey tileKey)
- : base_t(context, tileKey)
+ ApplyPointFeature::ApplyPointFeature(EngineContext & context, TileKey tileKey, FeatureID const & id)
+ : base_t(context, tileKey, id)
, m_hasPoint(false)
, m_symbolDepth(graphics::minDepth)
, m_circleDepth(graphics::minDepth)
@@ -115,7 +116,7 @@ namespace df
}
else if (m_circleRule)
{
- CircleViewParams params;
+ CircleViewParams params(m_id);
params.m_depth = m_circleDepth;
params.m_color = ToDrapeColor(m_circleRule->color());
params.m_radius = m_circleRule->radius();
@@ -125,7 +126,7 @@ namespace df
}
else if (m_symbolRule)
{
- PoiSymbolViewParams params;
+ PoiSymbolViewParams params(m_id);
params.m_depth = m_symbolDepth;
params.m_symbolName = m_symbolRule->name();
@@ -136,8 +137,8 @@ namespace df
// ============================================= //
- ApplyAreaFeature::ApplyAreaFeature(EngineContext & context, TileKey tileKey)
- : base_t(context, tileKey)
+ ApplyAreaFeature::ApplyAreaFeature(EngineContext & context, TileKey tileKey, FeatureID const & id)
+ : base_t(context, tileKey, id)
{
}
@@ -170,8 +171,8 @@ namespace df
// ============================================= //
- ApplyLineFeature::ApplyLineFeature(EngineContext & context, TileKey tileKey)
- : base_t(context, tileKey)
+ ApplyLineFeature::ApplyLineFeature(EngineContext & context, TileKey tileKey, FeatureID const & id)
+ : base_t(context, tileKey, id)
{
}
diff --git a/drape_frontend/apply_feature_functors.hpp b/drape_frontend/apply_feature_functors.hpp
index e75fcde45f..1b317d7905 100644
--- a/drape_frontend/apply_feature_functors.hpp
+++ b/drape_frontend/apply_feature_functors.hpp
@@ -19,18 +19,22 @@ namespace df
{
public:
BaseApplyFeature(EngineContext & context,
- TileKey tileKey);
+ TileKey tileKey,
+ FeatureID const & id);
protected:
EngineContext & m_context;
TileKey m_tileKey;
+ FeatureID m_id;
};
class ApplyPointFeature : public BaseApplyFeature
{
typedef BaseApplyFeature base_t;
public:
- ApplyPointFeature(EngineContext & context, TileKey tileKey);
+ ApplyPointFeature(EngineContext & context,
+ TileKey tileKey,
+ FeatureID const & id);
void operator()(CoordPointT const & point);
void operator()(m2::PointD const & point);
@@ -50,7 +54,9 @@ namespace df
{
typedef ApplyPointFeature base_t;
public:
- ApplyAreaFeature(EngineContext & context, TileKey tileKey);
+ ApplyAreaFeature(EngineContext & context,
+ TileKey tileKey,
+ FeatureID const & id);
using base_t::operator ();
@@ -65,7 +71,9 @@ namespace df
{
typedef BaseApplyFeature base_t;
public:
- ApplyLineFeature(EngineContext & context, TileKey tileKey);
+ ApplyLineFeature(EngineContext & context,
+ TileKey tileKey,
+ FeatureID const & id);
void operator ()(CoordPointT const & point);
void ProcessRule(Stylist::rule_wrapper_t const & rule);
diff --git a/drape_frontend/circle_shape.cpp b/drape_frontend/circle_shape.cpp
index d48c0d16c5..a6e6b9be8a 100644
--- a/drape_frontend/circle_shape.cpp
+++ b/drape_frontend/circle_shape.cpp
@@ -71,8 +71,10 @@ namespace df
normalDecl.m_offset = 3 * sizeof(float);
normalDecl.m_stride = 5 * sizeof(float);
- OverlayHandle * overlay = new OverlayHandle(OverlayHandle::Center, m_pt,
- m2::PointD(m_params.m_radius, m_params.m_radius));
+ OverlayHandle * overlay = new OverlayHandle(m_params.m_id,
+ OverlayHandle::Center, m_pt,
+ m2::PointD(m_params.m_radius, m_params.m_radius),
+ m_params.m_depth);
provider.InitStream(0, info, MakeStackRefPointer<void>(&stream[0]));
batcher->InsertTriangleFan(state, MakeStackRefPointer(&provider), MovePointer(overlay));
diff --git a/drape_frontend/poi_symbol_shape.cpp b/drape_frontend/poi_symbol_shape.cpp
index b5f4e4102d..fb46070b4a 100644
--- a/drape_frontend/poi_symbol_shape.cpp
+++ b/drape_frontend/poi_symbol_shape.cpp
@@ -61,7 +61,11 @@ namespace df
texDecl.m_offset = (3 + 2) * sizeof(float);
texDecl.m_stride = 8 * sizeof(float);
- OverlayHandle * handle = new OverlayHandle(OverlayHandle::Center, m_pt, region.m_pixelSize);
+ OverlayHandle * handle = new OverlayHandle(m_params.m_id,
+ OverlayHandle::Center,
+ m_pt,
+ region.m_pixelSize,
+ m_params.m_depth);
provider.InitStream(0, info, MakeStackRefPointer<void>(stream));
batcher->InsertTriangleStrip(state, MakeStackRefPointer(&provider), MovePointer(handle));
diff --git a/drape_frontend/rule_drawer.cpp b/drape_frontend/rule_drawer.cpp
index 7e180bedee..375c6d96ce 100644
--- a/drape_frontend/rule_drawer.cpp
+++ b/drape_frontend/rule_drawer.cpp
@@ -47,7 +47,7 @@ namespace df
if (s.AreaStyleExists())
{
- ApplyAreaFeature apply(m_context, m_tileKey);
+ ApplyAreaFeature apply(m_context, m_tileKey, f.GetID());
f.ForEachTriangleRef(apply, m_tileKey.m_zoomLevel);
if (s.PointStyleExists())
@@ -58,7 +58,7 @@ namespace df
}
else if (s.LineStyleExists())
{
- ApplyLineFeature apply(m_context, m_tileKey);
+ ApplyLineFeature apply(m_context, m_tileKey, f.GetID());
f.ForEachPointRef(apply, m_tileKey.m_zoomLevel);
s.ForEachRule(bind(&ApplyLineFeature::ProcessRule, &apply, _1));
@@ -67,7 +67,7 @@ namespace df
else
{
ASSERT(s.PointStyleExists(), ());
- ApplyPointFeature apply(m_context, m_tileKey);
+ ApplyPointFeature apply(m_context, m_tileKey, f.GetID());
f.ForEachPointRef(apply, m_tileKey.m_zoomLevel);
s.ForEachRule(bind(&ApplyPointFeature::ProcessRule, &apply, _1));
apply.Finish();
diff --git a/drape_frontend/shape_view_params.hpp b/drape_frontend/shape_view_params.hpp
index 119c06914a..d79eebf4ad 100644
--- a/drape_frontend/shape_view_params.hpp
+++ b/drape_frontend/shape_view_params.hpp
@@ -1,5 +1,7 @@
#pragma once
+#include "../indexer/feature_decl.hpp"
+
#include "../drape/color.hpp"
#include "../std/string.hpp"
@@ -27,11 +29,17 @@ namespace df
struct PoiSymbolViewParams : CommonViewParams
{
+ PoiSymbolViewParams(FeatureID const & id) : m_id(id) {}
+
+ FeatureID m_id;
string m_symbolName;
};
struct CircleViewParams : CommonViewParams
{
+ CircleViewParams(FeatureID const & id) : m_id(id) {}
+
+ FeatureID m_id;
Color m_color;
float m_radius;
};