1 /*****************************************************************************
2  * Copyright (c) 2014-2020 OpenRCT2 developers
3  *
4  * For a complete list of all authors, please refer to contributors.md
5  * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
6  *
7  * OpenRCT2 is licensed under the GNU General Public License version 3.
8  *****************************************************************************/
9 
10 #pragma once
11 
12 #include "../common.h"
13 
14 #include <string>
15 
16 enum class CursorID : uint8_t
17 {
18     Arrow,
19     Blank,
20     UpArrow,
21     UpDownArrow,
22     HandPoint,
23     ZZZ,
24     DiagonalArrows,
25     Picker,
26     TreeDown,
27     FountainDown,
28     StatueDown,
29     BenchDown,
30     CrossHair,
31     BinDown,
32     LamppostDown,
33     FenceDown,
34     FlowerDown,
35     PathDown,
36     DigDown,
37     WaterDown,
38     HouseDown,
39     VolcanoDown,
40     WalkDown,
41     PaintDown,
42     EntranceDown,
43     HandOpen,
44     HandClosed,
45     Count,
46 
47     Undefined = 0xFF
48 };
49 
50 namespace Cursor
51 {
52     CursorID FromString(const std::string& s, CursorID defaultValue);
53 }
54 
55 namespace OpenRCT2::Ui
56 {
57     constexpr size_t CURSOR_BIT_WIDTH = 32;
58     constexpr size_t CURSOR_HEIGHT = 4;
59     struct CursorData
60     {
61         struct HotSpot
62         {
63             int16_t X;
64             int16_t Y;
65         } HotSpot;
66         uint8_t Data[CURSOR_BIT_WIDTH * CURSOR_HEIGHT];
67         uint8_t Mask[CURSOR_BIT_WIDTH * CURSOR_HEIGHT];
68     };
69 } // namespace OpenRCT2::Ui
70