27 #ifndef _CEGUIGUIContext_h_ 28 #define _CEGUIGUIContext_h_ 30 #include "CEGUI/RenderingSurface.h" 31 #include "CEGUI/InjectedInputReceiver.h" 32 #include "CEGUI/MouseCursor.h" 33 #include "CEGUI/SystemKeys.h" 35 #if defined (_MSC_VER) 36 # pragma warning(push) 37 # pragma warning(disable : 4251) 42 struct MouseClickTracker;
45 class CEGUIEXPORT GUIContextEventArgs :
public EventArgs
48 GUIContextEventArgs(GUIContext* context):
57 class CEGUIEXPORT GUIContextRenderTargetEventArgs :
public GUIContextEventArgs
60 GUIContextRenderTargetEventArgs(GUIContext* context, RenderTarget* target) :
61 GUIContextEventArgs(context),
65 RenderTarget* renderTarget;
68 class CEGUIEXPORT GUIContext :
public RenderingSurface,
69 public InjectedInputReceiver
72 static const float DefaultMouseButtonClickTimeout;
73 static const float DefaultMouseButtonMultiClickTimeout;
74 static const Sizef DefaultMouseButtonMultiClickTolerance;
82 static const String EventRootWindowChanged;
86 static const String EventMouseMoveScalingFactorChanged;
90 static const String EventMouseButtonClickTimeoutChanged;
94 static const String EventMouseButtonMultiClickTimeoutChanged;
99 static const String EventMouseButtonMultiClickToleranceChanged;
104 static const String EventRenderTargetChanged;
108 static const String EventDefaultFontChanged;
110 GUIContext(RenderTarget& target);
113 Window* getRootWindow()
const;
114 void setRootWindow(Window* new_root);
124 void setModalWindow(Window* window);
127 Window* getModalWindow()
const;
129 Window* getWindowContainingMouse()
const;
131 const Sizef& getSurfaceSize()
const;
133 const SystemKeys& getSystemKeys()
const;
137 bool isDirty()
const;
150 MouseCursor& getMouseCursor();
151 const MouseCursor& getMouseCursor()
const;
153 void setMouseMoveScalingFactor(
float factor);
154 float getMouseMoveScalingFactor()
const;
156 void setMouseButtonClickTimeout(
float seconds);
157 float getMouseButtonClickTimeout()
const;
159 void setMouseButtonMultiClickTimeout(
float seconds);
160 float getMouseButtonMultiClickTimeout()
const;
162 void setMouseButtonMultiClickTolerance(
const Sizef& sz);
163 const Sizef& getMouseButtonMultiClickTolerance()
const;
178 void setMouseClickEventGenerationEnabled(
const bool enable);
193 bool isMouseClickEventGenerationEnabled()
const;
196 void updateWindowContainingMouse();
198 Window* getInputCaptureWindow()
const;
199 void setInputCaptureWindow(Window* window);
215 void setDefaultTooltipObject(Tooltip* tooltip);
229 void setDefaultTooltipType(
const String& tooltip_type);
232 Tooltip* getDefaultTooltipObject()
const;
234 void setRenderTarget(RenderTarget& target);
244 void setDefaultFont(
const String& name);
253 void setDefaultFont(Font* font);
262 Font* getDefaultFont()
const;
265 bool injectMouseMove(
float delta_x,
float delta_y);
266 bool injectMouseLeaves(
void);
269 bool injectKeyDown(Key::Scan scan_code);
270 bool injectKeyUp(Key::Scan scan_code);
272 bool injectMouseWheelChange(
float delta);
273 bool injectMousePosition(
float x_pos,
float y_pos);
274 bool injectTimePulse(
float timeElapsed);
275 bool injectMouseButtonClick(
const MouseButton button);
276 bool injectMouseButtonDoubleClick(
const MouseButton button);
277 bool injectMouseButtonTripleClick(
const MouseButton button);
278 bool injectCopyRequest();
279 bool injectCutRequest();
280 bool injectPasteRequest();
286 void updateRootWindowAreaRects()
const;
287 void drawWindowContentToTarget();
288 void renderWindowHierarchyToSurfaces();
290 void createDefaultTooltipWindowInstance()
const;
291 void destroyDefaultTooltipWindowInstance();
294 void notifyDefaultFontChanged(Window* hierarchy_root)
const;
296 bool mouseMoveInjection_impl(MouseEventArgs& ma);
297 Window* getTargetWindow(
const Vector2f& pt,
const bool allow_disabled)
const;
298 Window* getKeyboardTargetWindow()
const;
299 Window* getCommonAncestor(Window* w1, Window* w2)
const;
301 void notifyMouseTransition(Window* top, Window* bottom,
302 void (Window::*func)(MouseEventArgs&),
303 MouseEventArgs& args)
const;
305 bool areaChangedHandler(
const EventArgs& args);
306 bool windowDestroyedHandler(
const EventArgs& args);
309 bool updateWindowContainingMouse_impl()
const;
310 void resetWindowContainingMouse();
313 virtual void onRootWindowChanged(WindowEventArgs& args);
314 virtual void onMouseMoveScalingFactorChanged(GUIContextEventArgs& args);
315 virtual void onMouseButtonClickTimeoutChanged(GUIContextEventArgs& args);
316 virtual void onMouseButtonMultiClickTimeoutChanged(GUIContextEventArgs& args);
317 virtual void onMouseButtonMultiClickToleranceChanged(GUIContextEventArgs& args);
318 virtual void onRenderTargetChanged(GUIContextRenderTargetEventArgs& args);
319 virtual void onDefaultFontChanged(EventArgs& args);
324 Window* d_rootWindow;
326 MouseCursor d_mouseCursor;
328 float d_mouseMovementScalingFactor;
330 bool d_generateMouseClickEvents;
332 float d_mouseButtonClickTimeout;
334 float d_mouseButtonMultiClickTimeout;
336 Sizef d_mouseButtonMultiClickTolerance;
338 mutable Tooltip* d_defaultTooltipObject;
339 mutable bool d_weCreatedTooltipObject;
340 String d_defaultTooltipType;
347 mutable Window* d_windowContainingMouse;
348 mutable bool d_windowContainingMouseIsUpToDate;
349 Window* d_modalWindow;
350 Window* d_captureWindow;
352 SystemKeys d_systemKeys;
353 MouseClickTracker* d_mouseClickTrackers;
355 Event::ScopedConnection d_areaChangedEventConnection;
356 Event::ScopedConnection d_windowDestroyedEventConnection;
361 #if defined(_MSC_VER) 362 # pragma warning(pop) Main namespace for Crazy Eddie's GUI Library.
Definition: cegui/include/CEGUI/Affector.h:42
MouseButton
Enumeration of mouse buttons.
Definition: cegui/include/CEGUI/InputEvent.h:209
utf32 value_type
Basic 'code point' type used for String (utf32)
Definition: cegui/include/CEGUI/String.h:69