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-12-06 11:31:42 +0300
committerr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-12-06 11:46:24 +0300
commit2bb74377c1a92f7d0a4851e7a08114b7761925a7 (patch)
tree5a0eda98411851734352aee8fbdc17795854d6ca /drape_frontend
parent42475f3386c0d5ec81009cbecdafce9856c6ce86 (diff)
Tuned route rendering in traffic mode
Diffstat (limited to 'drape_frontend')
-rw-r--r--drape_frontend/color_constants.cpp4
-rw-r--r--drape_frontend/color_constants.hpp1
-rw-r--r--drape_frontend/route_renderer.cpp39
-rw-r--r--drape_frontend/route_renderer.hpp3
4 files changed, 21 insertions, 26 deletions
diff --git a/drape_frontend/color_constants.cpp b/drape_frontend/color_constants.cpp
index 643a8c910b..6dbbb0d264 100644
--- a/drape_frontend/color_constants.cpp
+++ b/drape_frontend/color_constants.cpp
@@ -15,7 +15,8 @@ unordered_map<int, unordered_map<int, dp::Color>> kColorConstants =
{ GuiText, dp::Color(77, 77, 77, 221) },
{ MyPositionAccuracy, dp::Color(0, 0, 0, 20) },
{ Selection, dp::Color(30, 150, 240, 164) },
- { Route, dp::Color(21, 121, 244, 204) },
+ { Route, dp::Color(65, 165, 245, 204) },
+ { RouteOutline, dp::Color(25, 120, 210, 204) },
{ RoutePedestrian, dp::Color(29, 51, 158, 204) },
{ RouteBicycle, dp::Color(156, 39, 176, 204) },
{ Arrow3D, dp::Color(80, 170, 255, 255) },
@@ -43,6 +44,7 @@ unordered_map<int, unordered_map<int, dp::Color>> kColorConstants =
{ MyPositionAccuracy, dp::Color(255, 255, 255, 15) },
{ Selection, dp::Color(255, 230, 140, 164) },
{ Route, dp::Color(255, 225, 120, 180) },
+ { RouteOutline, dp::Color(205, 180, 95, 180) },
{ RoutePedestrian, dp::Color(255, 185, 75, 180) },
{ RouteBicycle, dp::Color(255, 75, 140, 180) },
{ Arrow3D, dp::Color(255, 220, 120, 255) },
diff --git a/drape_frontend/color_constants.hpp b/drape_frontend/color_constants.hpp
index b0faf94661..87267191db 100644
--- a/drape_frontend/color_constants.hpp
+++ b/drape_frontend/color_constants.hpp
@@ -13,6 +13,7 @@ enum ColorConstant
MyPositionAccuracy,
Selection,
Route,
+ RouteOutline,
RoutePedestrian,
RouteBicycle,
Arrow3D,
diff --git a/drape_frontend/route_renderer.cpp b/drape_frontend/route_renderer.cpp
index d03aa59d4b..094d8542d6 100644
--- a/drape_frontend/route_renderer.cpp
+++ b/drape_frontend/route_renderer.cpp
@@ -27,16 +27,6 @@ float const kHalfWidthInPixel[] =
6.0f, 6.0f, 7.0f, 7.0f, 7.0f, 7.0f, 8.0f, 10.0f, 24.0f, 36.0f
};
-uint8_t const kAlphaValue[] =
-{
- //1 2 3 4 5 6 7 8 9 10
- 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
- //11 12 13 14 15 16 17 18 19 20
- 204, 204, 204, 204, 190, 180, 170, 160, 140, 120
-};
-
-uint8_t const kAlphaValueForTraffic = 204;
-
int const kArrowAppearingZoomLevel = 14;
int const kInvalidGroup = -1;
@@ -116,13 +106,21 @@ bool AreEqualArrowBorders(vector<ArrowBorders> const & borders1, vector<ArrowBor
return true;
}
+dp::Color GetOutlineColor(df::ColorConstant routeColor)
+{
+ df::ColorConstant c = routeColor;
+ if (routeColor == df::ColorConstant::Route)
+ c = df::ColorConstant::RouteOutline;
+ return df::GetColorConstant(GetStyleReader().GetCurrentStyle(), c);
+}
+
} // namespace
RouteRenderer::RouteRenderer()
: m_distanceFromBegin(0.0)
{}
-void RouteRenderer::InterpolateByZoom(ScreenBase const & screen, float & halfWidth, float & alpha, double & zoom) const
+void RouteRenderer::InterpolateByZoom(ScreenBase const & screen, float & halfWidth, double & zoom) const
{
double const zoomLevel = GetZoomLevel(screen.GetScale());
zoom = trunc(zoomLevel);
@@ -130,18 +128,9 @@ void RouteRenderer::InterpolateByZoom(ScreenBase const & screen, float & halfWid
float const lerpCoef = zoomLevel - zoom;
if (index < scales::UPPER_STYLE_SCALE)
- {
halfWidth = kHalfWidthInPixel[index] + lerpCoef * (kHalfWidthInPixel[index + 1] - kHalfWidthInPixel[index]);
-
- float const alpha1 = static_cast<float>(kAlphaValue[index]) / numeric_limits<uint8_t>::max();
- float const alpha2 = static_cast<float>(kAlphaValue[index + 1]) / numeric_limits<uint8_t>::max();
- alpha = alpha1 + lerpCoef * (alpha2 - alpha1);
- }
else
- {
halfWidth = kHalfWidthInPixel[scales::UPPER_STYLE_SCALE];
- alpha = static_cast<float>(kAlphaValue[scales::UPPER_STYLE_SCALE]) / numeric_limits<uint8_t>::max();
- }
}
void RouteRenderer::UpdateRoute(ScreenBase const & screen, TCacheRouteArrowsCallback const & callback)
@@ -153,7 +142,7 @@ void RouteRenderer::UpdateRoute(ScreenBase const & screen, TCacheRouteArrowsCall
// Interpolate values by zoom level.
double zoom = 0.0;
- InterpolateByZoom(screen, m_currentHalfWidth, m_currentAlpha, zoom);
+ InterpolateByZoom(screen, m_currentHalfWidth, zoom);
// Update arrows.
if (zoom >= kArrowAppearingZoomLevel && !m_routeData->m_sourceTurns.empty())
@@ -247,8 +236,7 @@ void RouteRenderer::RenderRoute(ScreenBase const & screen, bool trafficShown,
uniforms.SetMatrix4x4Value("modelView", mv.m_data);
glsl::vec4 const color = glsl::ToVec4(df::GetColorConstant(GetStyleReader().GetCurrentStyle(),
m_routeData->m_color));
- uniforms.SetFloatValue("u_color", color.r, color.g, color.b,
- trafficShown ? kAlphaValueForTraffic : m_currentAlpha);
+ uniforms.SetFloatValue("u_color", color.r, color.g, color.b, color.a);
double const screenScale = screen.GetScale();
uniforms.SetFloatValue("u_routeParams", m_currentHalfWidth, m_currentHalfWidth * screenScale,
m_distanceFromBegin, trafficShown ? 1.0f : 0.0f);
@@ -258,6 +246,11 @@ void RouteRenderer::RenderRoute(ScreenBase const & screen, bool trafficShown,
uniforms.SetFloatValue("u_pattern", m_currentHalfWidth * m_routeData->m_pattern.m_dashLength * screenScale,
m_currentHalfWidth * m_routeData->m_pattern.m_gapLength * screenScale);
}
+ else
+ {
+ glsl::vec4 const outlineColor = glsl::ToVec4(GetOutlineColor(m_routeData->m_color));
+ uniforms.SetFloatValue("u_outlineColor", outlineColor.r, outlineColor.g, outlineColor.b, outlineColor.a);
+ }
// Set up shaders and apply uniforms.
ref_ptr<dp::GpuProgram> prg = mng->GetProgram(m_routeData->m_pattern.m_isDashed ?
diff --git a/drape_frontend/route_renderer.hpp b/drape_frontend/route_renderer.hpp
index c8d2e283e1..fb7019cc0a 100644
--- a/drape_frontend/route_renderer.hpp
+++ b/drape_frontend/route_renderer.hpp
@@ -41,7 +41,7 @@ public:
void UpdateDistanceFromBegin(double distanceFromBegin);
private:
- void InterpolateByZoom(ScreenBase const & screen, float & halfWidth, float & alpha, double & zoom) const;
+ void InterpolateByZoom(ScreenBase const & screen, float & halfWidth, double & zoom) const;
void RenderRouteSign(drape_ptr<RouteSignData> const & sign, ScreenBase const & screen,
ref_ptr<dp::GpuProgramManager> mng, dp::UniformValuesStorage const & commonUniforms);
@@ -55,7 +55,6 @@ private:
drape_ptr<RouteSignData> m_finishRouteSign;
float m_currentHalfWidth = 0.0f;
- float m_currentAlpha = 0.0f;
};
} // namespace df