1/**
2 * Copyright (c) 2006-2023 LOVE Development Team
3 *
4 * This software is provided 'as-is', without any express or implied
5 * warranty. In no event will the authors be held liable for any damages
6 * arising from the use of this software.
7 *
8 * Permission is granted to anyone to use this software for any purpose,
9 * including commercial applications, and to alter it and redistribute it
10 * freely, subject to the following restrictions:
11 *
12 * 1. The origin of this software must not be misrepresented; you must not
13 * claim that you wrote the original software. If you use this software
14 * in a product, an acknowledgment in the product documentation would be
15 * appreciated but is not required.
16 * 2. Altered source versions must be plainly marked as such, and must not be
17 * misrepresented as being the original software.
18 * 3. This notice may not be removed or altered from any source distribution.
19 **/
20
21#ifndef LOVE_MOUSE_MOUSE_H
22#define LOVE_MOUSE_MOUSE_H
23
24// LOVE
25#include "Cursor.h"
26#include "common/Module.h"
27#include "image/ImageData.h"
28
29// C++
30#include <vector>
31
32namespace love
33{
34namespace mouse
35{
36
37class Mouse : public Module
38{
39public:
40
41 virtual ~Mouse() {}
42
43 // Implements Module.
44 virtual ModuleType getModuleType() const { return M_MOUSE; }
45
46 virtual Cursor *newCursor(love::image::ImageData *data, int hotx, int hoty) = 0;
47 virtual Cursor *getSystemCursor(Cursor::SystemCursor cursortype) = 0;
48
49 virtual void setCursor(Cursor *cursor) = 0;
50 virtual void setCursor() = 0;
51
52 virtual Cursor *getCursor() const = 0;
53
54 virtual bool isCursorSupported() const = 0;
55
56 virtual double getX() const = 0;
57 virtual double getY() const = 0;
58 virtual void getPosition(double &x, double &y) const = 0;
59 virtual void setX(double x) = 0;
60 virtual void setY(double y) = 0;
61 virtual void setPosition(double x, double y) = 0;
62 virtual void setVisible(bool visible) = 0;
63 virtual bool isDown(const std::vector<int> &buttons) const = 0;
64 virtual bool isVisible() const = 0;
65 virtual void setGrabbed(bool grab) = 0;
66 virtual bool isGrabbed() const = 0;
67 virtual bool setRelativeMode(bool relative) = 0;
68 virtual bool getRelativeMode() const = 0;
69
70}; // Mouse
71
72} // mouse
73} // love
74
75#endif // LOVE_MOUSE_MOUSE_H
76