Plutonium framework API 0.3.0
UI framework libraries for libnx
ui_Types.hpp
Go to the documentation of this file.
1
2/*
3
4 Plutonium library
5
6 @file ui_Types.hpp
7 @brief Several basic types helpful for UI and rendering, such as Color
8 @author XorTroll
9
10 @copyright Plutonium project - an easy-to-use UI framework for Nintendo Switch homebrew
11
12*/
13
14#pragma once
15#include <pu/pu_Include.hpp>
16
17namespace pu::ui {
18
19 // Font sizes Plutonium components use by default
20
21 enum class DefaultFontSize : u32 {
22 Small,
23 Medium,
25 Large,
26
27 Count
28 };
29
30 static inline constexpr std::array<u32, static_cast<u32>(DefaultFontSize::Count)> DefaultFontSizes = { 18, 20, 25, 30 };
31
32 inline std::string MakeDefaultFontName(const u32 font_size) {
33 return "DefaultFont@" + std::to_string(font_size);
34 }
35
36 inline constexpr u32 GetDefaultFontSize(const DefaultFontSize kind) {
37 return DefaultFontSizes[static_cast<u32>(kind)];
38 }
39
40 inline std::string GetDefaultFont(const DefaultFontSize kind) {
42 }
43
44 struct Color {
45 u8 r;
46 u8 g;
47 u8 b;
48 u8 a;
49
50 constexpr Color() : r(0), g(0), b(0), a(0xFF) {}
51 constexpr Color(const u8 r, const u8 g, const u8 b, const u8 a) : r(r), g(g), b(b), a(a) {}
52
53 static Color FromHex(const std::string &str_clr);
54 };
55
56 static inline constexpr bool TouchHitsRegion(const i32 touch_x, const i32 touch_y, const i32 region_x, const i32 region_y, const i32 region_w, const i32 region_h) {
57 return (touch_x >= region_x) && (touch_x < (region_x + region_w)) && (touch_y >= region_y) && (touch_y < (region_y + region_h));
58 }
59
60 constexpr u64 TouchPseudoKey = HidNpadButton_29;
61
62 struct TouchPoint {
65
66 constexpr TouchPoint() : x(-1), y(-1) {}
67 constexpr TouchPoint(const u32 x, const u32 y) : x(x), y(y) {}
68
69 inline constexpr bool IsEmpty() const {
70 return (this->x < 0) && (this->y < 0);
71 }
72
73 inline constexpr bool HitsRegion(const i32 region_x, const i32 region_y, const i32 region_w, const i32 region_h) const {
74 if(this->IsEmpty()) {
75 return false;
76 }
77
78 return TouchHitsRegion(this->x, this->y, region_x, region_y, region_w, region_h);
79 }
80 };
81
82}
Definition: elm_Button.hpp:18
static constexpr bool TouchHitsRegion(const i32 touch_x, const i32 touch_y, const i32 region_x, const i32 region_y, const i32 region_w, const i32 region_h)
Definition: ui_Types.hpp:56
std::string MakeDefaultFontName(const u32 font_size)
Definition: ui_Types.hpp:32
constexpr u64 TouchPseudoKey
Definition: ui_Types.hpp:60
constexpr u32 GetDefaultFontSize(const DefaultFontSize kind)
Definition: ui_Types.hpp:36
std::string GetDefaultFont(const DefaultFontSize kind)
Definition: ui_Types.hpp:40
static constexpr std::array< u32, static_cast< u32 >(DefaultFontSize::Count)> DefaultFontSizes
Definition: ui_Types.hpp:30
DefaultFontSize
Definition: ui_Types.hpp:21
s32 i32
Definition: pu_Include.hpp:28
Definition: ui_Types.hpp:44
static Color FromHex(const std::string &str_clr)
u8 g
Definition: ui_Types.hpp:46
u8 a
Definition: ui_Types.hpp:48
u8 r
Definition: ui_Types.hpp:45
constexpr Color()
Definition: ui_Types.hpp:50
u8 b
Definition: ui_Types.hpp:47
constexpr Color(const u8 r, const u8 g, const u8 b, const u8 a)
Definition: ui_Types.hpp:51
Definition: ui_Types.hpp:62
i32 y
Definition: ui_Types.hpp:64
constexpr TouchPoint(const u32 x, const u32 y)
Definition: ui_Types.hpp:67
constexpr TouchPoint()
Definition: ui_Types.hpp:66
constexpr bool HitsRegion(const i32 region_x, const i32 region_y, const i32 region_w, const i32 region_h) const
Definition: ui_Types.hpp:73
i32 x
Definition: ui_Types.hpp:63
constexpr bool IsEmpty() const
Definition: ui_Types.hpp:69