ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvGenericFiltersTool.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 "CV_db.h"
11 #include "ecvBBox.h"
12 
13 // QT
14 #include <QFile>
15 #include <QObject>
16 
17 class ccHObject;
18 class ccPolyline;
20 
22 class CV_DB_LIB_API ecvGenericFiltersTool : public QObject {
23  Q_OBJECT
24 public:
25  enum FilterType {
34  GLYPH_FILTER
35  };
36 
38 
41  ecvGenericFiltersTool(FilterType mode = FilterType::CLIP_FILTER);
42 
44  virtual ~ecvGenericFiltersTool() = default;
45 
46  virtual void showInteractor(bool state) = 0;
47  virtual bool setInputData(ccHObject* entity, int viewport = 0) = 0;
48  virtual void unregisterFilter() = 0;
49 
50  virtual void intersectMode() = 0;
51  virtual void unionMode() = 0;
52  virtual void trimMode() = 0;
53  virtual void resetMode() = 0;
54 
55 public:
56  virtual bool start() = 0;
57  virtual void reset() = 0;
58  virtual void restore() = 0;
59 
60  virtual void clear() = 0;
61  virtual void update();
62  virtual void getOutput(std::vector<ccHObject*>& outputSlices,
63  std::vector<ccPolyline*>& outputContours) const = 0;
64  virtual ccHObject* getOutput() const = 0;
65 
66  virtual void setNegative(bool state) = 0;
67 
69  virtual void showOutline(bool state) = 0;
70 
71  virtual QWidget* getFilterWidget() = 0;
72 
74  virtual const ccBBox& getBox() = 0;
75 
77  virtual void setBox(const ccBBox& box) = 0;
78 
80  virtual void shift(const CCVector3& v) = 0;
81 
83  virtual void set(const ccBBox& extents,
84  const ccGLMatrix& transformation) = 0;
85  virtual void get(ccBBox& extents, ccGLMatrix& transformation) = 0;
86 
87 signals:
89  void boxModified(const ccBBox* box);
90 
91 public:
92  inline FilterType getFilterType() { return m_filterType; }
93 
94 protected:
96 
99  virtual bool buildUp() { return true; }
100 
101  virtual void initialize(ecvGenericVisualizer3D* viewer = nullptr) = 0;
102 
103  bool m_showOutline = false;
104 
106 
109 };
#define CV_DB_LIB_API
Definition: CV_db.h:15
#define signals
Bounding box structure.
Definition: ecvBBox.h:25
Float version of ccGLMatrixTpl.
Definition: ecvGLMatrix.h:19
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
Colored polyline.
Definition: ecvPolyline.h:24
Generic Filters Tool interface.
virtual void showOutline(bool state)=0
Whether to show the box or not.
virtual bool start()=0
virtual ccHObject * getOutput() const =0
virtual void unregisterFilter()=0
ecvGenericFiltersTool(FilterType mode=FilterType::CLIP_FILTER)
Default constructor.
virtual void reset()=0
virtual ~ecvGenericFiltersTool()=default
Desctructor.
virtual void unionMode()=0
virtual void clear()=0
virtual const ccBBox & getBox()=0
Returns the box extents.
virtual void set(const ccBBox &extents, const ccGLMatrix &transformation)=0
Manually sets the box parameters.
virtual bool setInputData(ccHObject *entity, int viewport=0)=0
virtual void initialize(ecvGenericVisualizer3D *viewer=nullptr)=0
virtual void setNegative(bool state)=0
virtual void intersectMode()=0
virtual bool buildUp()
Builds primitive.
virtual void restore()=0
virtual void update()
virtual void getOutput(std::vector< ccHObject * > &outputSlices, std::vector< ccPolyline * > &outputContours) const =0
void boxModified(const ccBBox *box)
Signal sent each time the box is modified.
virtual void setBox(const ccBBox &box)=0
Sets the box extents.
virtual QWidget * getFilterWidget()=0
virtual void shift(const CCVector3 &v)=0
Shifts the current box.
virtual void resetMode()=0
virtual void showInteractor(bool state)=0
virtual void trimMode()=0
virtual void get(ccBBox &extents, ccGLMatrix &transformation)=0
Generic visualizer 3D interface.