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:
-rw-r--r--drape/overlay_handle.cpp4
-rw-r--r--drape/overlay_handle.hpp2
-rw-r--r--drape_frontend/text_shape.cpp28
3 files changed, 28 insertions, 6 deletions
diff --git a/drape/overlay_handle.cpp b/drape/overlay_handle.cpp
index 94fd0e0fa4..3c556ca9c0 100644
--- a/drape/overlay_handle.cpp
+++ b/drape/overlay_handle.cpp
@@ -178,10 +178,6 @@ m2::RectD OverlayHandle::GetPixelRectPerspective(ScreenBase const & screen) cons
m2::RectD pxRectPerspective = GetPixelRect(screen, false);
pxRectPerspective.Offset(-pxPivot);
- double const maxY = -pxRectPerspective.minY();
- double const minY = -pxRectPerspective.maxY();
- pxRectPerspective.setMinY(minY);
- pxRectPerspective.setMaxY(maxY);
pxRectPerspective.Offset(pxPivotPerspective);
return pxRectPerspective;
diff --git a/drape/overlay_handle.hpp b/drape/overlay_handle.hpp
index e60f89c6d8..e2ed495230 100644
--- a/drape/overlay_handle.hpp
+++ b/drape/overlay_handle.hpp
@@ -51,7 +51,7 @@ public:
bool IsBillboard() const;
- m2::PointD GetPivot(ScreenBase const & screen, bool perspective) const;
+ virtual m2::PointD GetPivot(ScreenBase const & screen, bool perspective) const;
virtual bool Update(ScreenBase const & /*screen*/) { return true; }
diff --git a/drape_frontend/text_shape.cpp b/drape_frontend/text_shape.cpp
index f0847059a2..8350402afb 100644
--- a/drape_frontend/text_shape.cpp
+++ b/drape_frontend/text_shape.cpp
@@ -22,6 +22,8 @@ namespace
class StraightTextHandle : public TextHandle
{
+ using TBase = TextHandle;
+
public:
StraightTextHandle(FeatureID const & id, strings::UniString const & text,
dp::Anchor anchor, glsl::vec2 const & pivot,
@@ -36,10 +38,34 @@ public:
, m_isOptional(isOptional)
{}
+ m2::PointD GetPivot(ScreenBase const & screen, bool perspective) const override
+ {
+ m2::PointD pivot = TBase::GetPivot(screen, false);
+ if (perspective)
+ pivot = screen.PtoP3d(pivot - m_offset) + m_offset;
+ return pivot;
+ }
+
m2::RectD GetPixelRect(ScreenBase const & screen, bool perspective) const override
{
if (perspective)
- return GetPixelRectPerspective(screen);
+ {
+ if (IsBillboard())
+ {
+ m2::PointD const pxPivot = screen.GtoP(m_pivot);
+ m2::PointD const pxPivotPerspective = screen.PtoP3d(pxPivot);
+
+ m2::RectD pxRectPerspective = GetPixelRect(screen, false);
+ pxRectPerspective.Offset(-pxPivot);
+ pxRectPerspective.Offset(pxPivotPerspective);
+
+ return pxRectPerspective;
+ }
+ else
+ {
+ return GetPixelRectPerspective(screen);
+ }
+ }
m2::PointD pivot = screen.GtoP(m_pivot) + m_offset;
double x = pivot.x;