MouseScaffold.h
Go to the documentation of this file.
1 // This file is a part of the OpenSurgSim project.
2 // Copyright 2013, SimQuest Solutions Inc.
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 
16 #ifndef SURGSIM_DEVICES_MOUSE_MOUSESCAFFOLD_H
17 #define SURGSIM_DEVICES_MOUSE_MOUSESCAFFOLD_H
18 
19 #include <memory>
20 
22 
23 namespace SurgSim
24 {
25 
26 namespace DataStructures
27 {
28 class DataGroup;
29 }
30 
31 namespace Devices
32 {
33 class MouseDevice;
34 class OsgMouseHandler;
35 
39 {
40  friend class MouseDevice;
41  friend class MouseDeviceTest;
42  friend class OsgMouseHandler;
43 
44 public:
46  MouseScaffold();
47 
50 
54  static std::shared_ptr<MouseScaffold> getOrCreateSharedInstance();
55 
56 private:
58  struct DeviceData;
59 
64  bool registerDevice(MouseDevice* device);
68  bool unregisterDevice();
69 
77  bool updateDevice(int buttons, float x, float y, int scrollDeltaX, int scrollDeltaY);
78 
82 
85 
86 
88  std::shared_ptr<SurgSim::Framework::Logger> m_logger;
90  std::unique_ptr<DeviceData> m_device;
91 };
92 
93 }; // namespace Devices
94 }; // namespace SurgSim
95 
96 #endif // SURGSIM_DEVICES_MOUSE_MOUSESCAFFOLD_H
SurgSim::Devices::MouseScaffold::MouseDeviceTest
friend class MouseDeviceTest
Definition: MouseScaffold.h:41
SurgSim::Devices::MouseScaffold::getMouseHandler
OsgMouseHandler * getMouseHandler() const
Get mouse handler.
Definition: MouseScaffold.cpp:110
SurgSim::Devices::MouseScaffold::m_logger
std::shared_ptr< SurgSim::Framework::Logger > m_logger
Logger used by the scaffold and all devices.
Definition: MouseScaffold.h:88
SurgSim::Devices::MouseScaffold::~MouseScaffold
~MouseScaffold()
Destructor.
Definition: MouseScaffold.cpp:61
SurgSim::Devices::MouseDevice
A class implementing the communication with a mouse.
Definition: MouseDevice.h:53
SurgSim::Devices::MouseScaffold::m_device
std::unique_ptr< DeviceData > m_device
The mouse device managed by this scaffold.
Definition: MouseScaffold.h:90
SurgSim
Definition: CompoundShapeToGraphics.cpp:30
SurgSim::Devices::OsgMouseHandler
Definition: OsgMouseHandler.h:31
SurgSim::DataStructures::DataGroup
A collection of NamedData objects.
Definition: DataGroup.h:69
SurgSim::Devices::MouseScaffold::unregisterDevice
bool unregisterDevice()
Unregisters the specified device object.
Definition: MouseScaffold.cpp:84
SurgSim::Devices::MouseScaffold::buildDeviceInputData
static SurgSim::DataStructures::DataGroup buildDeviceInputData()
Builds the data layout for the application input (i.e. device output).
Definition: MouseScaffold.cpp:116
Logger.h
SurgSim::Devices::MouseScaffold::updateDevice
bool updateDevice(int buttons, float x, float y, int scrollDeltaX, int scrollDeltaY)
Updates the device information for a single device.
Definition: MouseScaffold.cpp:91
SurgSim::Devices::MouseScaffold
A class that implements the behavior of MouseDevice objects.
Definition: MouseScaffold.h:39
SurgSim::Devices::MouseScaffold::getOrCreateSharedInstance
static std::shared_ptr< MouseScaffold > getOrCreateSharedInstance()
Gets or creates the scaffold shared by all MouseDevice instances.
Definition: MouseScaffold.cpp:130
SurgSim::Devices::MouseScaffold::DeviceData
Struct to hold a MouseDevice object, a OsgMouseHandler, and a mutex for data passing.
Definition: MouseScaffold.cpp:35
MouseDevice
MouseDevice
Definition: CMakeLists.txt:35
SurgSim::Devices::MouseScaffold::registerDevice
bool registerDevice(MouseDevice *device)
Registers the specified device object.
Definition: MouseScaffold.cpp:70
SurgSim::Devices::MouseScaffold::MouseScaffold
MouseScaffold()
Constructor.
Definition: MouseScaffold.cpp:56