AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
AMetric Class Reference

Stores dimensions in scalable units (dp, pt, etc...). More...

#include <AUI/Util/AMetric.h>

Detailed Description#

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.

Initialization

Recommended way is to use operator literal format:

AMetric a = 5_dp // -> a = 5 dimension-independent units (= pixels on 100% scaling)

Common usage:

AMetric a = 5_dp;
a.getValuePx() // 5 on 100% scale, 6 on 125% scale, etc

AMetric can be also initialized via value and unit:

AMetric a(5, T_DP);

AMetric can be also initialized with zero without unit specified (in this case, AMetric::getUnit will return T_PX):

AMetric zero1 = 0; // zero pixels
AMetric zero2 = {}; // also zero pixels

However, if you try to specify nonzero integer without unit, it will produce a runtime error:

AMetric a = 5; // runtime error

{cpp}

Supported units#

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
Note
It's highly recommended to use only Density-independent Pixel unit (_dp). DP guarantees that your application will correctly handle systems with hidpi screens.
Examples
examples/ui/views/src/ExampleWindow.cpp.

Constructor & Destructor Documentation

◆ AMetric()

template<typename T, typename std::enable_if_t< std::is_integral_v< T >, bool > = 0>
AMetric::AMetric ( T value)
inlineconstexpr
<code>
AMetric a = 0; // ok<br />
AMetric b = 5_dp; // ok<br />
AMetric c = 5; // produces error<br />
</code>
Template Parameters
Tinteger
Parameters
valueshould be zero