VirtualBox

source: vbox/trunk/src/VBox/Frontends/VBoxBFE/MouseImpl.h@ 25624

Last change on this file since 25624 was 22277, checked in by vboxsync, 15 years ago

PDMDRVREG change (big changeset).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.6 KB
Line 
1/** @file
2 *
3 * VBox frontends: Basic Frontend (BFE):
4 * Declaration of Mouse class
5 */
6
7/*
8 * Copyright (C) 2006-2007 Sun Microsystems, Inc.
9 *
10 * This file is part of VirtualBox Open Source Edition (OSE), as
11 * available from http://www.virtualbox.org. This file is free software;
12 * you can redistribute it and/or modify it under the terms of the GNU
13 * General Public License (GPL) as published by the Free Software
14 * Foundation, in version 2 as it comes in the "COPYING" file of the
15 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
16 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
17 *
18 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
19 * Clara, CA 95054 USA or visit http://www.sun.com if you need
20 * additional information or have any questions.
21 */
22
23#ifndef ____H_MOUSEIMPL
24#define ____H_MOUSEIMPL
25
26#include <VBox/pdm.h>
27
28/** Simple mouse event class. */
29class MouseEvent
30{
31public:
32 MouseEvent() : dx(0), dy(0), dz(0), state(-1) {}
33 MouseEvent(int _dx, int _dy, int _dz, int _state) :
34 dx(_dx), dy(_dy), dz(_dz), state(_state) {}
35 bool isValid()
36 {
37 return state != -1;
38 }
39 // not logical to be int but that's how it's defined in QEMU
40 /** @todo r=bird: and what is the logical declaration then? We'll be using int32_t btw. */
41 int dx, dy, dz;
42 int state;
43};
44
45class Mouse
46{
47public:
48
49 Mouse() : fAbsolute(false), fNeedsHostCursor(false), mpDrv(NULL), uHostCaps(0) {}
50
51 // IMouse methods
52 int PutMouseEvent(LONG dx, LONG dy, LONG dz, LONG buttonState);
53 int PutMouseEventAbsolute(LONG x, LONG y, LONG dz, LONG buttonState);
54
55 int setAbsoluteCoordinates(bool fAbsolute);
56 int setNeedsHostCursor(bool fNeedsHostCursor);
57#ifdef RT_OS_L4
58 // So far L4Con does not support an own mouse pointer.
59 bool getAbsoluteCoordinates() { return false; }
60#else
61 bool getAbsoluteCoordinates() { return fAbsolute; }
62#endif
63 bool getNeedsHostCursor() { return fNeedsHostCursor; }
64 int setHostCursor(bool enable);
65
66 static const PDMDRVREG DrvReg;
67
68private:
69
70 static DECLCALLBACK(void *) drvQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface);
71 static DECLCALLBACK(int) drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle, uint32_t fFlags);
72 static DECLCALLBACK(void) drvDestruct(PPDMDRVINS pDrvIns);
73
74 /** Guest supports absolute coordinates */
75 bool fAbsolute;
76 /** Guest is not able to draw a cursor itself */
77 bool fNeedsHostCursor;
78 /** Pointer to the associated mouse driver. */
79 struct DRVMAINMOUSE *mpDrv;
80 /** Host capabilities */
81 LONG uHostCaps;
82};
83
84extern Mouse *gMouse;
85
86#endif // ____H_MOUSEIMPL
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette