|
AUI Framework
master
Cross-platform base for C++ UI apps
|
Stores dimensions in scalable units (dp, pt, etc...). More...
#include <AUI/Util/AMetric.h>
Public Types# | |
| enum | Unit { T_UNKNOWN , T_PX , T_DP , T_PT } |
Public Member Functions# | |
| template<typename T, typename std::enable_if_t< std::is_integral_v< T >, bool > = 0> | |
| constexpr | AMetric (T value) |
| Constructor for AMetric a; a = 0 without unit specifier. Can be used only for zero initialization (see example) | |
| constexpr | AMetric (float value, Unit unit) |
| AMetric (const AString &text) | |
| float | getRawValue () const |
| Unit | getUnit () const |
| float | getValuePx () const |
| float | getValueDp () const |
| operator float () const | |
| AMetric | operator- () const |
| AMetric & | operator+= (AMetric rhs) noexcept |
| AMetric & | operator-= (AMetric rhs) noexcept |
| AMetric & | operator*= (AMetric rhs) noexcept |
| AMetric & | operator/= (AMetric rhs) noexcept |
| AMetric | operator+ (AMetric rhs) const noexcept |
| AMetric | operator- (AMetric rhs) const noexcept |
| AMetric | operator* (AMetric rhs) const noexcept |
| AMetric | operator/ (AMetric rhs) const noexcept |
| AMetric & | operator*= (float rhs) noexcept |
| AMetric & | operator/= (float rhs) noexcept |
| AMetric | operator* (float rhs) const noexcept |
| AMetric | operator/ (float rhs) const noexcept |
| bool | operator== (const AMetric &rhs) const |
| bool | operator!= (const AMetric &rhs) const |
Static Public Member Functions# | |
| static float | fromPxToMetric (float value, Unit unit) |
It's highly recommended to use only Density-independent Pixel unit (_dp) to make your application correctly handle systems with high DPI. In AUI, all units are density independent except _px. The only purpose of the _px unit is to define lines of exact one or two pixels wide.
Recommended way is to use operator literal format:
Common usage:
AMetric can be also initialized via value and unit:
AMetric can be also initialized with zero without unit specified (in this case, AMetric::getUnit will return T_PX):
However, if you try to specify nonzero integer without unit, it will produce a runtime error:
{cpp}
Currently supported units:
| Unit | Enum | Literal | Value |
|---|---|---|---|
| Density-independent Pixels | T_DP | _dp | px * scale_factor |
| Typography point | T_PT | _pt | px * scale_factor * 4 / 3 |
| Pixels | T_PX | _px | px |
|
inlineconstexpr |
| T | integer |
| value | should be zero |