ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvGenericMeasurementTools.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 
12 // QT
13 #include <QObject>
14 
15 class ccHObject;
16 class QWidget;
17 
19 class CV_DB_LIB_API ecvGenericMeasurementTools : public QObject {
20  Q_OBJECT
21 public:
22  enum MeasurementType { DISTANCE_WIDGET, CONTOUR_WIDGET, PROTRACTOR_WIDGET };
23 
25 
29  MeasurementType type = MeasurementType::DISTANCE_WIDGET);
30 
33 
35  virtual bool setInputData(ccHObject* entity) = 0;
36 
38  virtual bool start() = 0;
39 
41  virtual void reset() = 0;
42 
44  virtual void clear() = 0;
45 
47  virtual void update();
48 
50  virtual QWidget* getMeasurementWidget() = 0;
51 
53  virtual ccHObject* getOutput() const = 0;
54 
56  virtual double getMeasurementValue() const = 0;
57 
59  virtual void getPoint1(double pos[3]) const = 0;
60 
62  virtual void getPoint2(double pos[3]) const = 0;
63 
65  virtual void getCenter(double pos[3]) const = 0;
66 
68  virtual void setPoint1(double pos[3]) = 0;
69 
71  virtual void setPoint2(double pos[3]) = 0;
72 
74  virtual void setCenter(double pos[3]) = 0;
75 
77  virtual void setColor(double r, double g, double b) = 0;
78 
80  virtual void lockInteraction() = 0;
81 
83  virtual void unlockInteraction() = 0;
84 
86  virtual void setInstanceLabel(const QString& label) = 0;
87 
90  virtual void setFontFamily(const QString& family) = 0;
91 
93  virtual void setFontSize(int size) = 0;
94 
96  virtual void setBold(bool bold) = 0;
97 
99  virtual void setItalic(bool italic) = 0;
100 
102  virtual void setShadow(bool shadow) = 0;
103 
105  virtual void setFontOpacity(double opacity) = 0;
106 
108  virtual void setFontColor(double r, double g, double b) = 0;
109 
112  virtual void setHorizontalJustification(const QString& justification) = 0;
113 
116  virtual void setVerticalJustification(const QString& justification) = 0;
117 
119  virtual void setupShortcuts(QWidget* win) { Q_UNUSED(win); }
120 
122  virtual void disableShortcuts() {}
123 
125  virtual void clearPickingCache() {}
126 
127 public:
128  inline MeasurementType getMeasurementType() { return m_measurementType; }
129 
130 signals:
133 
136  void pointPickingRequested(int pointIndex);
137 
140 
141 protected:
142  virtual void initialize() = 0;
143 
146 };
#define CV_DB_LIB_API
Definition: CV_db.h:15
int size
char type
#define signals
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
Generic Measurement Tools interface.
virtual ccHObject * getOutput() const =0
Returns the output (if any)
virtual void getCenter(double pos[3]) const =0
Get center point coordinates (for angle/protractor)
virtual void lockInteraction()=0
Lock tool interaction (disable VTK widget and UI controls)
virtual void setFontColor(double r, double g, double b)=0
Set font color for measurement labels (RGB values 0.0-1.0)
virtual void reset()=0
Resets the measurement tool.
virtual bool setInputData(ccHObject *entity)=0
Sets the input entity.
void pointPickingCancelled()
Signal sent when point picking is cancelled.
virtual void setFontFamily(const QString &family)=0
virtual void setupShortcuts(QWidget *win)
Setup keyboard shortcuts bound to the render window widget.
virtual void setVerticalJustification(const QString &justification)=0
virtual void getPoint1(double pos[3]) const =0
Get point 1 coordinates.
virtual void update()
Updates the display.
virtual void setItalic(bool italic)=0
Set font italic state for measurement labels.
virtual void setColor(double r, double g, double b)=0
Set measurement color (RGB values in range [0.0, 1.0])
virtual void setPoint2(double pos[3])=0
Set point 2 coordinates.
ecvGenericMeasurementTools(MeasurementType type=MeasurementType::DISTANCE_WIDGET)
Default constructor.
virtual QWidget * getMeasurementWidget()=0
Returns the measurement widget.
virtual void getPoint2(double pos[3]) const =0
Get point 2 coordinates.
virtual void setHorizontalJustification(const QString &justification)=0
virtual bool start()=0
Starts the measurement tool.
virtual void setFontOpacity(double opacity)=0
Set font opacity for measurement labels (0.0 to 1.0)
virtual void unlockInteraction()=0
Unlock tool interaction (enable VTK widget and UI controls)
virtual void initialize()=0
virtual void clearPickingCache()
Clear picking cache (called when scene/camera changes)
virtual void setFontSize(int size)=0
Set font size for measurement labels.
virtual ~ecvGenericMeasurementTools()
Destructor.
virtual void setBold(bool bold)=0
Set font bold state for measurement labels.
void pointPickingRequested(int pointIndex)
virtual void setShadow(bool shadow)=0
Set font shadow state for measurement labels.
virtual void disableShortcuts()
Disable keyboard shortcuts (called before tool destruction)
void measurementChanged()
Signal sent when the measurement changes.
virtual double getMeasurementValue() const =0
Get measurement value (distance or angle)
virtual void clear()=0
Clears the measurement tool.
virtual void setInstanceLabel(const QString &label)=0
Set instance label suffix (e.g., "#1", "#2") for display in 3D view.
virtual void setPoint1(double pos[3])=0
Set point 1 coordinates.
virtual void setCenter(double pos[3])=0
Set center point coordinates (for angle/protractor)