1 /*
2  * Xournal++
3  *
4  * Enum definition used for tools
5  *
6  * @author Xournal++ Team
7  * https://github.com/xournalpp/xournalpp
8  *
9  * @license GNU GPLv2 or later
10  */
11 
12 #pragma once
13 
14 #include <string>
15 #include <vector>
16 
17 #include "XournalType.h"
18 
19 /**
20  * @brief Buttons that can have a configuration attached to them
21  * Used for ButtonConfig and ToolHandler
22  *
23  */
24 enum Button {
25     BUTTON_ERASER,
26     BUTTON_MOUSE_MIDDLE,
27     BUTTON_MOUSE_RIGHT,
28     BUTTON_TOUCH,
29     BUTTON_DEFAULT,
30     BUTTON_STYLUS_ONE,
31     BUTTON_STYLUS_TWO,
32     BUTTON_COUNT
33 };
34 
35 enum AttributeType {
36     ATTRIBUTE_TYPE_NONE,
37     ATTRIBUTE_TYPE_STRING,
38     ATTRIBUTE_TYPE_INT,
39     ATTRIBUTE_TYPE_DOUBLE,
40     ATTRIBUTE_TYPE_INT_HEX,
41     ATTRIBUTE_TYPE_BOOLEAN,
42 };
43 
44 // use this as a bit flag
45 enum ScrollbarHideType {
46     SCROLLBAR_HIDE_NONE = 0,
47     SCROLLBAR_HIDE_HORIZONTAL = 1 << 1,
48     SCROLLBAR_HIDE_VERTICAL = 1 << 2,
49     SCROLLBAR_HIDE_BOTH = SCROLLBAR_HIDE_HORIZONTAL | SCROLLBAR_HIDE_VERTICAL
50 };
51 
52 /**
53  * The user-selectable device types
54  */
55 enum class InputDeviceTypeOption {
56     Disabled = 0,
57     Mouse = 1,
58     Pen = 2,
59     Eraser = 3,
60     Touchscreen = 4,
61     MouseKeyboardCombo = 5,
62 };
63 
64 enum StylusCursorType {
65     STYLUS_CURSOR_NONE = 0,
66     STYLUS_CURSOR_DOT = 1,
67     STYLUS_CURSOR_BIG = 2,
68 };
69 
70 constexpr auto buttonToString(Button button) -> const char* {
71     switch (button) {
72         case BUTTON_ERASER:
73             return "eraser";
74         case BUTTON_MOUSE_MIDDLE:
75             return "middle";
76         case BUTTON_MOUSE_RIGHT:
77             return "right";
78         case BUTTON_TOUCH:
79             return "touch";
80         case BUTTON_DEFAULT:
81             return "default";
82         case BUTTON_STYLUS_ONE:
83             return "stylus";
84         case BUTTON_STYLUS_TWO:
85             return "stylus2";
86         default:
87             return "unknown";
88     }
89 }
90 
91 constexpr auto stylusCursorTypeToString(StylusCursorType stylusCursorType) -> const char* {
92     switch (stylusCursorType) {
93         case STYLUS_CURSOR_NONE:
94             return "none";
95         case STYLUS_CURSOR_DOT:
96             return "dot";
97         case STYLUS_CURSOR_BIG:
98             return "big";
99         default:
100             return "unknown";
101     }
102 }
103 
104 StylusCursorType stylusCursorTypeFromString(const string& stylusCursorTypeStr);
105