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:
authorvng <viktor.govako@gmail.com>2014-07-01 17:51:38 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 02:19:13 +0300
commitd67e303dc56a536e062db53983d9aef5081309f9 (patch)
tree2cca4bb832deb7a7a8cb274a4b5d156837817d40 /geometry
parentd5c1066127f69052a741fe62e2f6fdca59ea8906 (diff)
Fixed viewport for search results on the map.
Diffstat (limited to 'geometry')
-rw-r--r--geometry/any_rect2d.hpp10
-rw-r--r--geometry/geometry_tests/anyrect_test.cpp13
-rw-r--r--geometry/rect2d.hpp12
3 files changed, 35 insertions, 0 deletions
diff --git a/geometry/any_rect2d.hpp b/geometry/any_rect2d.hpp
index e8cd054268..ea9037818e 100644
--- a/geometry/any_rect2d.hpp
+++ b/geometry/any_rect2d.hpp
@@ -228,6 +228,16 @@ namespace m2
{
m_zero = ConvertTo(ConvertFrom(m_zero) + p);
}
+
+ Point<T> const Center() const
+ {
+ return ConvertFrom(m_rect.Center());
+ }
+
+ void SetSizesToIncludePoint(Point<T> const & p)
+ {
+ m_rect.SetSizesToIncludePoint(ConvertTo(p));
+ }
};
template <typename T>
diff --git a/geometry/geometry_tests/anyrect_test.cpp b/geometry/geometry_tests/anyrect_test.cpp
index e3d9a8872e..9ae89d06b5 100644
--- a/geometry/geometry_tests/anyrect_test.cpp
+++ b/geometry/geometry_tests/anyrect_test.cpp
@@ -71,3 +71,16 @@ UNIT_TEST(AnyRect_TestIsIntersect)
TEST(r0.IsIntersect(r3), ());
}
+UNIT_TEST(AnyRect_SetSizesToIncludePoint)
+{
+ m2::AnyRectD rect(m2::PointD(100, 100), math::pi / 6, m2::RectD(0, 0, 50, 50));
+
+ TEST(!rect.IsPointInside(m2::PointD(0, 0)), ());
+ TEST(!rect.IsPointInside(m2::PointD(200, 200)), ());
+
+ rect.SetSizesToIncludePoint(m2::PointD(0, 0));
+ TEST(rect.IsPointInside(m2::PointD(0, 0)), ());
+
+ rect.SetSizesToIncludePoint(m2::PointD(200, 200));
+ TEST(rect.IsPointInside(m2::PointD(200, 200)), ());
+}
diff --git a/geometry/rect2d.hpp b/geometry/rect2d.hpp
index 6154eec94a..09414221e6 100644
--- a/geometry/rect2d.hpp
+++ b/geometry/rect2d.hpp
@@ -176,6 +176,18 @@ namespace m2
m_maxY = c.y + dy;
}
+ void SetSizesToIncludePoint(Point<T> const & pt)
+ {
+ Point<T> const c = Center();
+ T const dx = my::Abs(pt.x - c.x);
+ T const dy = my::Abs(pt.y - c.y);
+
+ m_minX = c.x - dx;
+ m_minY = c.y - dy;
+ m_maxX = c.x + dx;
+ m_maxY = c.y + dy;
+ }
+
void SetCenter(m2::Point<T> const & p)
{
Offset(p - Center());