Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cMouseMgr.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cMouseMgr_H
7 #define _INC_cMouseMgr_H
8 #pragma once
9 
10 #include "cInputBase.h"
11 #include "../WinAPI/WinTypes.h"
12 #include "../Geometry/cPoint2.h"
13 #include "../Math/cVector.h"
15 
16 namespace GrayLib
17 {
19  {
26 
27  // TODO GET THIS OUT OF HERE. THIS IS APP SPECIFIC !!
28 
29  MOUSEMODE_Arrow = 0, // Default state. Nothing selected, nothing dragging,
30  // mouse can select an object or a GUI control
31  MOUSEMODE_PolyCreate, // Each left click is a region creation point. right ends.
32  MOUSEMODE_TargetMode, // we are targeting something for a server side skill.
33 
34  //*******************
35  // Capture type modes. mouse keys are usually down
36 #define MOUSEMODE_IsCaptured(m) ((m)>=MOUSEMODE_GUIDlgDrag)
37 #define MOUSEMODE_IsCapturedClip(m) ((m)>=MOUSEMODE_GUIDlgDrag && (m)<=MOUSEMODE_GUIUnk) // clips the cursor
38  MOUSEMODE_GUIDlgDrag, // The GUI captures the mouse. drag size/move dialog ?
39  MOUSEMODE_GUISysCmd, // Mouse down on SysCommand icon button etc.
40  MOUSEMODE_GUIButtonDrag, // drag an icon button for object, command, or macro
42  MOUSEMODE_GUIThumbDrag, // drag scroll thumb or textbox edit drag select.
43  MOUSEMODE_GUICharCreateSpin, // like MOUSEMODE_MouseLook
44  MOUSEMODE_GUIUnk, // Mouse down on some control, wait for the mouse up.
45 
46  // Something is selected and we MIGHT be dragging. (mouse button still down) wait for mouse to move.
47  MOUSEMODE_SelectedDragable, // selected and could possible drag this. (mouse is down waiting to drag)
48  MOUSEMODE_SelectedNonDragable, // selected a non draggable. (mouse is down waiting to drag)
49  MOUSEMODE_SelectDragBad, // Trying to drag something MOUSEMODE_SelectedNonDragable.
50 
51  MOUSEMODE_TerrainShape, // terrain edit mode. cursor is a brush on the terrain.
52 
53  //*******************
54  // mouse cursor is invisible
55 #define MOUSEMODE_IsVisible(m) ((m)<MOUSEMODE_SelectDrag)
56  // MOUSEMODE_SelectedR, // like MOUSEMODE_Selected except invis mouse.
57  MOUSEMODE_SelectDrag, // Actually Dragging/etc selected object. (mouse button still down)
58  MOUSEMODE_SelectAxis, // The GM edit axis tool
59  MOUSEMODE_SelectEdit, // We are rotating or scaling.
60 
61  MOUSEMODE_TerrainToolShape, // Mouse button down. set shape of tool
62 
63  MOUSEMODE_MouseLook, // mouse will change the direction of view.
64  };
65 
66  class GRAYLIB_LINK cMouseMgr : public cSingletonStatic<cMouseMgr>
67  {
71 
72  public:
73  bool m_bShowMouseCursor; // used to Temporary hide of the mouse.
74 
75  MOUSEMODE_TYPE m_eMouseMode; // What does the mouse do? modal.
76  cTimeSys m_timeMouseMode; // Time the mode changed. for key repeat timers.
77  cTimeSys m_timeMouseMode2; // Time the mode changed. for key repeat timers.
78 
79  // MouseMove stuff
81  cPoint2i m_ptMouseMove; // last WM_MOUSEMOVE message in app coords.
82  cPoint2i m_ptMouseSelect; // start of object select. (app coords) (mouse down)
83 
84  // DirectInput stuff.
85  cVector2f m_vMouseDelta; // Mouse relative delta (for last frame)
86  cPoint2i m_ptMouseCur; // most current position. (device coords)
87  cPoint2i m_ptMouseLastPosition; // Last absolute position of mouse cursor on last frame. (device coords)
88 
89  cPoint2i m_ptMouseLastVisible; // last visible mouse cursor pos. (device coords)
90  TIMESYS_t m_timeLastMove; // for tool tips. last time the mouse moved.
91  // HCURSOR m_hCurrentCursor;
92 
93  private:
94  void UpdateMousePos();
95  void UpdateMouseCenter();
96 
97  public:
99 
100  float get_MouseDeltaBiggest() const;
101 
102  void put_MouseCursorType(const FILECHAR_t* pszType);
103  void put_MouseCursorShow(bool fShowCursor);
104 
105  virtual void SetMouseModeNext(MOUSEMODE_TYPE mode);
106  virtual void SetMouseMode(MOUSEMODE_TYPE mode);
107  void UpdateMouse();
108  };
109 
110  extern cMouseMgr g_MouseMgr;
111 };
112 
113 #endif
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
Definition: cMouseMgr.h:67
cPoint2i m_ptMouseSelect
Definition: cMouseMgr.h:82
cTimeSys m_timeMouseMode
Definition: cMouseMgr.h:76
void put_MouseCursorType(const FILECHAR_t *pszType)
virtual void SetMouseMode(MOUSEMODE_TYPE mode)
void put_MouseCursorShow(bool fShowCursor)
bool m_bGotDblClick
Definition: cMouseMgr.h:80
virtual void SetMouseModeNext(MOUSEMODE_TYPE mode)
bool m_bShowMouseCursor
Definition: cMouseMgr.h:73
cPoint2i m_ptMouseCur
Definition: cMouseMgr.h:86
TIMESYS_t m_timeLastMove
Definition: cMouseMgr.h:90
float get_MouseDeltaBiggest() const
cTimeSys m_timeMouseMode2
Definition: cMouseMgr.h:77
cPoint2i m_ptMouseLastVisible
Definition: cMouseMgr.h:89
MOUSEMODE_TYPE m_eMouseMode
Definition: cMouseMgr.h:75
cVector2f m_vMouseDelta
Definition: cMouseMgr.h:85
cPoint2i m_ptMouseLastPosition
Definition: cMouseMgr.h:87
cPoint2i m_ptMouseMove
Definition: cMouseMgr.h:81
Definition: cPoint2.h:20
Definition: cVector.h:36
Definition: cSingleton.h:30
Definition: cTimeSys.h:93
Definition: cMesh.h:22
MOUSEMODE_TYPE
Definition: cMouseMgr.h:19
@ MOUSEMODE_GUIDlgDrag
Definition: cMouseMgr.h:38
@ MOUSEMODE_GUIThumbDrag
Definition: cMouseMgr.h:42
@ MOUSEMODE_GUIUnk
Definition: cMouseMgr.h:44
@ MOUSEMODE_MouseLook
Definition: cMouseMgr.h:63
@ MOUSEMODE_GUISysCmd
Definition: cMouseMgr.h:39
@ MOUSEMODE_SelectEdit
Definition: cMouseMgr.h:59
@ MOUSEMODE_SelectAxis
Definition: cMouseMgr.h:58
@ MOUSEMODE_GUIButtonDragTry
Definition: cMouseMgr.h:41
@ MOUSEMODE_SelectedNonDragable
Definition: cMouseMgr.h:48
@ MOUSEMODE_PolyCreate
Definition: cMouseMgr.h:31
@ MOUSEMODE_GUIButtonDrag
Definition: cMouseMgr.h:40
@ MOUSEMODE_GUICharCreateSpin
Definition: cMouseMgr.h:43
@ MOUSEMODE_Arrow
Definition: cMouseMgr.h:29
@ MOUSEMODE_SelectDrag
Definition: cMouseMgr.h:57
@ MOUSEMODE_TerrainToolShape
Definition: cMouseMgr.h:61
@ MOUSEMODE_TargetMode
Definition: cMouseMgr.h:32
@ MOUSEMODE_SelectedDragable
Definition: cMouseMgr.h:47
@ MOUSEMODE_TerrainShape
Definition: cMouseMgr.h:51
@ MOUSEMODE_SelectDragBad
Definition: cMouseMgr.h:49
cMouseMgr g_MouseMgr
char FILECHAR_t
a UTF8 char in a file name. like TCHAR
Definition: FileName.h:22
UINT32 TIMESYS_t
TIMESYS_t = The normal system tick timer. milli-seconds since start of system/app ?
Definition: cTimeSys.h:27