ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvColorFromScalarDlg.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 // Qt
11 #include <QColor>
12 
13 // CC
14 #include <ecvColorScale.h>
15 #include <ecvHistogramWindow.h>
16 #include <ecvScalarField.h>
17 
18 class ccPointCloud;
19 
20 namespace Ui {
21 class ColorFromScalarDialog;
22 }
23 
25 class ccColorFromScalarDlg : public QDialog {
26  Q_OBJECT
27 
28 public:
30  ccColorFromScalarDlg(QWidget* parent, ccPointCloud* pointCloud);
31 
33 
34  static constexpr int c_channelCount = 4;
35  void refreshDisplay();
36  // update and redraw histograms
37  void updateHistogram(int);
38 
39 protected:
40  // events to set scalar fields
41  void onChannelChangedR(int) { updateChannel(0); }
42  void onChannelChangedG(int) { updateChannel(1); }
43  void onChannelChangedB(int) { updateChannel(2); }
44  void onChannelChangedA(int) { updateChannel(3); }
45  void updateChannel(int);
46  void updateSpinBoxLimits(int);
48  void updateColormaps();
49  // mapping ranges changed
50  void minChangedR(double val) { minChanged(0, val, true); }
51  void maxChangedR(double val) { maxChanged(0, val, true); }
52  void minChangedG(double val) { minChanged(1, val, true); }
53  void maxChangedG(double val) { maxChanged(1, val, true); }
54  void minChangedB(double val) { minChanged(2, val, true); }
55  void maxChangedB(double val) { maxChanged(2, val, true); }
56  void minChangedA(double val) { minChanged(3, val, true); }
57  void maxChangedA(double val) { maxChanged(3, val, true); }
58  void minSpinChangedR(double val) { minChanged(0, val, false); }
59  void maxSpinChangedR(double val) { maxChanged(0, val, false); }
60  void minSpinChangedG(double val) { minChanged(1, val, false); }
61  void maxSpinChangedG(double val) { maxChanged(1, val, false); }
62  void minSpinChangedB(double val) { minChanged(2, val, false); }
63  void maxSpinChangedB(double val) { maxChanged(2, val, false); }
64  void minSpinChangedA(double val) { minChanged(3, val, false); }
65  void maxSpinChangedA(double val) { maxChanged(3, val, false); }
66  void toggleFixedR() { updateChannel(0); }
67  void toggleFixedG() { updateChannel(1); }
68  void toggleFixedB() { updateChannel(2); }
69  void toggleFixedA() { updateChannel(3); }
70  void toggleColors(int val);
71  void toggleColorMode(bool state);
72  void minChanged(int n, double val, bool slider);
73  void maxChanged(int n, double val, bool slider);
74  // done!
75  void onApply();
76  void disableAllButCancel();
77 
78 protected:
79  void resizeEvent(QResizeEvent* event);
82  ccHistogramWindow* m_histograms[c_channelCount]; // 0 - red, 1 - green, 2 -
83  // blue, 3 - alpha
84  // scalar fields
85  ccScalarField* m_scalars[c_channelCount]; // 0 - red, 1 - green, 2 - blue,
86  // 3 - alpha
87  // gui elements
88  QComboBox* m_combos[c_channelCount];
89  QDoubleSpinBox* m_boxes_min[c_channelCount];
90  QDoubleSpinBox* m_boxes_max[c_channelCount];
94  // saturation values
105  // set true when catastrophic failure has occured
107 
108 private:
109  Ui::ColorFromScalarDialog* m_ui;
110 };
MouseEvent event
Dialog to change the color levels.
QDoubleSpinBox * m_boxes_min[c_channelCount]
ccColorScale::Shared m_storedOrigColorScale
Associated point cloud scalar field original scale (to restore on exit)
QLabel * m_labels_max[c_channelCount]
void minSpinChangedG(double val)
void minChanged(int n, double val, bool slider)
void maxSpinChangedA(double val)
void minChangedR(double val)
void minSpinChangedA(double val)
void maxSpinChangedG(double val)
void maxChangedB(double val)
void minChangedB(double val)
void toggleColorMode(bool state)
void maxChangedG(double val)
void maxChanged(int n, double val, bool slider)
void maxSpinChangedB(double val)
ccHistogramWindow * m_histograms[c_channelCount]
Associated histogram view.
double m_maxSat[c_channelCount]
void minSpinChangedR(double val)
ccColorScale::Shared m_colors[c_channelCount]
Associated colour scales.
QCheckBox * m_reverse[c_channelCount]
QLabel * m_labels_min[c_channelCount]
void maxChangedR(double val)
ccScalarField * m_scalars[c_channelCount]
static constexpr int c_channelCount
ccScalarField::Range m_storedOrigSatRange
void minSpinChangedB(double val)
void maxChangedA(double val)
void minChangedG(double val)
void minChangedA(double val)
bool m_prevFixed[c_channelCount]
QDoubleSpinBox * m_boxes_max[c_channelCount]
QComboBox * m_combos[c_channelCount]
ccScalarField::Range m_storedOrigDisplayRange
void resizeEvent(QResizeEvent *event)
ccColorFromScalarDlg(QWidget *parent, ccPointCloud *pointCloud)
Default constructor.
ccPointCloud * m_cloud
Associated point cloud (color source)
double m_minSat[c_channelCount]
void maxSpinChangedR(double val)
QSharedPointer< ccColorScale > Shared
Shared pointer type.
Definition: ecvColorScale.h:74
Histogram widget.
A 3D cloud and its associated features (color, normals, scalar fields, etc.)
Scalar field range structure.
A scalar field associated to display-related parameters.