VirtualBox

source: vbox/trunk/src/VBox/Main/include/MouseImpl.h@ 14959

Last change on this file since 14959 was 14949, checked in by vboxsync, 16 years ago

Appended vim modeline to set tabstop and expand tabs (in the way
suggested by our coding guidelines).

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.2 KB
Line 
1/* $Id: MouseImpl.h 14949 2008-12-03 15:17:16Z vboxsync $ */
2
3/** @file
4 *
5 * VirtualBox COM class implementation
6 */
7
8/*
9 * Copyright (C) 2006-2008 Sun Microsystems, Inc.
10 *
11 * This file is part of VirtualBox Open Source Edition (OSE), as
12 * available from http://www.virtualbox.org. This file is free software;
13 * you can redistribute it and/or modify it under the terms of the GNU
14 * General Public License (GPL) as published by the Free Software
15 * Foundation, in version 2 as it comes in the "COPYING" file of the
16 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
20 * Clara, CA 95054 USA or visit http://www.sun.com if you need
21 * additional information or have any questions.
22 */
23
24#ifndef ____H_MOUSEIMPL
25#define ____H_MOUSEIMPL
26
27#include "VirtualBoxBase.h"
28#include "ConsoleEvents.h"
29#include "ConsoleImpl.h"
30#include <VBox/pdmdrv.h>
31
32/** Simple mouse event class. */
33class MouseEvent
34{
35public:
36 MouseEvent() : dx(0), dy(0), dz(0), state(-1) {}
37 MouseEvent(int _dx, int _dy, int _dz, int _state) :
38 dx(_dx), dy(_dy), dz(_dz), state(_state) {}
39 bool isValid()
40 {
41 return state != -1;
42 }
43 // not logical to be int but that's how it's defined in QEMU
44 /** @todo r=bird: and what is the logical declaration then? We'll be using int32_t btw. */
45 int dx, dy, dz;
46 int state;
47};
48// template instantiation
49typedef ConsoleEventBuffer<MouseEvent> MouseEventBuffer;
50
51class ATL_NO_VTABLE Mouse :
52 public VirtualBoxBaseNEXT,
53 public VirtualBoxSupportErrorInfoImpl <Mouse, IMouse>,
54 public VirtualBoxSupportTranslation <Mouse>,
55 public IMouse
56{
57public:
58
59 VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (Mouse)
60
61 DECLARE_NOT_AGGREGATABLE(Mouse)
62
63 DECLARE_PROTECT_FINAL_CONSTRUCT()
64
65 BEGIN_COM_MAP(Mouse)
66 COM_INTERFACE_ENTRY(ISupportErrorInfo)
67 COM_INTERFACE_ENTRY(IMouse)
68 END_COM_MAP()
69
70 NS_DECL_ISUPPORTS
71
72 DECLARE_EMPTY_CTOR_DTOR (Mouse)
73
74 HRESULT FinalConstruct();
75 void FinalRelease();
76
77 // public initializer/uninitializer for internal purposes only
78 HRESULT init(Console *parent);
79 void uninit();
80
81 // IMouse properties
82 STDMETHOD(COMGETTER(AbsoluteSupported)) (BOOL *absoluteSupported);
83 STDMETHOD(COMGETTER(NeedsHostCursor)) (BOOL *needsHostCursor);
84
85 // IMouse methods
86 STDMETHOD(PutMouseEvent)(LONG dx, LONG dy, LONG dz,
87 LONG buttonState);
88 STDMETHOD(PutMouseEventAbsolute)(LONG x, LONG y, LONG dz,
89 LONG buttonState);
90
91 // for VirtualBoxSupportErrorInfoImpl
92 static const wchar_t *getComponentName() { return L"Mouse"; }
93
94 static const PDMDRVREG DrvReg;
95
96private:
97
98 static DECLCALLBACK(void *) drvQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface);
99 static DECLCALLBACK(int) drvConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle);
100 static DECLCALLBACK(void) drvDestruct(PPDMDRVINS pDrvIns);
101
102 const ComObjPtr <Console, ComWeakRef> mParent;
103 /** Pointer to the associated mouse driver. */
104 struct DRVMAINMOUSE *mpDrv;
105
106 LONG uHostCaps;
107};
108
109#endif // ____H_MOUSEIMPL
110/* vi: set tabstop=4 shiftwidth=4 expandtab: */
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