1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
#pragma once
#include "cru/common/Base.h"
#include "cru/platform/graphics/Base.h"
#include "cru/platform/gui/Base.h"
#ifdef CRU_PLATFORM_WINDOWS
#ifdef CRU_UI_EXPORT_API
#define CRU_UI_API __declspec(dllexport)
#else
#define CRU_UI_API __declspec(dllimport)
#endif
#else
#define CRU_UI_API
#endif
namespace cru::ui {
//-------------------- region: import --------------------
using cru::platform::Color;
using cru::platform::Ellipse;
using cru::platform::Matrix;
using cru::platform::Point;
using cru::platform::Rect;
using cru::platform::RoundedRect;
using cru::platform::Size;
using cru::platform::TextRange;
using cru::platform::Thickness;
using cru::platform::gui::MouseButton;
namespace mouse_buttons = cru::platform::gui::mouse_buttons;
namespace colors = cru::platform::colors;
//-------------------- region: forward declaration --------------------
namespace controls {
class Control;
} // namespace controls
namespace host {
class WindowHost;
}
//-------------------- region: basic types --------------------
enum class Direction { Horizontal, Vertical };
enum class Alignment { Start, End, Center, Stretch };
struct CornerRadius {
constexpr CornerRadius()
: left_top(), right_top(), left_bottom(), right_bottom() {}
constexpr CornerRadius(const float& value)
: CornerRadius(Point{value, value}) {}
constexpr CornerRadius(const Point& value)
: left_top(value),
right_top(value),
left_bottom(value),
right_bottom(value) {}
constexpr CornerRadius(Point left_top, Point right_top, Point left_bottom,
Point right_bottom)
: left_top(left_top),
right_top(right_top),
left_bottom(left_bottom),
right_bottom(right_bottom) {}
CornerRadius& SetAll(const Point& point) {
left_top = right_top = left_bottom = right_bottom = point;
return *this;
}
Point left_top;
Point right_top;
Point left_bottom;
Point right_bottom;
};
inline bool operator==(const CornerRadius& left, const CornerRadius& right) {
return left.left_top == right.left_top &&
left.left_bottom == right.left_bottom &&
left.right_top == right.right_top &&
left.right_bottom == right.right_bottom;
}
inline bool operator!=(const CornerRadius& left, const CornerRadius& right) {
return !(left == right);
}
} // namespace cru::ui
|