ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
visualization_trampoline.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 // clang-format off
11 #include "visualization/visualizer/Visualizer.h" // must include first
13 // clang-format on
14 
16 
17 using namespace cloudViewer;
18 
19 template <class VisualizerBase = visualization::Visualizer>
20 class PyVisualizer : public VisualizerBase {
21 public:
22  using VisualizerBase::VisualizerBase;
23  bool AddGeometry(std::shared_ptr<const ccHObject> geometry_ptr,
24  bool reset_bounding_box = true) override {
25  PYBIND11_OVERLOAD(bool, VisualizerBase, AddGeometry, geometry_ptr);
26  }
28  std::shared_ptr<const ccHObject> geometry_ptr = nullptr) override {
29  PYBIND11_OVERLOAD(bool, VisualizerBase, UpdateGeometry, );
30  }
31  bool HasGeometry() const override {
32  PYBIND11_OVERLOAD(bool, VisualizerBase, HasGeometry, );
33  }
34  void UpdateRender() override {
35  PYBIND11_OVERLOAD(void, VisualizerBase, UpdateRender, );
36  }
37  void PrintVisualizerHelp() override {
38  PYBIND11_OVERLOAD(void, VisualizerBase, PrintVisualizerHelp, );
39  }
40  void UpdateWindowTitle() override {
41  PYBIND11_OVERLOAD(void, VisualizerBase, UpdateWindowTitle, );
42  }
43  void BuildUtilities() override {
44  PYBIND11_OVERLOAD(void, VisualizerBase, BuildUtilities, );
45  }
46 };
47 
48 template <class ViewControlBase = visualization::ViewControl>
49 class PyViewControl : public ViewControlBase {
50 public:
51  using ViewControlBase::ViewControlBase;
52  void Reset() override { PYBIND11_OVERLOAD(void, ViewControlBase, Reset, ); }
53  void ChangeFieldOfView(double step) override {
54  PYBIND11_OVERLOAD(void, ViewControlBase, ChangeFieldOfView, step);
55  }
56  void ChangeWindowSize(int width, int height) override {
57  PYBIND11_OVERLOAD(void, ViewControlBase, ChangeWindowSize, width,
58  height);
59  }
60  void Scale(double scale) override {
61  PYBIND11_OVERLOAD(void, ViewControlBase, Scale, scale);
62  }
63  void Rotate(double x, double y, double xo, double yo) override {
64  PYBIND11_OVERLOAD(void, ViewControlBase, Rotate, x, y, xo, yo);
65  }
66  void Translate(double x, double y, double xo, double yo) override {
67  PYBIND11_OVERLOAD(void, ViewControlBase, Translate, x, y, xo, yo);
68  }
69 };
int width
int height
void Reset(void)
void Scale(double scale) override
void Rotate(double x, double y, double xo, double yo) override
Function to process rotation.
void Translate(double x, double y, double xo, double yo) override
Function to process translation.
void Reset() override
void ChangeWindowSize(int width, int height) override
void ChangeFieldOfView(double step) override
bool UpdateGeometry(std::shared_ptr< const ccHObject > geometry_ptr=nullptr) override
Function to update geometry.
void PrintVisualizerHelp() override
void UpdateRender() override
Function to inform render needed to be updated.
void UpdateWindowTitle() override
void BuildUtilities() override
bool AddGeometry(std::shared_ptr< const ccHObject > geometry_ptr, bool reset_bounding_box=true) override
Function to add geometry to the scene and create corresponding shaders.
bool HasGeometry() const override
Generic file read and write utility for python interface.