HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
hikogui
units
length.hpp
1
// Copyright Take Vos 2024.
2
// Distributed under the Boost Software License, Version 1.0.
3
// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
5
#pragma once
6
7
#include "em_squares.hpp"
8
#include "pixels.hpp"
9
#include "points.hpp"
10
#include "dips.hpp"
11
#include "../macros.hpp"
12
#include <hikothird/au.hh>
13
#include <concepts>
14
#include <variant>
15
16
hi_export_module(hikogui.unit : length);
17
18
hi_export
namespace
hi
{
19
inline
namespace
v1
{
namespace
unit {
20
21
template
<
typename
T>
22
using
length_variant =
23
std::variant<au::Quantity<Points, T>, au::Quantity<Pixels, T>, au::Quantity<Dips, T>, au::Quantity<EmSquares, T>>;
24
25
template
<
typename
T>
26
class
length_quantity
:
public
length_variant<T> {
27
using
super = length_variant<T>;
28
29
using
super::super;
30
};
31
32
using
length_f =
length_quantity<float>
;
33
using
length_s =
length_quantity<short>
;
34
35
}}
// namespace v1::unit
36
}
37
38
template
<std::
int
egral T>
39
struct
std::hash
<
hi
::unit::length_quantity<T>> {
40
[[nodiscard]]
size_t
operator()
(hi::unit::length_quantity<T>
const
& rhs)
const
noexcept
41
{
42
auto
h =
std::hash<size_t>
{}(rhs.index());
43
h ^= std::visit(
44
[](
auto
&& rhs_) {
45
return
std::hash<T>
{}(rhs_);
46
},
47
rhs);
48
return
h;
49
}
50
};
hi
The HikoGUI namespace.
Definition
array_generic.hpp:21
hi::v1
The HikoGUI API version 1.
Definition
array_generic.hpp:22
hi::v1::unit::length_quantity
Definition
length.hpp:26
std::hash
std::hash::operator()
T operator()(T... args)
Generated on
for HikoGUI by
1.16.1