SDOM - Simple SDL Document Object Model
A lightweight, extensible Document Object Model for SDL-based applications.
Loading...
Searching...
No Matches
SDOM_IconIndex.hpp
Go to the documentation of this file.
1
// SDOM_IconIndex.hpp
2
3
#pragma once
4
5
#include <unordered_map>
6
#include <string>
7
#include <optional>
8
9
namespace
SDOM
10
{
11
enum class
IconIndex
:
int
12
{
13
// Individual Indices
14
Hamburger
= 54,
15
Arrow_Left_Raised
,
16
Arrow_Right_Raised
,
17
Arrow_Up_Raised
,
18
Arrow_Down_Raised
,
19
Arrow_Left_Depressed
,
20
Arrow_Right_Depressed
,
21
Arrow_Up_Depressed
,
22
Arrow_Down_Depressed
,
23
Knob_Horizontal
,
24
Knob_Vertical
,
25
Slider_Tick
,
26
HSlider_Rail
,
27
VSlider_Rail
,
28
Checkbox_Empty
,
29
Checkbox_Checked
,
30
Checkbox_X
,
31
Radiobox_Unselected
,
32
Radiobox_Selected
,
33
HProgress_Left
,
34
HProgress_Empty
,
35
HProgress_Thumb
,
36
HProgress_Right
,
37
VProgress_Top
,
38
VProgress_Empty
,
39
VProgress_Thumb
,
40
VProgress_Bottom
41
};
42
43
inline
static
const
std::unordered_map<int, std::string>
icon_index_to_string
= {
44
{
static_cast<
int
>
(
IconIndex::Hamburger
),
"hamburger"
},
45
{
static_cast<
int
>
(
IconIndex::Arrow_Left_Raised
),
"arrow_left_raised"
},
46
{
static_cast<
int
>
(
IconIndex::Arrow_Right_Raised
),
"arrow_right_raised"
},
47
{
static_cast<
int
>
(
IconIndex::Arrow_Up_Raised
),
"arrow_up_raised"
},
48
{
static_cast<
int
>
(
IconIndex::Arrow_Down_Raised
),
"arrow_down_raised"
},
49
{
static_cast<
int
>
(
IconIndex::Arrow_Left_Depressed
),
"arrow_left_depressed"
},
50
{
static_cast<
int
>
(
IconIndex::Arrow_Right_Depressed
),
"arrow_right_depressed"
},
51
{
static_cast<
int
>
(
IconIndex::Arrow_Up_Depressed
),
"arrow_up_depressed"
},
52
{
static_cast<
int
>
(
IconIndex::Arrow_Down_Depressed
),
"arrow_down_depressed"
},
53
{
static_cast<
int
>
(
IconIndex::Knob_Horizontal
),
"knob_horizontal"
},
54
{
static_cast<
int
>
(
IconIndex::Knob_Vertical
),
"knob_vertical"
},
55
{
static_cast<
int
>
(
IconIndex::Slider_Tick
),
"slider_tick"
},
56
{
static_cast<
int
>
(
IconIndex::HSlider_Rail
),
"hslider_rail"
},
57
{
static_cast<
int
>
(
IconIndex::VSlider_Rail
),
"vslider_rail"
},
58
{
static_cast<
int
>
(
IconIndex::Checkbox_Empty
),
"empty_checkbox"
},
59
{
static_cast<
int
>
(
IconIndex::Checkbox_Checked
),
"checked_checkbox"
},
60
{
static_cast<
int
>
(
IconIndex::Checkbox_X
),
"x_checkbox"
},
61
{
static_cast<
int
>
(
IconIndex::Radiobox_Unselected
),
"radiobox_unselected"
},
62
{
static_cast<
int
>
(
IconIndex::Radiobox_Selected
),
"radiobox_selected"
},
63
{
static_cast<
int
>
(
IconIndex::HProgress_Left
),
"hprogress_left"
},
64
{
static_cast<
int
>
(
IconIndex::HProgress_Empty
),
"hprogress_empty"
},
65
{
static_cast<
int
>
(
IconIndex::HProgress_Thumb
),
"hprogress_thumb"
},
66
{
static_cast<
int
>
(
IconIndex::HProgress_Right
),
"hprogress_right"
},
67
{
static_cast<
int
>
(
IconIndex::VProgress_Top
),
"vprogress_top"
},
68
{
static_cast<
int
>
(
IconIndex::VProgress_Empty
),
"vprogress_empty"
},
69
{
static_cast<
int
>
(
IconIndex::VProgress_Thumb
),
"vprogress_thumb"
},
70
{
static_cast<
int
>
(
IconIndex::VProgress_Bottom
),
"vprogress_bottom"
}
71
};
72
73
inline
static
const
std::unordered_map<std::string, int>
icon_string_to_index
= []{
74
std::unordered_map<std::string,int> m;
75
for
(
auto
&p :
icon_index_to_string
) {
76
std::string key = p.second;
77
std::transform(key.begin(), key.end(), key.begin(), [](
unsigned
char
c){
78
return static_cast<char>(std::tolower(c));
79
});
80
m.emplace(std::move(key), p.first);
81
}
82
return
m;
83
}();
84
85
inline
static
std::optional<std::string>
icon_name_from_index
(
IconIndex
idx)
86
{
87
auto
it =
icon_index_to_string
.find(
static_cast<
int
>
(idx));
88
if
(it ==
icon_index_to_string
.end())
return
std::nullopt;
89
std::string name = it->second;
90
std::transform(name.begin(), name.end(), name.begin(), [](
unsigned
char
c){
91
return static_cast<char>(std::tolower(c));
92
});
93
return
name;
94
}
95
96
inline
static
std::optional<IconIndex>
icon_index_from_name
(
const
std::string &name)
97
{
98
std::string key = name;
99
std::transform(key.begin(), key.end(), key.begin(), [](
unsigned
char
c){
100
return static_cast<char>(std::tolower(c));
101
});
102
auto
it =
icon_string_to_index
.find(key);
103
if
(it ==
icon_string_to_index
.end())
return
std::nullopt;
104
return
static_cast<
IconIndex
>
(it->second);
105
}
106
}
// END: namespace SDOM
SDOM
Contains all core classes and utilities for the SDOM library.
Definition
lua_BindHelpers.hpp:7
SDOM::IconIndex
IconIndex
Definition
SDOM_IconIndex.hpp:12
SDOM::IconIndex::HProgress_Right
@ HProgress_Right
SDOM::IconIndex::Radiobox_Unselected
@ Radiobox_Unselected
SDOM::IconIndex::Checkbox_Empty
@ Checkbox_Empty
SDOM::IconIndex::HSlider_Rail
@ HSlider_Rail
SDOM::IconIndex::VProgress_Empty
@ VProgress_Empty
SDOM::IconIndex::HProgress_Thumb
@ HProgress_Thumb
SDOM::IconIndex::Arrow_Down_Depressed
@ Arrow_Down_Depressed
SDOM::IconIndex::VProgress_Thumb
@ VProgress_Thumb
SDOM::IconIndex::Arrow_Down_Raised
@ Arrow_Down_Raised
SDOM::IconIndex::VProgress_Bottom
@ VProgress_Bottom
SDOM::IconIndex::Arrow_Right_Raised
@ Arrow_Right_Raised
SDOM::IconIndex::Arrow_Up_Raised
@ Arrow_Up_Raised
SDOM::IconIndex::Hamburger
@ Hamburger
SDOM::IconIndex::HProgress_Left
@ HProgress_Left
SDOM::IconIndex::VSlider_Rail
@ VSlider_Rail
SDOM::IconIndex::Slider_Tick
@ Slider_Tick
SDOM::IconIndex::Knob_Horizontal
@ Knob_Horizontal
SDOM::IconIndex::Knob_Vertical
@ Knob_Vertical
SDOM::IconIndex::Arrow_Left_Raised
@ Arrow_Left_Raised
SDOM::IconIndex::Arrow_Left_Depressed
@ Arrow_Left_Depressed
SDOM::IconIndex::Checkbox_X
@ Checkbox_X
SDOM::IconIndex::Checkbox_Checked
@ Checkbox_Checked
SDOM::IconIndex::Arrow_Up_Depressed
@ Arrow_Up_Depressed
SDOM::IconIndex::Radiobox_Selected
@ Radiobox_Selected
SDOM::IconIndex::HProgress_Empty
@ HProgress_Empty
SDOM::IconIndex::Arrow_Right_Depressed
@ Arrow_Right_Depressed
SDOM::IconIndex::VProgress_Top
@ VProgress_Top
SDOM::icon_string_to_index
static const std::unordered_map< std::string, int > icon_string_to_index
Definition
SDOM_IconIndex.hpp:73
SDOM::icon_name_from_index
static std::optional< std::string > icon_name_from_index(IconIndex idx)
Definition
SDOM_IconIndex.hpp:85
SDOM::icon_index_from_name
static std::optional< IconIndex > icon_index_from_name(const std::string &name)
Definition
SDOM_IconIndex.hpp:96
SDOM::icon_index_to_string
static const std::unordered_map< int, std::string > icon_index_to_string
Definition
SDOM_IconIndex.hpp:43