File: ccColorScaleEditorDlg.h

package info (click to toggle)
cloudcompare 2.10.1-2
  • links: PTS
  • area: main
  • in suites: buster
  • size: 55,916 kB
  • sloc: cpp: 219,837; ansic: 29,944; makefile: 67; sh: 45
file content (144 lines) | stat: -rw-r--r-- 4,331 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
//##########################################################################
//#                                                                        #
//#                              CLOUDCOMPARE                              #
//#                                                                        #
//#  This program is free software; you can redistribute it and/or modify  #
//#  it under the terms of the GNU General Public License as published by  #
//#  the Free Software Foundation; version 2 or later of the License.      #
//#                                                                        #
//#  This program is distributed in the hope that it will be useful,       #
//#  but WITHOUT ANY WARRANTY; without even the implied warranty of        #
//#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the          #
//#  GNU General Public License for more details.                          #
//#                                                                        #
//#          COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI)             #
//#                                                                        #
//##########################################################################

#ifndef CC_COLOR_SCALE_EDITOR_DLG_HEADER
#define CC_COLOR_SCALE_EDITOR_DLG_HEADER

#include <ui_colorScaleEditorDlg.h>

//local
#include "ccColorScaleEditorWidget.h"

//Qt
#include <QDialog>

class ccScalarField;
class ccColorScalesManager;
class ccMainAppInterface;

//! Dialog to edit/create color scales
class ccColorScaleEditorDialog : public QDialog, public Ui::ColorScaleEditorDlg
{
	Q_OBJECT

public:

	//! Default constructor
	ccColorScaleEditorDialog(	ccColorScalesManager* manager,
								ccMainAppInterface* mainApp,
								ccColorScale::Shared currentScale = ccColorScale::Shared(nullptr),
								QWidget* parent = nullptr);

	//! Destructor
	~ccColorScaleEditorDialog() override = default;

	//! Sets associated scalar field (optional)
	void setAssociatedScalarField(ccScalarField* sf);

	//! Sets active scale
	void setActiveScale(ccColorScale::Shared currentScale);

	//! Returns active scale
	ccColorScale::Shared getActiveScale() { return m_colorScale; }

protected slots:

	void colorScaleChanged(int);
	void relativeModeChanged(int);

	void onStepSelected(int);

	void onStepModified(int);

	void deletecSelectedStep();

	void changeSelectedStepColor();

	void changeSelectedStepValue(double);

	void onCustomLabelsListChanged();
	void toggleCustomLabelsList(bool);

	void copyCurrentScale();
	bool saveCurrentScale();
	void deleteCurrentScale();
	void renameCurrentScale();

	void exportCurrentScale();
	void importScale();

	void createNewScale();

	void onApply();
	void onClose();

protected:

	//! Updates main combox box with color scales manager
	void updateMainComboBox();

	//! Sets modification flag state
	void setModified(bool state);

	//! If the current scale has been modified, ask the user what to do
	/** \return whether user allows the change or not
	**/
	bool canChangeCurrentScale();

	//! Returns whether current edited scale is 'relative' (true) or 'absolute' (false)
	/** Warning: may not be the same state as the current scale (m_colorScale)
		If current modifications have not been saved yet!
	**/
	bool isRelativeMode() const;

	//! Sets current mode for active scale between 'relative' (true) or 'absolute' (false)
	/** Warning: may not be the same state as the current scale (m_colorScale)
		If current modifications have not been saved yet!
	**/
	void setScaleModeToRelative(bool isRelative);

	//! Checks the custom labels list
	bool checkCustomLabelsList(bool showWarnings);

	//! Exports the custom labels list
	bool exportCustomLabelsList(ccColorScale::LabelSet& labels);

	//! Color scale manager
	ccColorScalesManager* m_manager;

	//! Current active color scale
	ccColorScale::Shared m_colorScale;

	//! Color scale editor widget
	ccColorScaleEditorWidget* m_scaleWidget;

	//! Associated scalar field
	ccScalarField* m_associatedSF;

	//! Modification flag
	bool m_modified;

	//! Current min boundary for absolute scales
	double m_minAbsoluteVal;
	//! Current max boundary for absolute scales
	double m_maxAbsoluteVal;

	//! Associated application (interface)
	ccMainAppInterface* m_mainApp;
};

#endif //CC_COLOR_SCALE_EDITOR_DLG_HEADER