ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
VisualizerWithKeyCallback.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #include <map>
11 
13 
14 namespace cloudViewer {
15 namespace visualization {
16 
21 public:
22  typedef std::pair<int, std::function<bool(Visualizer *)>> KeyCallbackPair;
23 
24 public:
27  ~VisualizerWithKeyCallback() override;
30  delete;
31 
32 public:
33  void PrintVisualizerHelp() override;
34  void RegisterKeyCallback(int key,
35  std::function<bool(Visualizer *)> callback);
49  int key, std::function<bool(Visualizer *, int, int)> callback);
50 
60  std::function<bool(Visualizer *, double, double)> callback);
61 
71  std::function<bool(Visualizer *, double, double)> callback);
72 
83  std::function<bool(Visualizer *, int, int, int)> callback);
84 
85 protected:
86  void KeyPressCallback(GLFWwindow *window,
87  int key,
88  int scancode,
89  int action,
90  int mods) override;
91  void MouseMoveCallback(GLFWwindow *window, double x, double y) override;
92  void MouseScrollCallback(GLFWwindow *window, double x, double y) override;
93  void MouseButtonCallback(GLFWwindow *window,
94  int button,
95  int action,
96  int mods) override;
97  std::string PrintKeyToString(int key);
98 
99 protected:
100  std::map<int, std::function<bool(Visualizer *)>> key_to_callback_;
101  std::map<int, std::function<bool(Visualizer *, int, int)>>
103  std::function<bool(Visualizer *, double, double)> mouse_move_callback_;
104  std::function<bool(Visualizer *, double, double)> mouse_scroll_callback_;
105  std::function<bool(Visualizer *, int, int, int)> mouse_button_callback_;
106 };
107 
108 } // namespace visualization
109 } // namespace cloudViewer
std::function< void(std::shared_ptr< core::Tensor >)> callback
Visualizer with custom key callack capabilities.
void RegisterMouseScrollCallback(std::function< bool(Visualizer *, double, double)> callback)
void RegisterMouseMoveCallback(std::function< bool(Visualizer *, double, double)> callback)
VisualizerWithKeyCallback(const VisualizerWithKeyCallback &)=delete
std::map< int, std::function< bool(Visualizer *, int, int)> > key_action_to_callback_
std::pair< int, std::function< bool(Visualizer *)> > KeyCallbackPair
void MouseScrollCallback(GLFWwindow *window, double x, double y) override
std::function< bool(Visualizer *, int, int, int)> mouse_button_callback_
std::function< bool(Visualizer *, double, double)> mouse_scroll_callback_
void KeyPressCallback(GLFWwindow *window, int key, int scancode, int action, int mods) override
VisualizerWithKeyCallback & operator=(const VisualizerWithKeyCallback &)=delete
void RegisterKeyActionCallback(int key, std::function< bool(Visualizer *, int, int)> callback)
void MouseMoveCallback(GLFWwindow *window, double x, double y) override
std::function< bool(Visualizer *, double, double)> mouse_move_callback_
void RegisterMouseButtonCallback(std::function< bool(Visualizer *, int, int, int)> callback)
void MouseButtonCallback(GLFWwindow *window, int button, int action, int mods) override
std::map< int, std::function< bool(Visualizer *)> > key_to_callback_
void RegisterKeyCallback(int key, std::function< bool(Visualizer *)> callback)
The main Visualizer class.
Definition: Visualizer.h:45
Generic file read and write utility for python interface.