HikoGUI
Select Version:
main (latest dev)
0.8.1 (latest)
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
theme-value
theme-tag
text
ranged-int
phrase-mask-chars
new-window-widget
msvs-bug-20230517
msvs-bug-20230503
msvs-bug-20230428
msvc-c1001-20231106
msvc-bug-20230706
msvc-bug-20221214
modules-part1
label-delegate
bug-msvs-20220928
attribute-parser
⚠️ This documents the
main
development branch of HikoGUI. It might differ from release versions.
A low latency retained GUI
Toggle main menu visibility
Main Page
Related Pages
Topics
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
Variables
c
d
g
i
l
o
p
r
s
t
x
Typedefs
Enumerations
a
b
c
d
f
g
h
k
l
p
s
t
u
v
w
Concepts
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
Related Symbols
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
Files
File List
Globals
All
Functions
Macros
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Concepts
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
{
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
};
26
class
length_quantity
:
public
length_variant<T> {
…
};
31
32
using
length_f
=
length_quantity<float>
;
33
using
length_s
=
length_quantity<short>
;
34
35
}
// namespace v1
36
}
37
38
template
<std::
int
egral T>
39
struct
std::hash
<
hi
::length_quantity<T>> {
40
[[nodiscard]]
size_t
operator()
(
hi::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
};
39
struct
std::hash
<
hi
::length_quantity<T>> {
…
};
hi
The HikoGUI namespace.
Definition
array_generic.hpp:20
v1
DOXYGEN BUG.
Definition
algorithm_misc.hpp:20
hi::length_quantity
Definition
length.hpp:26
au::Quantity
Definition
au.hh:3518
std::hash
std::hash::operator()
T operator()(T... args)
Generated on Mon Apr 22 2024 12:51:38 for HikoGUI by
1.10.0