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:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-10-06 11:34:07 +0300
committerr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-10-06 15:11:23 +0300
commit9d39fd37c7c188855d0a6e5e1f401b6607707507 (patch)
tree83edb83c7a143633e75669798790103b9d640e9d /drape_frontend
parent6dc03b1114362f2f06244422c88a1d159d827f5b (diff)
Review fixes
Diffstat (limited to 'drape_frontend')
-rw-r--r--drape_frontend/arrow3d.cpp5
-rw-r--r--drape_frontend/backend_renderer.cpp1
-rwxr-xr-xdrape_frontend/frontend_renderer.cpp1
-rw-r--r--drape_frontend/gps_track_renderer.cpp3
-rw-r--r--drape_frontend/kinetic_scroller.cpp6
-rw-r--r--drape_frontend/route_renderer.cpp3
-rw-r--r--drape_frontend/traffic_generator.cpp12
-rw-r--r--drape_frontend/traffic_generator.hpp5
-rw-r--r--drape_frontend/traffic_renderer.cpp18
-rw-r--r--drape_frontend/traffic_renderer.hpp2
-rw-r--r--drape_frontend/visual_params.cpp9
-rw-r--r--drape_frontend/visual_params.hpp1
12 files changed, 25 insertions, 41 deletions
diff --git a/drape_frontend/arrow3d.cpp b/drape_frontend/arrow3d.cpp
index 54aac7d554..d269767571 100644
--- a/drape_frontend/arrow3d.cpp
+++ b/drape_frontend/arrow3d.cpp
@@ -183,10 +183,7 @@ math::Matrix<float, 4, 4> Arrow3d::CalculateTransform(ScreenBase const & screen,
double arrowScale = VisualParams::Instance().GetVisualScale() * kArrowSize;
if (screen.isPerspective())
{
- static double const kLog2 = log(2.0);
- double const kMaxZoom = scales::UPPER_STYLE_SCALE + 1.0;
- double const zoomLevel = my::clamp(fabs(log(screen.GetScale()) / kLog2), kArrow3dMinZoom, kMaxZoom);
- double const t = (zoomLevel - kArrow3dMinZoom) / (kMaxZoom - kArrow3dMinZoom);
+ double const t = GetNormalizedZoomLevel(screen.GetScale(), kArrow3dMinZoom);
arrowScale *= (kArrow3dScaleMin * (1.0 - t) + kArrow3dScaleMax * t);
}
diff --git a/drape_frontend/backend_renderer.cpp b/drape_frontend/backend_renderer.cpp
index c7b7eea718..0ebbb3911f 100644
--- a/drape_frontend/backend_renderer.cpp
+++ b/drape_frontend/backend_renderer.cpp
@@ -403,6 +403,7 @@ void BackendRenderer::OnContextDestroy()
m_batchersPool.reset();
m_texMng->Release();
m_overlays.clear();
+ m_trafficGenerator->ClearCache();
m_contextFactory->getResourcesUploadContext()->doneCurrent();
}
diff --git a/drape_frontend/frontend_renderer.cpp b/drape_frontend/frontend_renderer.cpp
index 70189c96d0..beac4ac994 100755
--- a/drape_frontend/frontend_renderer.cpp
+++ b/drape_frontend/frontend_renderer.cpp
@@ -1579,6 +1579,7 @@ void FrontendRenderer::OnContextDestroy()
m_myPositionController->ResetRenderShape();
m_routeRenderer->ClearGLDependentResources();
m_gpsTrackRenderer->ClearRenderData();
+ m_trafficRenderer->Clear();
#ifdef RENDER_DEBUG_RECTS
dp::DebugRectRenderer::Instance().Destroy();
diff --git a/drape_frontend/gps_track_renderer.cpp b/drape_frontend/gps_track_renderer.cpp
index 39a7e314c7..937a0c2dac 100644
--- a/drape_frontend/gps_track_renderer.cpp
+++ b/drape_frontend/gps_track_renderer.cpp
@@ -66,8 +66,7 @@ GpsTrackRenderer::GpsTrackRenderer(TRenderDataRequestFn const & dataRequestFn)
float GpsTrackRenderer::CalculateRadius(ScreenBase const & screen) const
{
- double const kLog2 = log(2.0);
- double const zoomLevel = my::clamp(fabs(log(screen.GetScale()) / kLog2), 1.0, scales::UPPER_STYLE_SCALE + 1.0);
+ double const zoomLevel = GetZoomLevel(screen.GetScale());
double zoom = trunc(zoomLevel);
int const index = zoom - 1.0;
float const lerpCoef = zoomLevel - zoom;
diff --git a/drape_frontend/kinetic_scroller.cpp b/drape_frontend/kinetic_scroller.cpp
index d874a98dd6..f98c9fa5b9 100644
--- a/drape_frontend/kinetic_scroller.cpp
+++ b/drape_frontend/kinetic_scroller.cpp
@@ -17,11 +17,7 @@ double const kKineticMaxSpeedEnd = 10000.0; // pixels per second
double CalculateKineticMaxSpeed(ScreenBase const & modelView)
{
- double const kMinZoom = 1.0;
- double const kMaxZoom = scales::UPPER_STYLE_SCALE + 1.0;
- double const zoomLevel = my::clamp(fabs(log(modelView.GetScale()) / log(2.0)), kMinZoom, kMaxZoom);
- double const lerpCoef = 1.0 - ((zoomLevel - kMinZoom) / (kMaxZoom - kMinZoom));
-
+ double const lerpCoef = 1.0 - GetNormalizedZoomLevel(modelView.GetScale());
return (kKineticMaxSpeedStart * lerpCoef + kKineticMaxSpeedEnd * (1.0 - lerpCoef)) * VisualParams::Instance().GetVisualScale();
}
diff --git a/drape_frontend/route_renderer.cpp b/drape_frontend/route_renderer.cpp
index 3dc7497cdf..f763db4e08 100644
--- a/drape_frontend/route_renderer.cpp
+++ b/drape_frontend/route_renderer.cpp
@@ -1,6 +1,7 @@
#include "drape_frontend/route_renderer.hpp"
#include "drape_frontend/shape_view_params.hpp"
#include "drape_frontend/message_subclasses.hpp"
+#include "drape_frontend/visual_params.hpp"
#include "drape/glsl_func.hpp"
#include "drape/shader_def.hpp"
@@ -121,7 +122,7 @@ RouteRenderer::RouteRenderer()
void RouteRenderer::InterpolateByZoom(ScreenBase const & screen, float & halfWidth, float & alpha, double & zoom) const
{
- double const zoomLevel = my::clamp(fabs(log(screen.GetScale()) / log(2.0)), 1.0, scales::UPPER_STYLE_SCALE + 1.0);
+ double const zoomLevel = GetZoomLevel(screen.GetScale());
zoom = trunc(zoomLevel);
int const index = zoom - 1.0;
float const lerpCoef = zoomLevel - zoom;
diff --git a/drape_frontend/traffic_generator.cpp b/drape_frontend/traffic_generator.cpp
index 41f39eab3e..a91368e7f5 100644
--- a/drape_frontend/traffic_generator.cpp
+++ b/drape_frontend/traffic_generator.cpp
@@ -86,11 +86,9 @@ void GenerateCapTriangles(glsl::vec3 const & pivot, vector<glsl::vec2> const & n
} // namespace
-TrafficHandle::TrafficHandle(uint64_t segmentId, m2::RectD const & bbox,
- glsl::vec2 const & texCoord, size_t verticesCount)
+TrafficHandle::TrafficHandle(uint64_t segmentId, glsl::vec2 const & texCoord, size_t verticesCount)
: OverlayHandle(FeatureID(), dp::Anchor::Center, 0, false)
, m_segmentId(segmentId)
- , m_bbox(bbox)
, m_needUpdate(false)
{
m_buffer.resize(verticesCount);
@@ -155,11 +153,6 @@ uint64_t TrafficHandle::GetSegmentId() const
return m_segmentId;
}
-m2::RectD const & TrafficHandle::GetBoundingBox() const
-{
- return m_bbox;
-}
-
void TrafficGenerator::AddSegment(uint64_t segmentId, m2::PolylineD const & polyline)
{
m_segments.insert(make_pair(segmentId, polyline));
@@ -240,8 +233,7 @@ void TrafficGenerator::GetTrafficGeom(ref_ptr<dp::TextureManager> textures,
continue;
glsl::vec2 const uv = glsl::ToVec2(colorRegion.GetTexRect().Center());
- drape_ptr<dp::OverlayHandle> handle = make_unique_dp<TrafficHandle>(it->first, polyline.GetLimitRect(),
- uv, staticGeometry.size());
+ drape_ptr<dp::OverlayHandle> handle = make_unique_dp<TrafficHandle>(it->first, uv, staticGeometry.size());
dp::AttributeProvider provider(2 /* stream count */, staticGeometry.size());
provider.InitStream(0 /* stream index */, GetTrafficStaticBindingInfo(), make_ref(staticGeometry.data()));
diff --git a/drape_frontend/traffic_generator.hpp b/drape_frontend/traffic_generator.hpp
index a0b9620612..6c36b8bcd4 100644
--- a/drape_frontend/traffic_generator.hpp
+++ b/drape_frontend/traffic_generator.hpp
@@ -79,8 +79,7 @@ class TrafficHandle : public dp::OverlayHandle
using TBase = dp::OverlayHandle;
public:
- TrafficHandle(uint64_t segmentId, m2::RectD const & bbox,
- glsl::vec2 const & texCoord, size_t verticesCount);
+ TrafficHandle(uint64_t segmentId, glsl::vec2 const & texCoord, size_t verticesCount);
void GetAttributeMutation(ref_ptr<dp::AttributeBufferMutator> mutator) const override;
bool Update(ScreenBase const & screen) override;
@@ -90,11 +89,9 @@ public:
void SetTexCoord(glsl::vec2 const & texCoord);
uint64_t GetSegmentId() const;
- m2::RectD const & GetBoundingBox() const;
private:
uint64_t m_segmentId;
- m2::RectD m_bbox;
vector<glsl::vec2> m_buffer;
mutable bool m_needUpdate;
};
diff --git a/drape_frontend/traffic_renderer.cpp b/drape_frontend/traffic_renderer.cpp
index e13cf54782..b3f1872bd5 100644
--- a/drape_frontend/traffic_renderer.cpp
+++ b/drape_frontend/traffic_renderer.cpp
@@ -42,8 +42,7 @@ float const kRightWidthInPixel[] =
float CalculateHalfWidth(ScreenBase const & screen, bool left)
{
- double const kLog2 = log(2.0);
- double const zoomLevel = my::clamp(fabs(log(screen.GetScale()) / kLog2), 1.0, scales::UPPER_STYLE_SCALE + 1.0);
+ double const zoomLevel = GetZoomLevel(screen.GetScale());
double zoom = trunc(zoomLevel);
int const index = zoom - 1.0;
float const lerpCoef = zoomLevel - zoom;
@@ -89,16 +88,11 @@ void TrafficRenderer::UpdateTraffic(vector<TrafficSegmentData> const & trafficDa
auto it = m_texCoords.find(segment.m_speedBucket);
if (it == m_texCoords.end())
continue;
- TrafficHandle * handle = FindHandle(segment.m_id);
- if (handle != nullptr)
- handle->SetTexCoord(it->second);
- }
-}
-TrafficHandle * TrafficRenderer::FindHandle(uint64_t segmentId) const
-{
- auto it = m_handles.find(segmentId);
- return it != m_handles.end() ? it->second : nullptr;
+ auto handleIt = m_handles.find(segment.m_id);
+ if (handleIt != m_handles.end())
+ handleIt->second->SetTexCoord(it->second);
+ }
}
void TrafficRenderer::RenderTraffic(ScreenBase const & screen, int zoomLevel,
@@ -119,7 +113,7 @@ void TrafficRenderer::RenderTraffic(ScreenBase const & screen, int zoomLevel,
dp::ApplyState(renderData.m_state, program);
dp::UniformValuesStorage uniforms = commonUniforms;
- math::Matrix<float, 4, 4> mv = renderData.m_tileKey.GetTileBasedModelView(screen);
+ math::Matrix<float, 4, 4> const mv = renderData.m_tileKey.GetTileBasedModelView(screen);
uniforms.SetMatrix4x4Value("modelView", mv.m_data);
uniforms.SetFloatValue("u_opacity", 1.0f);
uniforms.SetFloatValue("u_trafficParams", pixelHalfWidth, CalculateHalfWidth(screen, false /* left */),
diff --git a/drape_frontend/traffic_renderer.hpp b/drape_frontend/traffic_renderer.hpp
index 59ea6beb4f..f060928712 100644
--- a/drape_frontend/traffic_renderer.hpp
+++ b/drape_frontend/traffic_renderer.hpp
@@ -35,8 +35,6 @@ public:
void Clear();
private:
- TrafficHandle * FindHandle(uint64_t segmentId) const;
-
vector<TrafficRenderData> m_renderData;
unordered_map<int, glsl::vec2> m_texCoords;
unordered_map<uint64_t, TrafficHandle *> m_handles;
diff --git a/drape_frontend/visual_params.cpp b/drape_frontend/visual_params.cpp
index 9f134ba03c..7f254b7e29 100644
--- a/drape_frontend/visual_params.cpp
+++ b/drape_frontend/visual_params.cpp
@@ -274,7 +274,14 @@ int GetDrawTileScale(m2::RectD const & r)
double GetZoomLevel(double scale)
{
- return my::clamp(fabs(log(scale) / log(2.0)), 1, scales::GetUpperStyleScale());
+ static double const kLog2 = log(2.0);
+ return my::clamp(fabs(log(scale) / kLog2), 1, scales::GetUpperStyleScale() + 1.0);
+}
+
+double GetNormalizedZoomLevel(double scale, int minZoom)
+{
+ double const kMaxZoom = scales::GetUpperStyleScale() + 1.0;
+ return my::clamp((GetZoomLevel(scale) - minZoom) / (kMaxZoom - minZoom), 0.0, 1.0);
}
double GetScale(double zoomLevel)
diff --git a/drape_frontend/visual_params.hpp b/drape_frontend/visual_params.hpp
index b61c723040..df5318a712 100644
--- a/drape_frontend/visual_params.hpp
+++ b/drape_frontend/visual_params.hpp
@@ -76,6 +76,7 @@ m2::RectD GetRectForDrawScale(double drawScale, m2::PointD const & center);
int CalculateTileSize(int screenWidth, int screenHeight);
double GetZoomLevel(double scale);
+double GetNormalizedZoomLevel(double scale, int minZoom = 1);
double GetScale(double zoomLevel);
} // namespace df