ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cvContourTool.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 
11 #include "ui_cvContourToolDlg.h"
12 
13 class vtkContourWidget;
14 class vtkPolyData;
15 
16 #include <map>
17 
19  Q_OBJECT
20 
21 public:
22  explicit cvContourTool(QWidget* parent = nullptr);
23  ~cvContourTool() override;
24 
25  virtual void start() override;
26  virtual void reset() override;
27  virtual void showWidget(bool state) override;
28  virtual ccHObject* getOutput() override;
29  virtual void setColor(double r, double g, double b) override;
30  virtual bool getColor(double& r, double& g, double& b) const override;
31  virtual void lockInteraction() override;
32  virtual void unlockInteraction() override;
33  virtual void setInstanceLabel(const QString& label) override;
34 
35 protected:
36  virtual void initTool() override;
37  virtual void createUi() override;
38 
39 private slots:
40  void onDataChanged(vtkPolyData* pd);
41  void on_widgetVisibilityCheckBox_toggled(bool checked);
42  void on_showNodesCheckBox_toggled(bool checked);
43  void on_closedLoopCheckBox_toggled(bool checked);
44  void on_lineWidthSpinBox_valueChanged(double value);
45 
46 private:
47  void createNewContour();
48 
49 private:
50  Ui::ContourToolDlg* m_configUi = nullptr;
51  // Map of ID to ContourWidget
52  std::map<int, vtkSmartPointer<vtkContourWidget>> m_contours;
53  int m_currentContourId = -1;
54 
55  // Static counter for contour IDs (global)
56  static int s_contourIdCounter;
57 
58  // Instance ID for this tool
59  int m_toolId;
60 
61  // Export counter
62  int m_exportCounter;
63 
65  double m_currentColor[3] = {0.0, 1.0, 0.0}; // Default green
66 
68  QString m_instanceLabel;
69 
72  void applyFontProperties() override;
73 };
#define slots
Hierarchical CLOUDVIEWER Object.
Definition: ecvHObject.h:25
virtual void createUi() override
virtual void start() override
~cvContourTool() override
virtual void reset() override
virtual void initTool() override
virtual void setColor(double r, double g, double b) override
Set measurement color (RGB values in range [0.0, 1.0])
virtual ccHObject * getOutput() override
cvContourTool(QWidget *parent=nullptr)
virtual void unlockInteraction() override
Unlock tool interaction (enable VTK widget interaction and UI controls)
virtual bool getColor(double &r, double &g, double &b) const override
virtual void lockInteraction() override
Lock tool interaction (disable VTK widget interaction and UI controls)
virtual void setInstanceLabel(const QString &label) override
Set instance label suffix (e.g., "#1", "#2") for display in 3D view.
virtual void showWidget(bool state) override