X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Futil.hpp;h=2f17845d604d75f09e1ce7594a207f059c2ee475;hb=a79b572a5f26d6ecdd97dff159c40bad330e1c4c;hp=b3f43de882f1af86ad7c8af7e0003717c5b91c34;hpb=074d058a7a483a66af7f8c0b928b321ad483f47c;p=apps%2Fagl-service-windowmanager.git diff --git a/src/util.hpp b/src/util.hpp index b3f43de..2f17845 100644 --- a/src/util.hpp +++ b/src/util.hpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Mentor Graphics Development (Deutschland) GmbH + * Copyright (c) 2017 TOYOTA MOTOR CORPORATION * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,7 +24,8 @@ #include #ifndef DO_NOT_USE_AFB -extern "C" { +extern "C" +{ #include }; #endif @@ -34,7 +35,7 @@ extern "C" { #ifdef __GNUC__ #define ATTR_FORMAT(stringindex, firsttocheck) \ - __attribute__((format(printf, stringindex, firsttocheck))) + __attribute__((format(printf, stringindex, firsttocheck))) #define ATTR_NORETURN __attribute__((noreturn)) #else #define ATTR_FORMAT(stringindex, firsttocheck) @@ -44,18 +45,20 @@ extern "C" { #ifdef AFB_BINDING_VERSION #define lognotice(...) AFB_NOTICE(__VA_ARGS__) #define logerror(...) AFB_ERROR(__VA_ARGS__) -#define fatal(...) \ - do { \ - AFB_ERROR(__VA_ARGS__); \ - abort(); \ - } while (0) +#define fatal(...) \ + do \ + { \ + AFB_ERROR(__VA_ARGS__); \ + abort(); \ + } while (0) #else #define lognotice(...) #define logerror(...) -#define fatal(...) \ - do { \ - abort(); \ - } while (0) +#define fatal(...) \ + do \ + { \ + abort(); \ + } while (0) #endif #ifdef DEBUG_OUTPUT @@ -77,33 +80,87 @@ extern "C" { #define STN(N) \ ScopeTrace __attribute__((unused)) CONCAT(named_trace_scope_, __LINE__)(#N) -struct ScopeTrace { - thread_local static int indent; - char const *f{}; - explicit ScopeTrace(char const *func); - ~ScopeTrace(); +struct ScopeTrace +{ + thread_local static int indent; + char const *f{}; + explicit ScopeTrace(char const *func); + ~ScopeTrace(); }; #endif -// _ _ _ __ _ -// ___| |_ _ __ _ _ ___| |_ _ _ _ __ (_) __ _ _ _ ___ / _| __| | -// / __| __| '__| | | |/ __| __| | | | | '_ \| |/ _` | | | |/ _ \ | |_ / _` | -// \__ \ |_| | | |_| | (__| |_ | |_| | | | | | (_| | |_| | __/ | _| (_| | -// |___/\__|_| \__,_|\___|\__| \__,_|_| |_|_|\__, |\__,_|\___|___|_| \__,_| -// |_| |_____| -struct unique_fd { - int fd{-1}; - unique_fd() = default; - explicit unique_fd(int f) : fd{f} {} - operator int() const { return fd; } - ~unique_fd(); - unique_fd(unique_fd const &) = delete; - unique_fd &operator=(unique_fd const &) = delete; - unique_fd(unique_fd &&o) : fd(o.fd) { o.fd = -1; } - unique_fd &operator=(unique_fd &&o) { - std::swap(this->fd, o.fd); - return *this; - } +/** + * @struct unique_fd + */ +struct unique_fd +{ + int fd{-1}; + unique_fd() = default; + explicit unique_fd(int f) : fd{f} {} + operator int() const { return fd; } + ~unique_fd(); + unique_fd(unique_fd const &) = delete; + unique_fd &operator=(unique_fd const &) = delete; + unique_fd(unique_fd &&o) : fd(o.fd) { o.fd = -1; } + unique_fd &operator=(unique_fd &&o) + { + std::swap(this->fd, o.fd); + return *this; + } +}; + +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 +#endif // !WM_UTIL_HPP