X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Futil.hpp;fp=src%2Futil.hpp;h=2f17845d604d75f09e1ce7594a207f059c2ee475;hb=8a791cb2ab7c159aac440cd97fbf2ae75d79b31f;hp=78d2185481306b6721fbbd153bb41cc27064f631;hpb=6bc7a273350721be300423b1509527f336dce50e;p=apps%2Fagl-service-windowmanager-2017.git diff --git a/src/util.hpp b/src/util.hpp index 78d2185..2f17845 100644 --- a/src/util.hpp +++ b/src/util.hpp @@ -109,4 +109,58 @@ struct unique_fd } }; +class rectangle +{ + public: + explicit rectangle(long wd, long ht) : _right(wd - 1), _bottom(ht - 1) {}; + + void set_left(long l) { + _left = l; + } + long left() const { return _left; }; + + void set_right(long r) { + _right = r; + } + long right() const { return _right; }; + + void set_top(long t) { + _top = t; + } + long top() const { return _top; }; + + void set_bottom(long b) { + _bottom = b; + } + long bottom() const { return _bottom; } + + long width() const { + if (is_valid()) + return 0; + else + return _right - _left + 1; + } + + long height() const { + if (is_valid()) + return 0; + else + return _bottom - _top + 1; + } + + void set_aspect(double ratio); + void fit(unsigned long to_width, unsigned long to_height); + void center(unsigned long outer_w, unsigned long outer_h); + + private: + bool is_valid() const { + return (_top > _bottom || _left > _right); + } + + long _left = 0; + long _top = 0; + long _right; + long _bottom; +}; + #endif // !WM_UTIL_HPP