Irrlicht 3D Engine
ICursorControl.h
Go to the documentation of this file.
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 irrlicht.h
4 
5 #ifndef __I_CURSOR_CONTROL_H_INCLUDED__
6 #define __I_CURSOR_CONTROL_H_INCLUDED__
7 
8 #include "IReferenceCounted.h"
9 #include "position2d.h"
10 #include "rect.h"
11 
12 namespace irr
13 {
14 namespace gui
15 {
16 
17  class IGUISpriteBank;
18 
21  {
22  // Following cursors might be system specific, or might use an Irrlicht 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 c8* 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  {
67  : SpriteBank(0), SpriteId(-1)
68  {
69  }
70 
71  SCursorSprite( gui::IGUISpriteBank * spriteBank, s32 spriteId, const core::position2d<s32> &hotspot=(core::position2d<s32>(0,0)) )
72  : SpriteBank(spriteBank), SpriteId(spriteId), HotSpot(hotspot)
73  {
74  }
75 
78  core::position2d<s32> HotSpot;
79  };
80 
83  {
85  ECPB_NONE = 0,
86 
88 
94  };
95 
97  class ICursorControl : public virtual IReferenceCounted
98  {
99  public:
100 
102 
104  virtual void setVisible(bool visible) = 0;
105 
107 
108  virtual bool isVisible() const = 0;
109 
111 
116  virtual void setPosition(const core::position2d<f32> &pos) = 0;
117 
119 
125  virtual void setPosition(f32 x, f32 y) = 0;
126 
128 
129  virtual void setPosition(const core::position2d<s32> &pos) = 0;
130 
132 
134  virtual void setPosition(s32 x, s32 y) = 0;
135 
137 
139  virtual const core::position2d<s32>& getPosition() = 0;
140 
142 
146  virtual core::position2d<f32> getRelativePosition() = 0;
147 
149 
154  virtual void setReferenceRect(core::rect<s32>* rect=0) = 0;
155 
156 
158 
159  virtual void setActiveIcon(ECURSOR_ICON iconId) {}
160 
162  virtual ECURSOR_ICON getActiveIcon() const { return gui::ECI_NORMAL; }
163 
165 
166  virtual ECURSOR_ICON addIcon(const gui::SCursorSprite& icon) { return gui::ECI_NORMAL; }
167 
169 
173  virtual void changeIcon(ECURSOR_ICON iconId, const gui::SCursorSprite& sprite) {}
174 
177 
180 
182 
185  };
186 
187 
188 } // end namespace gui
189 } // end namespace irr
190 
191 #endif
192 
irr::gui::ECI_IBEAM
@ ECI_IBEAM
Definition: ICursorControl.h:27
irr::gui::ICursorControl::setReferenceRect
virtual void setReferenceRect(core::rect< s32 > *rect=0)=0
Sets an absolute reference rect for setting and retrieving the cursor position.
irr::gui::ECI_SIZENS
@ ECI_SIZENS
Definition: ICursorControl.h:33
irr::gui::ICursorControl::getActiveIcon
virtual ECURSOR_ICON getActiveIcon() const
Gets the currently active icon.
Definition: ICursorControl.h:162
irr::gui::SCursorSprite
structure used to set sprites as cursors.
Definition: ICursorControl.h:64
irr::c8
char c8
8 bit character variable.
Definition: irrTypes.h:31
irr::gui::ICursorControl::setPosition
virtual void setPosition(const core::position2d< f32 > &pos)=0
Sets the new position of the cursor.
irr::gui::SCursorSprite::SpriteId
s32 SpriteId
Definition: ICursorControl.h:77
irr::gui::IGUISpriteBank
Sprite bank interface.
Definition: IGUISpriteBank.h:45
IReferenceCounted.h
irr::core::dimension2di
dimension2d< s32 > dimension2di
Typedef for an integer dimension.
Definition: dimension2d.h:217
irr::gui::ICursorControl::getPosition
virtual const core::position2d< s32 > & getPosition()=0
Returns the current position of the mouse cursor.
irr::gui::ECI_HELP
@ ECI_HELP
Definition: ICursorControl.h:26
irr::gui::ICursorControl::getRelativePosition
virtual core::position2d< f32 > getRelativePosition()=0
Returns the current position of the mouse cursor.
irr::gui::ECI_COUNT
@ ECI_COUNT
Definition: ICursorControl.h:41
irr::gui::ECI_NORMAL
@ ECI_NORMAL
Definition: ICursorControl.h:23
irr::gui::ECI_SIZENESW
@ ECI_SIZENESW
Definition: ICursorControl.h:31
irr::gui::ICursorControl::getSupportedIconSize
virtual core::dimension2di getSupportedIconSize() const
Return a system-specific size which is supported for cursors. Larger icons will fail,...
Definition: ICursorControl.h:176
irr::gui::ICursorControl::setPlatformBehavior
virtual void setPlatformBehavior(ECURSOR_PLATFORM_BEHAVIOR behavior)
Set platform specific behavior flags.
Definition: ICursorControl.h:179
irr::gui::ECI_SIZENWSE
@ ECI_SIZENWSE
Definition: ICursorControl.h:32
irr::s32
signed int s32
32 bit signed variable.
Definition: irrTypes.h:66
irr::gui::GUICursorIconNames
const c8 *const GUICursorIconNames[ECI_COUNT+1]
Names for ECURSOR_ICON.
Definition: ICursorControl.h:45
irr::gui::ECI_CROSS
@ ECI_CROSS
Definition: ICursorControl.h:24
irr::IReferenceCounted
Base class of most objects of the Irrlicht Engine.
Definition: IReferenceCounted.h:41
irr::gui::ECURSOR_PLATFORM_BEHAVIOR
ECURSOR_PLATFORM_BEHAVIOR
platform specific behavior flags for the cursor
Definition: ICursorControl.h:82
irr::core::dimension2d
Specifies a 2 dimensional size.
Definition: dimension2d.h:20
irr::gui::ICursorControl::addIcon
virtual ECURSOR_ICON addIcon(const gui::SCursorSprite &icon)
Add a custom sprite as cursor icon.
Definition: ICursorControl.h:166
position2d.h
irr::f32
float f32
32 bit floating point variable.
Definition: irrTypes.h:104
irr::gui::ECPB_NONE
@ ECPB_NONE
default - no platform specific behavior
Definition: ICursorControl.h:85
irr::gui::ECURSOR_ICON
ECURSOR_ICON
Default icons for cursors.
Definition: ICursorControl.h:20
irr::gui::ECI_SIZEALL
@ ECI_SIZEALL
Definition: ICursorControl.h:30
irr::gui::ECI_WAIT
@ ECI_WAIT
Definition: ICursorControl.h:29
irr::gui::ICursorControl
Interface to manipulate the mouse cursor.
Definition: ICursorControl.h:97
irr::gui::SCursorSprite::HotSpot
core::position2d< s32 > HotSpot
Definition: ICursorControl.h:78
irr
Everything in the Irrlicht Engine can be found in this namespace.
Definition: aabbox3d.h:12
irr::core::rect< s32 >
irr::gui::ICursorControl::getPlatformBehavior
virtual ECURSOR_PLATFORM_BEHAVIOR getPlatformBehavior() const
Return platform specific behavior.
Definition: ICursorControl.h:184
irr::gui::ECI_NO
@ ECI_NO
Definition: ICursorControl.h:28
irr::gui::SCursorSprite::SCursorSprite
SCursorSprite()
Definition: ICursorControl.h:66
rect.h
irr::gui::ICursorControl::setVisible
virtual void setVisible(bool visible)=0
Changes the visible state of the mouse cursor.
irr::gui::ICursorControl::isVisible
virtual bool isVisible() const =0
Returns if the cursor is currently visible.
irr::gui::ECI_SIZEWE
@ ECI_SIZEWE
Definition: ICursorControl.h:34
irr::gui::ECI_UP
@ ECI_UP
Definition: ICursorControl.h:35
irr::gui::SCursorSprite::SCursorSprite
SCursorSprite(gui::IGUISpriteBank *spriteBank, s32 spriteId, const core::position2d< s32 > &hotspot=(core::position2d< s32 >(0, 0)))
Definition: ICursorControl.h:71
irr::gui::ECPB_X11_CACHE_UPDATES
@ ECPB_X11_CACHE_UPDATES
On X11 try caching cursor updates as XQueryPointer calls can be expensive.
Definition: ICursorControl.h:93
irr::gui::ICursorControl::setActiveIcon
virtual void setActiveIcon(ECURSOR_ICON iconId)
Sets the active cursor icon.
Definition: ICursorControl.h:159
irr::gui::SCursorSprite::SpriteBank
IGUISpriteBank * SpriteBank
Definition: ICursorControl.h:76
irr::gui::ECI_HAND
@ ECI_HAND
Definition: ICursorControl.h:25
irr::gui::ICursorControl::changeIcon
virtual void changeIcon(ECURSOR_ICON iconId, const gui::SCursorSprite &sprite)
replace a cursor icon.
Definition: ICursorControl.h:173