AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
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>
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
57
60
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:177
Definition: Size.h:47
Definition: Size.h:34
Definition: Size.h:22