HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
grapheme_attributes.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 "phrasing.hpp"
8#include "../i18n/i18n.hpp"
9#include "../macros.hpp"
10
11hi_export_module(hikogui.unicode : grapheme_attributes);
12
13hi_export namespace hi {
14inline namespace v1 {
15
17 iso_639 language;
18 iso_15924 script;
19 iso_3166 region;
20 hi::phrasing phrasing;
21
22 constexpr grapheme_attributes() noexcept = default;
23 constexpr grapheme_attributes(grapheme_attributes const&) noexcept = default;
24 constexpr grapheme_attributes(grapheme_attributes&&) noexcept = default;
25 constexpr grapheme_attributes& operator=(grapheme_attributes const&) noexcept = default;
26 constexpr grapheme_attributes& operator=(grapheme_attributes&&) noexcept = default;
27 [[nodiscard]] constexpr friend bool operator==(grapheme_attributes const&, grapheme_attributes const&) noexcept = default;
28
29 constexpr grapheme_attributes(hi::phrasing phrasing) noexcept : language(), script(), region(), phrasing(phrasing) {}
30};
31
33 iso_639 language;
34 iso_15924 script;
35 iso_3166 region;
36 hi::phrasing_mask phrasing = hi::phrasing_mask::all;
37
38 constexpr grapheme_attribute_mask() noexcept = default;
39 constexpr grapheme_attribute_mask(grapheme_attribute_mask const&) noexcept = default;
40 constexpr grapheme_attribute_mask(grapheme_attribute_mask&&) noexcept = default;
41 constexpr grapheme_attribute_mask& operator=(grapheme_attribute_mask const&) noexcept = default;
42 constexpr grapheme_attribute_mask& operator=(grapheme_attribute_mask&&) noexcept = default;
43 [[nodiscard]] constexpr friend bool
44 operator==(grapheme_attribute_mask const&, grapheme_attribute_mask const&) noexcept = default;
45
46 constexpr grapheme_attribute_mask(hi::phrasing_mask phrasing) noexcept : language(), script(), region(), phrasing(phrasing) {}
47
48 [[nodiscard]] constexpr friend bool
49 matches(grapheme_attribute_mask const& haystack, grapheme_attributes const& needle) noexcept
50 {
51 return matches(haystack.language, needle.language) and matches(haystack.script, needle.script) and
52 matches(haystack.region, needle.region) and matches(haystack.phrasing, needle.phrasing);
53 }
54};
55
56} // namespace v1
57}
The HikoGUI namespace.
Definition array_generic.hpp:21
The HikoGUI API version 1.
Definition array_generic.hpp:22
ISO-15924 script code.
Definition iso_15924_intf.hpp:23
Definition grapheme_attributes.hpp:16
Definition grapheme_attributes.hpp:32