summaryrefslogtreecommitdiffstats
path: root/src/util.hpp
diff options
context:
space:
mode:
authorTadao Tanikawa <tanikawa.tadao@jp.panasonic.com>2018-08-01 06:43:02 +0000
committerTadao Tanikawa <tanikawa.tadao@jp.panasonic.com>2018-08-02 07:24:34 +0000
commit8a791cb2ab7c159aac440cd97fbf2ae75d79b31f (patch)
tree5528fd61337a87cee81a9359b8803795c97df21c /src/util.hpp
parent6bc7a273350721be300423b1509527f336dce50e (diff)
Improve output of multiple screen resolution
To improve output on various monitor with various resolution, the following items are introduced. * Abandon scaling by Weston/IVI-SHELL This is cause of huge memory consumption on AGL CES2018 Demo because all contents are designed and rendered with FullHD resolution. * Add parameter of 'scale' to WM API (getDisplayInfo) WM calculate scale factor from screen resolution from wayland compositor and parameter of layout from WM's configuration, area.db. Bug-AGL: SPEC-1568, SPEC-1569, SPEC-1611 Change-Id: I5eac2da0106228c296550135c5200b2653864fdf Signed-off-by: Tadao Tanikawa <tanikawa.tadao@jp.panasonic.com>
Diffstat (limited to 'src/util.hpp')
-rw-r--r--src/util.hpp54
1 files changed, 54 insertions, 0 deletions
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