Tissue Forge C++ 0.2.1
Interactive, particle-based physics, chemistry and biology modeling and simulation environment
Loading...
Searching...
No Matches
tfKeyEvent.h
1/*******************************************************************************
2 * This file is part of Tissue Forge.
3 * Copyright (c) 2022-2024 T.J. Sego
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published
7 * by the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 ******************************************************************************/
19
20#ifndef _SOURCE_RENDERING_TFKEYEVENT_H_
21#define _SOURCE_RENDERING_TFKEYEVENT_H_
22
23#include <Magnum/Platform/GlfwApplication.h>
24#include <tf_port.h>
25
26
27namespace TissueForge {
28
29
30 namespace event {
31
32
33 struct KeyEvent;
34
35 using KeyEventDelegateType = HRESULT (*)(Magnum::Platform::GlfwApplication::KeyEvent*);
36 using KeyEventHandlerType = HRESULT (*)(struct KeyEvent*);
37
38 typedef size_t KeyEventDelegateHandle;
39 typedef size_t KeyEventHandlerHandle;
40
41 struct CAPI_EXPORT KeyEvent
42 {
43 Magnum::Platform::GlfwApplication::KeyEvent *glfw_event;
44
45 KeyEvent(Magnum::Platform::GlfwApplication::KeyEvent *glfw_event=NULL) : glfw_event(glfw_event) {}
46
47 HRESULT invoke();
48 static HRESULT invoke(Magnum::Platform::GlfwApplication::KeyEvent &ke);
49
56 static KeyEventDelegateHandle addDelegate(KeyEventDelegateType *_delegate);
57
64 static KeyEventHandlerHandle addHandler(KeyEventHandlerType *_handler);
65
72 static KeyEventDelegateType *getDelegate(const KeyEventDelegateHandle &handle);
73
80 static KeyEventHandlerType *getHandler(const KeyEventHandlerHandle &handle);
81
89 static bool removeDelegate(const KeyEventDelegateHandle &handle);
90
98 static bool removeHandler(const KeyEventHandlerHandle &handle);
99
100 std::string keyName();
101 bool keyAlt();
102 bool keyCtrl();
103 bool keyShift();
104 };
105
106}}
107
108#endif // _SOURCE_RENDERING_TFKEYEVENT_H_
Tissue Forge event system.
Definition tfEvent.h:34
Include Python header, disable linking to pythonX_d.lib on Windows in debug mode.
Definition tfAngleConfig.h:26
Definition tfKeyEvent.h:42
static KeyEventDelegateHandle addDelegate(KeyEventDelegateType *_delegate)
Adds an event delegate.
static bool removeHandler(const KeyEventHandlerHandle &handle)
Remove an event handler.
static bool removeDelegate(const KeyEventDelegateHandle &handle)
Remove an event delegate.
static KeyEventHandlerType * getHandler(const KeyEventHandlerHandle &handle)
Get an event handler.
static KeyEventHandlerHandle addHandler(KeyEventHandlerType *_handler)
Adds an event handler.
static KeyEventDelegateType * getDelegate(const KeyEventDelegateHandle &handle)
Get an event delegate.
int32_t HRESULT
Definition tf_port.h:255