AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
Size.h
1/*
2 * AUI Framework - Declarative UI toolkit for modern C++20
3 * Copyright (C) 2020-2024 Alex2772 and Contributors
4 *
5 * SPDX-License-Identifier: MPL-2.0
6 *
7 * This Source Code Form is subject to the terms of the Mozilla Public
8 * License, v. 2.0. If a copy of the MPL was not distributed with this
9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 */
11
12//
13// Created by Alex2772 on 12/5/2021.
14//
15
16#pragma once
17
18#include <AUI/Util/AMetric.h>
19
20
21template<int I>
22struct ViewAssertionSize {
23 int value;
24 explicit ViewAssertionSize(const AMetric& value): value(value.getValuePx()) {}
25
26 bool operator()(const _<AView>& v) {
27 auto viewSize = v->getSize()[I];
28 EXPECT_EQ(viewSize, value);
29 return viewSize == value;
30 }
31};
32
33template<int I>
35 AOptional<int> value;
36
37 bool operator()(const _<AView>& v) {
38 if (!value) {
39 value = v->getSize()[I];
40 return true;
41 }
42 return v->getSize()[I] == *value;
43 }
44};
45
46template<int I>
48 AOptional<int> value;
49
50 bool operator()(const _<AView>& v) {
51 return v->getSize()[I] == v->getMinimumSize()[I];
52 }
53};
54
55using width = ViewAssertionSize<0>;
56using height = ViewAssertionSize<1>;
57
58using widthIsMinimal = ViewAssertionSizeIsMinimal<0>;
59using heightIsMinimal = ViewAssertionSizeIsMinimal<1>;
60
61using sameWidth = ViewAssertionSizeSame<0>;
62using sameHeight = ViewAssertionSizeSame<1>;
Stores dimensions in scalable units (dp, pt, etc...).
Definition AMetric.h:75
Utility wrapper implementing the stack-allocated (fast) optional idiom.
Definition AOptional.h:32
An std::weak_ptr with AUI extensions.
Definition SharedPtrTypes.h:178
Definition Size.h:47
Definition Size.h:34
Definition Size.h:22