Duckcpp 2.1.0
Duckcpp is a high-performance c++ graphics engine.
Loading...
Searching...
No Matches
ICursorControl.hpp
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in duckcpp/duckcpp.hpp
4
5#ifndef DCPP_I_CURSOR_CONTROL_HPP_INCLUDED
6#define DCPP_I_CURSOR_CONTROL_HPP_INCLUDED
7
8#include <duckcpp/core/engine/IReferenceCounted.hpp>
9#include <duckcpp/core/engine/position2d.hpp>
10#include <duckcpp/core/engine/rect.hpp>
11
12namespace dcpp
13{
14namespace gui
15{
16
17 class IGUISpriteBank;
18
21 {
22 // Following cursors might be system specific, or might use an Duckcpp icon-set. No guarantees so far.
23 ECI_NORMAL, // arrow
24 ECI_CROSS, // Crosshair
25 ECI_HAND, // Hand
26 ECI_HELP, // Arrow and question mark
27 ECI_IBEAM, // typical text-selection cursor
28 ECI_NO, // should not click icon
29 ECI_WAIT, // hourclass
30 ECI_SIZEALL, // arrow in all directions
31 ECI_SIZENESW, // resizes in direction north-east or south-west
32 ECI_SIZENWSE, // resizes in direction north-west or south-east
33 ECI_SIZENS, // resizes in direction north or south
34 ECI_SIZEWE, // resizes in direction west or east
35 ECI_UP, // up-arrow
36
37 // Implementer note: Should we add system specific cursors, which use guaranteed the system icons,
38 // then I would recommend using a naming scheme like ECI_W32_CROSS, ECI_X11_CROSSHAIR and adding those
39 // additionally.
40
41 ECI_COUNT // maximal of defined cursors. Note that higher values can be created at runtime
42 };
43
45 const dcpp::char_kt* const GUICursorIconNames[ECI_COUNT+1] =
46 {
47 "normal",
48 "cross",
49 "hand",
50 "help",
51 "ibeam",
52 "no",
53 "wait",
54 "sizeall",
55 "sizenesw",
56 "sizenwse",
57 "sizens",
58 "sizewe",
59 "sizeup",
60 0
61 };
62
65 {
66 public:
68 : SpriteBank(0), SpriteId(-1)
69 {
70 }
71
73 : SpriteBank(spriteBank), SpriteId(spriteId), HotSpot(hotspot)
74 {
75 }
76
77 public:
78 IGUISpriteBank * SpriteBank;
79 dcpp::int32_kt SpriteId;
81 };
82
97
99 class ICursorControl : public virtual IReferenceCounted
100 {
101 public:
102
104
106 virtual void setVisible(bool visible) = 0;
107
109
110 virtual bool isVisible() const = 0;
111
113
118 virtual void setPosition(const dcpp::nub::position2df &pos) = 0;
119
121
128
130
131 virtual void setPosition(const dcpp::nub::position2di &pos) = 0;
132
134
137
139
144 virtual const dcpp::nub::position2di& getPosition(bool updateCursor=true) = 0;
145
147
155 virtual dcpp::nub::position2df getRelativePosition(bool updateCursor=true) = 0;
156
158
163 virtual void setReferenceRect(dcpp::nub::recti* rect=0) = 0;
164
165
167
168 virtual void setActiveIcon(ECURSOR_ICON iconId) {}
169
171 virtual ECURSOR_ICON getActiveIcon() const { return dcpp::gui::ECI_NORMAL; }
172
174
175 virtual ECURSOR_ICON addIcon(const dcpp::gui::SCursorSprite& icon) { return dcpp::gui::ECI_NORMAL; }
176
178
182 virtual void changeIcon(ECURSOR_ICON iconId, const dcpp::gui::SCursorSprite& sprite) {}
183
186
189
191
194 };
195
196
197} // end namespace gui
198} // end namespace dcpp
199
200#endif
Base class of most objects of the Duckcpp Engine.
Definition IReferenceCounted.hpp:46
Interface to manipulate the mouse cursor.
Definition ICursorControl.hpp:100
virtual void setActiveIcon(ECURSOR_ICON iconId)
Sets the active cursor icon.
Definition ICursorControl.hpp:168
virtual void setVisible(bool visible)=0
Changes the visible state of the mouse cursor.
virtual void changeIcon(ECURSOR_ICON iconId, const dcpp::gui::SCursorSprite &sprite)
replace a cursor icon.
Definition ICursorControl.hpp:182
virtual dcpp::nub::position2df getRelativePosition(bool updateCursor=true)=0
Returns the current position of the mouse cursor.
virtual ECURSOR_PLATFORM_BEHAVIOR getPlatformBehavior() const
Return platform specific behavior.
Definition ICursorControl.hpp:193
virtual void setPosition(const dcpp::nub::position2df &pos)=0
Sets the new position of the cursor.
virtual dcpp::nub::dimension2di getSupportedIconSize() const
Return a system-specific size which is supported for cursors. Larger icons will fail,...
Definition ICursorControl.hpp:185
virtual const dcpp::nub::position2di & getPosition(bool updateCursor=true)=0
Returns the current position of the mouse cursor.
virtual void setReferenceRect(dcpp::nub::recti *rect=0)=0
Sets an absolute reference rect for setting and retrieving the cursor position.
virtual bool isVisible() const =0
Returns if the cursor is currently visible.
virtual ECURSOR_ICON getActiveIcon() const
Gets the currently active icon.
Definition ICursorControl.hpp:171
virtual void setPlatformBehavior(ECURSOR_PLATFORM_BEHAVIOR behavior)
Set platform specific behavior flags.
Definition ICursorControl.hpp:188
virtual ECURSOR_ICON addIcon(const dcpp::gui::SCursorSprite &icon)
Add a custom sprite as cursor icon.
Definition ICursorControl.hpp:175
virtual void setPosition(dcpp::int32_kt x, dcpp::int32_kt y)=0
Sets the new position of the cursor.
virtual void setPosition(const dcpp::nub::position2di &pos)=0
Sets the new position of the cursor.
virtual void setPosition(dcpp::float32_kt x, dcpp::float32_kt y)=0
Sets the new position of the cursor.
Sprite bank interface.
Definition IGUISpriteBank.hpp:71
class used to set sprites as cursors.
Definition ICursorControl.hpp:65
Axis aligned bounding box in 3d dimensional space.
Definition aabbox3d.hpp:22
Rectangle template.
Definition rect.hpp:27
const dcpp::char_kt *const GUICursorIconNames[ECI_COUNT+1]
Names for ECURSOR_ICON.
Definition ICursorControl.hpp:45
ECURSOR_PLATFORM_BEHAVIOR
platform specific behavior flags for the cursor
Definition ICursorControl.hpp:85
@ ECPB_NONE
default - no platform specific behavior
Definition ICursorControl.hpp:87
@ ECPB_X11_CACHE_UPDATES
On X11 try caching cursor updates as XQueryPointer calls can be expensive.
Definition ICursorControl.hpp:95
ECURSOR_ICON
Default icons for cursors.
Definition ICursorControl.hpp:21
dimension2d< dcpp::int32_kt > dimension2di
using type alias for an integer dimension.
Definition dimension2d.hpp:217
As of Duckcpp 1.6, position2d is a synonym for vector2d.
Definition shared_device.hpp:34
char char_kt
8 bit character variable.
Definition irrTypes.hpp:37
float float32_kt
32 bit floating point variable.
Definition irrTypes.hpp:108
signed int int32_kt
32 bit signed variable.
Definition irrTypes.hpp:72

Duckcpp    @cppfx.xyz