Line data Source code
1 : #pragma once
2 :
3 : #include <cstdint>
4 : #include <string_view>
5 : #include <utility>
6 :
7 : namespace jage::engine::input::mouse {
8 : enum class button : std::uint8_t {
9 : left,
10 : right,
11 : middle,
12 : back,
13 : forward,
14 : gesture,
15 : action,
16 : unidentified,
17 : last = unidentified,
18 : };
19 :
20 : static constexpr auto button_count = std::to_underlying(button::last) + 1UZ;
21 :
22 : [[nodiscard]] constexpr auto
23 16 : serialize(const button input_button) -> std::string_view {
24 16 : switch (input_button) {
25 4 : case button::left:
26 4 : return "left";
27 3 : case button::right:
28 3 : return "right";
29 2 : case button::middle:
30 2 : return "middle";
31 1 : case button::back:
32 1 : return "back";
33 1 : case button::forward:
34 1 : return "forward";
35 1 : case button::gesture:
36 1 : return "gesture";
37 1 : case button::action:
38 1 : return "action";
39 1 : case button::unidentified:
40 1 : return "unidentified";
41 2 : default:
42 2 : return "unknown enumerator";
43 : }
44 : }
45 : } // namespace jage::engine::input::mouse
|