ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvMeasurementTool.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 // LOCAL
11 #include <ecvOverlayDialog.h>
12 #include <ui_measurementToolDlg.h>
13 
14 // CV_DB_LIB
15 #include <ecvDisplayTools.h>
17 
18 // CV_PLUGIN_API
19 #include <ecvPickingListener.h>
20 
21 // SYSTEM
22 #include <vector>
23 
24 class ccHObject;
25 class ccPickingHub;
27 
30  public Ui::MeasurementToolDlg,
31  public ccPickingListener {
32  Q_OBJECT
33 
34 public:
36  explicit ecvMeasurementTool(QWidget* parent);
38  virtual ~ecvMeasurementTool();
39 
40  // inherited from ccOverlayDialog
41  virtual bool linkWith(QWidget* win) override;
42  virtual bool start() override;
43  virtual void stop(bool state) override;
44 
47 
49 
51  bool addAssociatedEntity(ccHObject* anObject);
52 
54  unsigned getNumberOfAssociatedEntity() const;
55 
56  inline ccHObject::Container getOutputs() const { return m_out_entities; }
57 
59  void onItemPicked(const PickedItem& pi) override;
60 
61 protected slots:
62  void reset();
63  void closeDialog();
65  void toggleWidget(bool state);
66  void exportMeasurement();
67  void onInstanceChanged(int index);
68  void addInstance();
69  void removeInstance();
70  void onPointPickingRequested(int pointIndex);
72  void onColorButtonClicked();
74 
75 protected:
78 
80  void updateUIFromTool();
81 
84 
87 
91 
94 
97 
101  void updateColorButtonAppearance(const QColor& color = QColor());
102 
107  void applyColorToAllTools(const QColor& color = QColor());
108 
111  void applyFontToTools();
112 
115 
117  QList<ecvGenericMeasurementTools*> m_toolInstances;
118 
120 
123 
125 
128 
131 
134 
137 
140 
143  QWidget* m_linkedWidget = nullptr;
144 };
char type
math::float4 color
#define slots
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
std::vector< ccHObject * > Container
Standard instances container (for children, etc.)
Definition: ecvHObject.h:337
Generic overlay dialog interface.
Point/triangle picking hub.
Definition: ecvPickingHub.h:29
Point/triangle picking listener interface.
A reusable font property widget matching ParaView's font editor style.
Generic Measurement Tools interface.
Dialog for managing measurement tools (Distance, Contour, Protractor)
bool m_updatingFromTool
Flag to prevent recursive updates.
ccHObject::Container getOutputs() const
ecvMeasurementTool(QWidget *parent)
Default constructor.
void setMeasurementTool(ecvGenericMeasurementTools *tool)
virtual void stop(bool state) override
Stops process/dialog.
void toggleWidget(bool state)
void onItemPicked(const PickedItem &pi) override
Inherited from ccPickingListener.
void updateResultDisplay()
Updates the measurement result display.
void releaseAssociatedEntities()
Releases all associated entities.
QList< ecvGenericMeasurementTools * > m_toolInstances
List of all measurement tool instances.
ecvGenericMeasurementTools * getMeasurementTool() const
virtual ~ecvMeasurementTool()
Default destructor.
void onInstanceChanged(int index)
void applyColorToAllTools(const QColor &color=QColor())
void switchToToolUI(ecvGenericMeasurementTools *tool)
Switches to the specified tool's UI.
ecvGenericMeasurementTools::MeasurementType m_measurementType
ecvGenericMeasurementTools * m_tool
Current measurement tool.
ccHObject::Container m_out_entities
void onPointPickingRequested(int pointIndex)
void updateInstancesComboBox()
Updates instances combo box.
void updateToolFromUI()
Updates tool from UI.
unsigned getNumberOfAssociatedEntity() const
Returns the current number of associated entities.
ccPickingHub * m_pickingHub
Picking hub for point selection.
int m_pickPointMode
Current point selection mode (0=none, 1=point1, 2=point2, 3=center)
bool addAssociatedEntity(ccHObject *anObject)
Adds an entity.
QColor m_currentColor
Current measurement color (default: green)
ecvGenericMeasurementTools * createMeasurementTool(ecvGenericMeasurementTools::MeasurementType type)
Creates a new measurement tool instance.
void updateUIFromTool()
Updates UI from current tool.
virtual bool start() override
Starts process.
void updateColorButtonAppearance(const QColor &color=QColor())
ccHObject m_entityContainer
Associated entities container.
virtual bool linkWith(QWidget *win) override
Links the overlay dialog with a MDI window.
ecvFontPropertyWidget * m_fontPropertyWidget
Font property widget.