diff --git a/region.cpp b/region.cpp index 1ce9f143..8a7bc6d3 100644 --- a/region.cpp +++ b/region.cpp @@ -102,6 +102,21 @@ region::centre (void) const { } +template +point<2> +region::closest (point<2> p) const { + return { + p.x < x ? x : + p.x > x + w ? x + w : + p.x, + + p.y < y ? y : + p.y < y + h ? y + h : + p.y + }; +} + + //----------------------------------------------------------------------------- template bool diff --git a/region.hpp b/region.hpp index 905969a5..f3c28283 100644 --- a/region.hpp +++ b/region.hpp @@ -50,8 +50,9 @@ namespace util { bool empty (void) const; - point2 base (void) const; - point2 centre (void) const; + point2 base (void) const; + point2 centre (void) const; + point2 closest (point2) const; bool includes (const point2&) const; // inclusive of borders bool contains (const point2&) const; // exclusive of borders