HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
TextStyle.hpp
1// Copyright 2020 Pokitec
2// All rights reserved.
3
4#pragma once
5
6#include "TTauri/Text/FontDescription.hpp"
7#include "TTauri/Text/TextDecoration.hpp"
8#include "TTauri/Text/FontFamilyID.hpp"
9#include "TTauri/Foundation/R16G16B16A16SFloat.hpp"
10#include <fmt/format.h>
11#include <ostream>
12
13namespace tt {
14
15struct TextStyle {
16 static constexpr float default_dpi = 84.0f;
17 static constexpr float dpi_scale = default_dpi / 72.0f;
18
19 FontFamilyID family_id;
20 FontVariant variant;
21 float size;
22 vec color;
23 TextDecoration decoration;
24
25 TextStyle() noexcept :
26 family_id(), variant(), size(0.0), color(), decoration(TextDecoration::None) {}
27
28 TextStyle(tt::FontFamilyID family_id, tt::FontVariant variant, float size, vec color, TextDecoration decoration) noexcept :
29 family_id(family_id), variant(variant), size(size), color(color), decoration(decoration) {}
30
31 TextStyle(std::string_view family_name, tt::FontVariant variant, float size, vec color, TextDecoration decoration) noexcept;
32
33 TextStyle(TextStyle const &) noexcept = default;
34 TextStyle(TextStyle &&) noexcept = default;
35 TextStyle &operator=(TextStyle const &) noexcept = default;
36 TextStyle &operator=(TextStyle &&) noexcept = default;
37
38 float scaled_size() const noexcept {
39 return size * dpi_scale;
40 }
41
42 [[nodiscard]] friend std::string to_string(TextStyle const &rhs) noexcept {
43 // XXX - fmt:: no longer can format tagged_ids??????
44
45 //return fmt::format("<TextStyle id={},v={},s={},c={},d={}>",
46 // rhs.family_id, rhs.variant, rhs.size, rhs.color, rhs.decoration
47 //);
48 tt_not_implemented;
49 }
50
51 friend std::ostream &operator<<(std::ostream &lhs, TextStyle const &rhs) {
52 return lhs << to_string(rhs);
53 }
54};
55
56}
A 4D vector.
Definition vec.hpp:37
A font variant is one of 16 different fonts that can be part of a family.
Definition FontVariant.hpp:15
Definition TextStyle.hpp:15