ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
qcc_db.cpp
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 #include <ecvAdvancedTypes.h>
9 #include <ecvColorTypes.h>
10 
11 #undef slots
12 #include <pybind11/pybind11.h>
13 
14 #include "../../cccorelib/src/wrappers.h"
15 
16 namespace py = pybind11;
17 using namespace pybind11::literals;
18 
19 void define_ccDrawableObject(py::module &);
20 void define_ccScalarField(py::module &);
21 void define_ccObject(py::module &);
22 void define_ccGenericPointCloud(py::module &);
23 void define_ccPointCloud(py::module &);
24 void define_ccGenericDisplayTools(py::module &);
25 void define_ccDisplayTools(py::module &);
26 void define_ccGenericMesh(py::module &);
27 void define_ccMesh(py::module &);
28 // void define_ccSerializableObject(py::module &);
29 // void define_ccSerializationHelper(py::module &);
30 // void define_ccMaterial(py::module &);
31 // void define_ccMaterialSet(py::module &);
32 void define_ccGBLSensor(py::module &);
33 void define_ccGenericPrimitive(py::module &);
34 void define_ccSphere(py::module &);
35 void define_ccGLMatrix(py::module &);
36 void define_ccIndexedTransformation(py::module &m);
37 void define_ccPlane(py::module &);
38 void define_ccTorus(py::module &);
39 void define_ccBox(py::module &);
40 void define_ccDish(py::module &);
41 void define_ccCone(py::module &);
42 void define_ccCylinder(py::module &);
43 void define_ccProgressDialog(py::module &);
44 void define_ccLog(py::module &);
45 void define_ccNormalVectors(py::module &);
46 void define_ccInteractor(py::module &);
47 void define_cc2DLabel(py::module &);
48 void define_ccViewPortParameters(py::module &);
49 void define_ccViewportObject(py::module &);
50 void define_ccBBox(py::module &);
51 void define_ccSensor(py::module &m);
52 void define_ccCameraSensor(py::module &);
53 void define_ccColorScale(py::module &);
54 void define_ccColorScalesManager(py::module &);
55 void define_ccWaveform(py::module &m);
56 void define_ccSubMesh(py::module &m);
57 void define_ccRasterGrid(py::module &m);
58 void define_ccQuadric(py::module &m);
59 void define_ccPolyline(py::module &m);
60 void define_ccCircle(py::module &m);
61 void define_ccDisc(py::module &m);
62 
63 template <class T> using observer_ptr = std::unique_ptr<T, py::nodelete>;
64 
65 #ifndef USE_EMBEDDED_MODULES
66 #include <pybind11/stl.h>
67 #include <pybind11/stl_bind.h>
68 #endif
69 
70 void define_qcc_db(py::module &m)
71 {
72  /**********************************
73  * qCC_db
74  **********************************/
75 
76  py::class_<ecvColor::Rgba>(m, "Rgba", R"doc(
77  RGBA color structure
78 )doc")
79  .def(py::init<>(), R"doc(Inits color to (0,0,0, 0))doc")
80  .def(py::init<ColorCompType, ColorCompType, ColorCompType, ColorCompType>(),
81  "r"_a,
82  "g"_a,
83  "b"_a,
84  "a"_a)
85  .def_readwrite("r", &ecvColor::Rgba::r)
86  .def_readwrite("g", &ecvColor::Rgba::g)
87  .def_readwrite("b", &ecvColor::Rgba::b)
88  .def_readwrite("a", &ecvColor::Rgba::a)
89  .def("__ne__", &ecvColor::Rgba::operator!=);
90 
91  py::class_<ecvColor::Rgb>(m, "Rgb", R"doc(
92  RGB color structure
93 )doc")
94  .def(py::init<>(), R"doc(Inits color to (0,0,0))doc")
95  .def(py::init<ColorCompType, ColorCompType, ColorCompType>(), "r"_a, "g"_a, "b"_a)
96  .def_readwrite("r", &ecvColor::Rgb::r)
97  .def_readwrite("g", &ecvColor::Rgb::g)
98  .def_readwrite("b", &ecvColor::Rgb::b)
99  .def("__ne__", &ecvColor::Rgb::operator!=);
100 
105 
107  define_ccObject(m);
108 
109  using VectorCompressedNormType = std::vector<CompressedNormType>;
110  using ccArrayCompressedNormType = ccArray<CompressedNormType, 1, CompressedNormType>;
111 
112  // FIXME: strange that this is needed when _not_ using embedded modules
113  // but breaks if present while using embedded modules
114 #ifndef USE_EMBEDDED_MODULES
115  py::bind_vector<VectorCompressedNormType>(
116  m, "_VectorCompressedNormType", py::module_local(true));
117 #endif
118 
119  // Cannot have CCShareable as we would require CCShareable holder, but
120  // VectorCompressedNormType does not have 'non-default holder type'.
121  // We need to do a proper ccArray wrapping
122  py::class_<ccArrayCompressedNormType,
123  VectorCompressedNormType,
124  // CCShareable,
125  ccHObject,
126  observer_ptr<ccArrayCompressedNormType>>(m, "_NormsIndexesArrayType");
127  // py::class_<NormsIndexesTableType, ccArrayCompressedNormType>(m, "NormsIndexesTableType")
128  // .def(py::init<>());
129 
131  define_ccMesh(m);
132  // define_ccSerializableObject(m);
133  // define_ccSerializationHelper(m);
134  // define_ccMaterial(m);
135  // define_ccMaterialSet(m);
137  define_ccSphere(m);
138  define_ccPlane(m);
139  define_ccTorus(m);
140  define_ccBox(m);
141  define_ccDish(m);
142  define_ccCone(m);
144  define_ccDisc(m);
145  define_ccQuadric(m);
146  define_cc2DLabel(m);
151  define_ccBBox(m);
152  define_ccSensor(m);
155  define_ccSubMesh(m);
161  define_ccCircle(m);
163 
164  define_ccLog(m);
166 
169 }
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
void define_ccGBLSensor(py::module &)
Definition: ccGBLSensor.cpp:18
void define_ccColorScalesManager(py::module &)
void define_ccMesh(py::module &)
Definition: ccMesh.cpp:20
void define_ccViewPortParameters(py::module &)
void define_ccGenericDisplayTools(py::module &)
void define_ccBBox(py::module &)
Definition: ccBBox.cpp:18
void define_ccDisplayTools(py::module &)
void define_ccQuadric(py::module &m)
Definition: ccQuadric.cpp:21
void define_ccGLMatrix(py::module &)
Definition: ccGLMatrix.cpp:121
void define_ccRasterGrid(py::module &m)
void define_ccSubMesh(py::module &m)
Definition: ccSubMesh.cpp:20
void define_ccIndexedTransformation(py::module &m)
void define_ccDish(py::module &)
Definition: ccDish.cpp:19
void define_ccDisc(py::module &m)
Definition: ccDisc.cpp:21
void define_qcc_db(py::module &m)
Definition: qcc_db.cpp:70
void define_ccProgressDialog(py::module &)
void define_ccInteractor(py::module &)
void define_ccCone(py::module &)
Definition: ccCone.cpp:19
void define_ccCircle(py::module &m)
Definition: ccCircle.cpp:21
void define_ccNormalVectors(py::module &)
void define_ccGenericMesh(py::module &)
void define_ccDrawableObject(py::module &)
void define_ccPolyline(py::module &m)
Definition: ccPolyline.cpp:21
void define_ccSensor(py::module &m)
Definition: ccSensor.cpp:19
void define_ccViewportObject(py::module &)
void define_ccGenericPointCloud(py::module &)
void define_ccWaveform(py::module &m)
Definition: ccWaveform.cpp:19
void define_ccPointCloud(py::module &)
void define_ccPlane(py::module &)
Definition: ccPlane.cpp:20
void define_ccColorScale(py::module &)
void define_ccCylinder(py::module &)
Definition: ccCylinder.cpp:20
void define_cc2DLabel(py::module &)
Definition: cc2DLabel.cpp:21
void define_ccCameraSensor(py::module &)
void define_ccObject(py::module &)
Definition: ccObject.cpp:77
void define_ccGenericPrimitive(py::module &)
void define_ccBox(py::module &)
Definition: ccBox.cpp:17
void define_ccScalarField(py::module &)
void define_ccTorus(py::module &)
Definition: ccTorus.cpp:19
void define_ccSphere(py::module &)
Definition: ccSphere.cpp:19
void define_ccLog(py::module &)
Definition: ccLog.cpp:20
std::unique_ptr< T, py::nodelete > observer_ptr
A unique_ptr that never free its ptr.
Definition: wrappers.h:24