1 #ifndef VTESTBED_GUI_APPLICATIONBASE_HH 2 #define VTESTBED_GUI_APPLICATIONBASE_HH 4 #include <vtestbed/config/opencl.hh> 5 #include <vtestbed/core/macros.hh> 6 #include <vtestbed/core/policy.hh> 7 #include <vtestbed/gui/MagnumImgui/MagnumImGui.h> 8 #include <vtestbed/gui/types.hh> 9 #include <vtestbed/ini/ini_settings.hh> 11 #if defined(VTB_WITH_OPENCL) 12 #include <vtestbed/opencl/opencl.hh> 15 VTB_WARNING_IGNORE_PUSH(
"-Wnon-virtual-dtor")
24 using Policy = vtb::core::Policy;
26 #if defined(VTB_WITH_OPENCL) 32 #if defined(VTB_WITH_OPENCL) 33 opencl_context_type _opencl_context;
36 Object3D* _cameraObject;
38 Float _cameraTranslationDelta{10.f};
39 Float _cameraDistanceToObject{200.f};
40 Vector2i _previousMousePosition;
41 Policy _policy = Policy::OpenMP;
47 inline settings_type* settings_ptr() {
return &this->_settings; }
49 inline const settings_type& settings()
const {
return this->_settings; }
51 inline Policy policy()
const {
return this->_policy; }
52 #if defined(VTB_WITH_OPENCL) 53 inline opencl_context_type* opencl_context() {
return &this->_opencl_context; }
54 inline const opencl_context_type* opencl_context()
const {
return &this->_opencl_context; }
60 void initOpenGL(
const Configuration& conf);
65 void cameraTranslation(KeyEvent& event);
66 void cameraRotation(MouseMoveEvent& event);
70 void initImGui(MagnumImGui& imgui);
71 void enableDebugOutput();
72 inline Scene3D* scene() {
return &this->_scene; }
73 inline const Scene3D* scene()
const {
return &this->_scene; }
74 inline Camera3D* camera() {
return this->_camera; }
75 inline const Camera3D* camera()
const {
return this->_camera; }
76 inline Object3D* cameraObject() {
return this->_cameraObject; }
77 inline const Object3D* cameraObject()
const {
return this->_cameraObject; }
80 setCameraTranslationDelta(Float rhs) {
81 this->_cameraTranslationDelta = rhs;
84 void viewportEvent(
const Vector2i& size)
override;
85 void keyPressEvent(KeyEvent& event)
override;
86 void mouseMoveEvent(MouseMoveEvent& event)
override;
89 mousePressEvent(MouseEvent& event)
override {
90 this->_previousMousePosition =
event.position();
93 inline void keyReleaseEvent(KeyEvent& event)
override {}
94 inline void mouseReleaseEvent(MouseEvent& event)
override {}
95 inline void mouseScrollEvent(MouseScrollEvent& event)
override {}
96 inline void textInputEvent(TextInputEvent& event)
override {}
106 #endif // vim:filetype=cpp