ImageD  v2_7_5 (24.06.22)
ImageD is an image processing software designed for rapid prototyping and implementing algorithms and solutions for science, research and teaching.
d_viewer_3d.h
Go to the documentation of this file.
1 /************************************
2  * added: 11.08.2021 *
3  * author: David Eilenstein *
4  * contact: D.Eilenstein@gsi.de *
5  * project: ImageD *
6  * facility: GSI Darmstadt, Ger *
7  ************************************/
8 
9 #ifndef D_VIEWER_3D_H
10 #define D_VIEWER_3D_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_error_handler.h>
15 #include <d_visdat_obj.h>
16 #include <d_visdat_proc.h>
17 #include <d_viewer.h>
18 #include <d_videowriter.h>
19 
20 //general
21 #include <iostream>
22 #include <vector>
23 
24 //Qt
25 #include <QWidget>
26 #include <QObject>
27 #include <QString>
28 #include <QDebug>
29 #include <QMessageBox>
30 #include <QFileDialog>
31 #include <QColorDialog>
32 #include <QFileInfo>
33 #include <QInputDialog>
34 #include <QDir>
35 #include <QElapsedTimer>
36 #include <QScrollBar>
37 #include <QGridLayout>
38 #include <QVBoxLayout>
39 #include <QHBoxLayout>
40 #include <QPushButton>
41 #include <QGroupBox>
42 #include <QCheckBox>
43 #include <QComboBox>
44 #include <QGraphicsView>
45 #include <QLabel>
46 #include <QSpinBox>
47 #include <QDoubleSpinBox>
48 #include <QSpacerItem>
49 #include <QWidget>
50 #include <QtCore/qmath.h>
51 #include <QtCore/qrandom.h>
52 #include <QtWidgets/QComboBox>
53 #include <QLabel>
54 #include <d_popup_listselect.h>
55 #include <d_storage.h>
56 
57 //Qt-Datavisualization
58 #include <QtDataVisualization>
59 #include <QtDataVisualization/q3dscatter.h>
60 #include <QtDataVisualization/qabstract3dseries.h>
61 #include <QtDataVisualization/qscatterdataproxy.h>
62 #include <QtDataVisualization/qvalue3daxis.h>
63 #include <QtDataVisualization/q3dscene.h>
64 #include <QtDataVisualization/q3dcamera.h>
65 #include <QtDataVisualization/qscatter3dseries.h>
66 #include <QtDataVisualization/q3dtheme.h>
67 #include <QtDataVisualization/QSurface3DSeries>
68 #include <QtDataVisualization/Q3DSurface>
69 #include <QtDataVisualization/QSurfaceDataProxy>
70 #include <QtDataVisualization/QSurfaceDataArray>
71 #include <QtDataVisualization/QCustom3DVolume>
72 
73 //openCV
74 #include <opencv2/core/core.hpp>
75 #include <opencv2/highgui/highgui.hpp>
76 #include <opencv2/imgproc/imgproc.hpp>
77 
78 //namespaces
79 using namespace std;
80 //using namespace cv; (prohibited because of ambigous names with qtdatavisualization)
81 #include <d_opencv_typedefs.h>
82 using namespace QtDataVisualization;
83 
84 class D_Viewer_3D : public QWidget
85 {
86  Q_OBJECT
87 
88 public:
89  D_Viewer_3D();
90  D_Viewer_3D(QGridLayout *target_layout);
91  ~D_Viewer_3D();
92 
93  //init
94  void init(QGridLayout *target_layout);
95 
96 public slots:
97 
98  //clear
99  void clear_graph();
100 
101  //update
102  int Update_Graph();
103  int Update_Slices();
104 
105  //set VD
106  int set_VisDat(D_VisDat_Obj *pVD_toShow);
107 
108  //vis trafo
109  void Set_VisTrafo_ActiveInt (int active = 1) {Set_VisTrafo_ActiveBool(active);}
110  void Set_VisTrafo_ActiveBool (bool active = true) {vis_trafo_active = active; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_ActiveBool(active); Update_Graph();}
111  void Set_VisTrafo_Gamma (double gamma = 1) {vis_trafo_gamma = gamma; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Gamma(gamma); Update_Graph();}
112  void Set_VisTrafo_SpreadInMin(double spread_min = 0) {vis_trafo_in_min = spread_min; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_SpreadInMin(spread_min); Update_Graph();}
113  void Set_VisTrafo_SpreadInMax(double spread_max = 255) {vis_trafo_in_max = spread_max; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_SpreadInMax(spread_max); Update_Graph();}
114  void Set_VisTrafo_Center (double center = 0) {vis_trafo_center = center; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Center(center); Update_Graph();}
115  void Set_VisTrafo_Divisor (double divisor = 0) {vis_trafo_divisor = divisor; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Divisor(divisor); Update_Graph();}
116  void Set_VisTrafo_Anchor (double anchor = 127.5) {vis_trafo_anchor = anchor; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Anchor(anchor); Update_Graph();}
117  void Set_VisTrafo_Range (double range = 127.5) {vis_trafo_range = range; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Range(range); Update_Graph();}
118  void Set_VisTrafo_Mode_Crop (int mode = c_VIS_TRAFO_CROP_DYNAMIC) {vis_trafo_mode_crop = mode; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Mode_Crop(mode); Update_Graph();}
119  void Set_VisTrafo_Mode_Trafo (int mode = c_VIS_TRAFO_LINEAR) {vis_trafo_mode_trafo = mode; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Mode_Trafo(mode); Update_Graph();}
120  void Set_VisTrafo_Mode_Anchor(int mode = c_VIS_TRAFO_ANCHOR_DYNAMIC) {vis_trafo_mode_anchor = mode; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Mode_Anchor(mode); Update_Graph();}
121  void Set_VisTrafo_Mode_Range (int mode = c_VIS_TRAFO_RANGE_DYNAMIC) {vis_trafo_mode_range = mode; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Mode_Range(mode); Update_Graph();}
122  void Set_VisTrafo_Mode_Complex(int mode = c_COMPLEX2REAL_RE_IM) {vis_trafo_mode_complex = mode; for(int i = 0; i < SLICE_2D_NUMBER_OF; i++) vViewer_Slices2D[i]->Set_VisTrafo_Mode_Complex(mode); Update_Graph();}
123 
124  void Set_StoragePointer(D_Storage *pStorage, int index_dir2use) {pStore = pStorage; default_dir_index = index_dir2use; state_default_dir = true;}
125 
126  void Set_Volume(size_t volume_index) {if(state_ui_init && volume_index < c_VOLUME_NUMBER_OF) ui_ComboBox_Volume->setCurrentIndex(volume_index);}
127  void Set_backgroundColor(QColor color) {change_graph_background_color(color);}
128  void Set_AlphaMode(size_t alpha_mode) {if(state_ui_init && alpha_mode < c_VIEWER_3D_ALPHA_NUMBER_OF) ui_ComboBox_AlphaMode->setCurrentIndex(alpha_mode);}
129 
130  int Volume() {return volume_index_current;}
131  int Dim_extended0() {return v_dims_extended.size() == 3 ? v_dims_extended[0] : -1;}
132  int Dim_extended1() {return v_dims_extended.size() == 3 ? v_dims_extended[1] : -1;}
133  int Dim_extended2() {return v_dims_extended.size() == 3 ? v_dims_extended[2] : -1;}
134  vector<int> Dims_extended() {return v_dims_extended;}
135  bool Dim_is_extended(int d) {return (d == Dim_extended0()) || (d == Dim_extended1()) || (d == Dim_extended2());}
136  int Dim_fix0() {return v_dims_fix.size() == 3 ? v_dims_fix[0] : -1;}
137  int Dim_fix1() {return v_dims_fix.size() == 3 ? v_dims_fix[1] : -1;}
138  int Dim_fix2() {return v_dims_fix.size() == 3 ? v_dims_fix[2] : -1;}
139  vector<int> Dims_fix() {return v_dims_fix;}
140  int Dim_is_fix(int d) {return !Dim_is_extended(d);}
141  int Plane_SliceXY() {return D_VisDat_Proc::PlaneFromDims(Dim_extended0(), Dim_extended1());}
142  int Plane_SliceXZ() {return D_VisDat_Proc::PlaneFromDims(Dim_extended0(), Dim_extended2());}
143  int Plane_SliceYZ() {return D_VisDat_Proc::PlaneFromDims(Dim_extended1(), Dim_extended2());}
144 
145  int Save(QString QS_Save);
146  int SaveVideo_SliceDim();
147  int SaveVideo_CameraRotationFull();
148  int TakeFrames_CameraRotationFull(vector<Mat> *pvMA_ViewsOut, size_t n_frames = 360);
149  int TakeFrames_SliceDim(vector<Mat> *pvMA_ViewsOut, int dim2loop);
150 
151  void Update_Ui();
152 
153 private slots:
154 
155  void on_VolumeCurrent_Changed(int vol);
156 
157  //texture
158  int TextureData_CalcNew();
159  int Slice_2D_Mat_from_VD(Mat *pMA_SliceOut, D_VisDat_Slice_2D slice, double min_global, double max_global);
160  int TextureData_AppendSlice(Mat *pMA_toAppend, size_t slice_number);
161  int Show_Texture();
162 
163  void set_VolumeScalingAndPosition();
164  void set_TextureSize();
165 
166  void set_HD_shader(bool hd);
167  void set_preserve_opacity(bool preserve);
168  void set_draw_slices(bool draw);
169  void set_alpha_multiplier(double factor);
170  void set_shadow_quality(int shadow_quality_id);
171 
172  void change_graph_background_color();
173  void change_graph_background_color(QColor color);
174 
175  void check_volume_changes_and_trigger_slots();
176 
177  void adapt_alpha_multiplier_step(double value);
178  void adapt_depth_scale_step(double value);
179 
180 signals:
181 
182 
183 private:
184 
185  //error handler
186  D_Error_Handler ER;
187  void ERR(int err, QString func, QString detail);
188 
189  //Storage (needed for save dir defaults)
190  D_Storage *pStore;
191  int default_dir_index = 0;
192 
193  //populate CB
194  void Populate_CB_Single(QComboBox *CB, QStringList QSL, int init_index = 0);
195 
196  //ui elements
197 
198  //layouts
199  QGridLayout *ui_layout_target;
200  QGroupBox *ui_GroupBox_3D_graph;
201  QGroupBox *ui_GroupBox_2D_slices;
202  QGroupBox *ui_GroupBox_Settings;
203  QGroupBox *ui_GroupBox_Settings_Volume;
204  //QGroupBox *ui_GroupBox_Settings_DrawCondition;
205  QGroupBox *ui_GroupBox_Settings_Alpha;
206  QGroupBox *ui_GroupBox_Settings_Graphics;
207  QGroupBox *ui_GroupBox_SaveAnimationVideo;
208 
209  //volume and slicing
210  QComboBox *ui_ComboBox_Volume;
211  vector<QSpinBox*> vui_SpinBox_DimIndices;
212 
213  //slices
214  /*
215  QLabel *ui_Label_2dSlice_XY;
216  QLabel *ui_Label_2dSlice_XZ;
217  QLabel *ui_Label_2dSlice_YZ;
218  vector<QLabel*> vui_Label_2dSlices;
219  */
220  vector<QGraphicsView*> vui_GraphicsView_Slices2D;
221  D_Viewer Viewer_Slice2D_X;
222  D_Viewer Viewer_Slice2D_Y;
223  D_Viewer Viewer_Slice2D_Z;
224  vector<D_Viewer*> vViewer_Slices2D;
225  enum SLICE_2D {
226  SLICE_2D_X,
227  SLICE_2D_Y,
228  SLICE_2D_Z,
229  SLICE_2D_NUMBER_OF
230  };
231 
232 
233  //settings
234 
235  //draw conditions
236 
237  //alpha
238  QComboBox *ui_ComboBox_AlphaMode;
239  QDoubleSpinBox *ui_DoubleSpinBox_AlphaMultiplier;
240 
241  //graphics
242  QPushButton *ui_PushButton_BackgroundColor;
243  QDoubleSpinBox *ui_DoubleSpinBox_ScaleDepth;
244  QCheckBox *ui_CheckBox_HeatColor;
245  QCheckBox *ui_CheckBox_Slices_Show;
246  QCheckBox *ui_CheckBox_Slices_SliceVolume;
247  QCheckBox *ui_CheckBox_Slices_KeepAspectRatio;
248  QCheckBox *ui_CheckBox_Shader_HD;
249  QCheckBox *ui_CheckBox_OpacityPreserve;
250  QComboBox *ui_ComboBox_ShadowQuality;
251  QSpacerItem *ui_spacer_Settings;
252  QPushButton *ui_PushButton_SaveAnimationVideo_Rotation;
253  QPushButton *ui_PushButton_SaveAnimationVideo_Slice;
254 
255  //VD to be displayed
256  D_VisDat_Obj *pVD_Data;
257 
258  //selected volume
259  int volume_index_current = c_VOLUME_XYZ;
260  vector<int> v_dim_indeces_last = {0, 0, 0, 0, 0, 0};
261  vector<int> v_dims_extended = {c_DIM_X, c_DIM_Y, c_DIM_Z};
262  vector<int> v_dims_fix = {c_DIM_T, c_DIM_S, c_DIM_P};
263 
264 
265  //graph elements
266  Q3DScatter *graph_scatter;
267  QWidget *container_widget_scatter;
268  QCustom3DVolume *volume_item;
269 
270  //texture data
271  QVector<uchar> vTextureData;
272  QVector<QRgb> vColorTable;
273 
274  //vis trafo
275  bool vis_trafo_active = false;
276  double vis_trafo_in_min = 0;
277  double vis_trafo_in_max = 255;
278  double vis_trafo_gamma = 1.0;
279  double vis_trafo_center = 0.0;
280  double vis_trafo_divisor = 1.0;
281  double vis_trafo_anchor = 0;
282  double vis_trafo_range = 1;
283  int vis_trafo_mode_crop = c_VIS_TRAFO_CROP_DYNAMIC;
284  int vis_trafo_mode_trafo = c_VIS_TRAFO_LINEAR;
285  int vis_trafo_mode_anchor = c_VIS_TRAFO_ANCHOR_DYNAMIC;
286  int vis_trafo_mode_range = c_VIS_TRAFO_RANGE_DYNAMIC;
287  int vis_trafo_mode_complex = c_COMPLEX2REAL_RE_IM;
288 
289  //states
290  bool state_ui_init = false;
291  bool state_VD_set = false;
292  bool state_texture_set = false;
293  bool state_graph_up2date = false;
294  bool state_graph_updating = false;
295  bool state_default_dir = false;
296 };
297 
298 
299 
300 #endif // D_VIEWER_3D_H
Mat
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
ER_okay
@ ER_okay
Definition: d_enum.h:133
D_Viewer_3D::TakeFrames_CameraRotationFull
int TakeFrames_CameraRotationFull(vector< Mat > *pvMA_ViewsOut, size_t n_frames=360)
Definition: d_viewer_3d.cpp:587
c_VIEWER_3D_ALPHA_NUMBER_OF
@ c_VIEWER_3D_ALPHA_NUMBER_OF
Definition: d_enum.h:492
D_Img_Proc::Visualize_to8bit
static int Visualize_to8bit(Mat *pMA_Out, Mat *pMA_In, int mode_crop, int mode_trafo, int mode_anchor, int mode_range, double val_anchor, double val_range, double val_min, double val_max, double val_gamma, double val_center, double val_scale, bool keep_min_max=false, int mode_complex=c_COMPLEX2REAL_RE_IM)
Definition: d_img_proc.cpp:5082
D_Viewer_3D::Set_VisTrafo_Anchor
void Set_VisTrafo_Anchor(double anchor=127.5)
Definition: d_viewer_3d.h:116
D_Viewer_3D::TakeFrames_SliceDim
int TakeFrames_SliceDim(vector< Mat > *pvMA_ViewsOut, int dim2loop)
Definition: d_viewer_3d.cpp:545
c_DIM_X
@ c_DIM_X
Definition: d_enum.h:235
D_Viewer_3D::Dim_extended0
int Dim_extended0()
Definition: d_viewer_3d.h:131
D_Viewer_3D::Save
int Save(QString QS_Save)
Definition: d_viewer_3d.cpp:360
D_Viewer_3D::Dims_fix
vector< int > Dims_fix()
Definition: d_viewer_3d.h:139
c_DIM_Z
@ c_DIM_Z
Definition: d_enum.h:237
D_Viewer_3D::Set_VisTrafo_SpreadInMin
void Set_VisTrafo_SpreadInMin(double spread_min=0)
Definition: d_viewer_3d.h:112
c_DIM_T
@ c_DIM_T
Definition: d_enum.h:238
d_viewer.h
PI_2_0
const double PI_2_0
Definition: d_enum.h:2537
D_VisDat_Proc::PlaneFromDims
static int PlaneFromDims(int d1, int d2)
Definition: d_visdat_proc.cpp:146
D_Viewer
The D_Viewer class Display images (Mat) in QGraphicsView in the user interface.
Definition: d_viewer.h:58
ER_MemSizeToBig
@ ER_MemSizeToBig
Definition: d_enum.h:180
D_Storage
The D_Storage class Used for storing data. There is only one instance in D_MainWindow .
Definition: d_storage.h:49
D_Viewer_3D::Set_VisTrafo_Mode_Anchor
void Set_VisTrafo_Mode_Anchor(int mode=c_VIS_TRAFO_ANCHOR_DYNAMIC)
Definition: d_viewer_3d.h:120
c_VIEWER_3D_ALPHA_CHANNEL_MEAN
@ c_VIEWER_3D_ALPHA_CHANNEL_MEAN
Definition: d_enum.h:489
D_Viewer_3D::SaveVideo_SliceDim
int SaveVideo_SliceDim()
Definition: d_viewer_3d.cpp:365
D_Viewer_3D::Set_VisTrafo_Gamma
void Set_VisTrafo_Gamma(double gamma=1)
Definition: d_viewer_3d.h:111
c_DIM_Y
@ c_DIM_Y
Definition: d_enum.h:236
ER_UiNotInit
@ ER_UiNotInit
Definition: d_enum.h:177
D_Viewer_3D::Set_VisTrafo_Mode_Trafo
void Set_VisTrafo_Mode_Trafo(int mode=c_VIS_TRAFO_LINEAR)
Definition: d_viewer_3d.h:119
QSL_Volumes
const QStringList QSL_Volumes
Definition: d_enum.h:351
Vec3b
cv::Vec3b Vec3b
Definition: d_opencv_typedefs.h:51
D_VisDat_Proc::Read_2D_Plane
static int Read_2D_Plane(Mat *pMA_Out, D_VisDat_Obj *pVD_In, D_VisDat_Slice_2D InPlane)
Definition: d_visdat_proc.cpp:2946
D_Viewer_3D
Definition: d_viewer_3d.h:85
c_VIS_TRAFO_LINEAR
@ c_VIS_TRAFO_LINEAR
Definition: d_enum.h:697
c_VIS_TRAFO_RANGE_DYNAMIC
@ c_VIS_TRAFO_RANGE_DYNAMIC
Definition: d_enum.h:723
D_Viewer_3D::Set_VisTrafo_ActiveBool
void Set_VisTrafo_ActiveBool(bool active=true)
Definition: d_viewer_3d.h:110
QSL_ShadowQuality_3D_ShadowInName
const QStringList QSL_ShadowQuality_3D_ShadowInName
Definition: d_enum.h:572
D_Viewer_3D::set_VisDat
int set_VisDat(D_VisDat_Obj *pVD_toShow)
Definition: d_viewer_3d.cpp:325
D_Viewer_3D::Set_VisTrafo_Range
void Set_VisTrafo_Range(double range=127.5)
Definition: d_viewer_3d.h:117
D_VisDat_Dim
The D_VisDat_Dim class Represents a 6D volume.
Definition: d_visdat_dim.h:49
D_VisDat_Proc::VolumeDims
static vector< int > VolumeDims(int volume_index)
Definition: d_visdat_proc.cpp:141
c_DIM_S
@ c_DIM_S
Definition: d_enum.h:239
D_Viewer_3D::clear_graph
void clear_graph()
Definition: d_viewer_3d.cpp:314
D_Error_Handler::ERR
void ERR(int err, QString sender, QString func, QString detail)
D_Error_Handler::ERR pops an error message if an error occured and/or streams it to a csv file.
Definition: d_error_handler.cpp:23
D_Viewer_3D::Volume
int Volume()
Definition: d_viewer_3d.h:130
D_VisDat_Obj::channels
int channels()
Definition: d_visdat_obj.h:76
VideoWriter
cv::VideoWriter VideoWriter
Definition: d_opencv_typedefs.h:25
D_VisDat_Obj
The D_VisDat_Obj class Represents a 6D image.
Definition: d_visdat_obj.h:51
D_Viewer_3D::Dim_fix0
int Dim_fix0()
Definition: d_viewer_3d.h:136
D_Storage::dir_byIndex
QDir * dir_byIndex(int dir_index)
Definition: d_storage.h:65
D_Viewer_3D::Set_VisTrafo_Mode_Complex
void Set_VisTrafo_Mode_Complex(int mode=c_COMPLEX2REAL_RE_IM)
Definition: d_viewer_3d.h:122
D_Viewer_3D::D_Viewer_3D
D_Viewer_3D()
Definition: d_viewer_3d.cpp:11
D_VisDat_Dim::size_PixelCount
int size_PixelCount()
Definition: d_visdat_dim.cpp:56
D_Viewer_3D::Set_VisTrafo_Center
void Set_VisTrafo_Center(double center=0)
Definition: d_viewer_3d.h:114
D_Viewer_3D::Update_Ui
void Update_Ui()
Definition: d_viewer_3d.cpp:642
D_Viewer_3D::Update_Graph
int Update_Graph()
Definition: d_viewer_3d.cpp:690
D_Viewer_3D::Dims_extended
vector< int > Dims_extended()
Definition: d_viewer_3d.h:134
D_VisDat_Obj::Dim
D_VisDat_Dim Dim()
Definition: d_visdat_obj.h:72
D_Viewer_3D::Set_VisTrafo_Divisor
void Set_VisTrafo_Divisor(double divisor=0)
Definition: d_viewer_3d.h:115
D_VideoWriter
The D_VideoWriter class Creates a video from a sequence of images and saves it as a file.
Definition: d_videowriter.h:53
QSL_Viewer3D_Alpha
const QStringList QSL_Viewer3D_Alpha
Definition: d_enum.h:494
D_Error_Handler
The D_Error_Handler class takes error codes from D_ERROR_ENUM and shows a popup if an error occures.
Definition: d_error_handler.h:38
Vec4b
cv::Vec4b Vec4b
Definition: d_opencv_typedefs.h:57
D_Viewer_3D::Set_VisTrafo_ActiveInt
void Set_VisTrafo_ActiveInt(int active=1)
Definition: d_viewer_3d.h:109
D_VisDat_Dim::size_Dim
int size_Dim(int idx)
Definition: d_visdat_dim.h:65
D_Viewer_3D::Plane_SliceYZ
int Plane_SliceYZ()
Definition: d_viewer_3d.h:143
D_Img_Proc::Convert_toMat4Ch_8bit
static int Convert_toMat4Ch_8bit(Mat *pMA_Out, Mat *pMA_In, int alpha_mode, bool heat_color=false, bool norm_alpha=true)
Definition: d_img_proc.cpp:1363
D_VisDat_Slice_2D
The D_VisDat_Slice_2D class Represents a 2D slice through a D_VisDat_Obj.
Definition: d_visdat_slice_2d.h:18
D_Viewer_3D::Dim_extended2
int Dim_extended2()
Definition: d_viewer_3d.h:133
D_Viewer_3D::Plane_SliceXY
int Plane_SliceXY()
Definition: d_viewer_3d.h:141
ER_StreamNotOpen
@ ER_StreamNotOpen
Definition: d_enum.h:174
D_Viewer_3D::Plane_SliceXZ
int Plane_SliceXZ()
Definition: d_viewer_3d.h:142
c_COMPLEX2REAL_RE_IM
@ c_COMPLEX2REAL_RE_IM
Definition: d_enum.h:978
D_Viewer_3D::Dim_extended1
int Dim_extended1()
Definition: d_viewer_3d.h:132
c_VOLUME_XYZ
@ c_VOLUME_XYZ
Definition: d_enum.h:329
D_Viewer_3D::Set_VisTrafo_SpreadInMax
void Set_VisTrafo_SpreadInMax(double spread_max=255)
Definition: d_viewer_3d.h:113
D_Popup_ListSelect
The D_Popup_ListSelect class Lets the user choose an entry from a QStringList
Definition: d_popup_listselect.h:37
d_viewer_3d.h
ER_other
@ ER_other
Definition: d_enum.h:134
c_VIEWER_PLOT_3D_SHADOW_MEDIUM
@ c_VIEWER_PLOT_3D_SHADOW_MEDIUM
Definition: d_enum.h:556
D_Viewer_3D::Set_AlphaMode
void Set_AlphaMode(size_t alpha_mode)
Definition: d_viewer_3d.h:128
c_VIS_TRAFO_ANCHOR_DYNAMIC
@ c_VIS_TRAFO_ANCHOR_DYNAMIC
Definition: d_enum.h:709
c_DIM_P
@ c_DIM_P
Definition: d_enum.h:240
d_storage.h
D_Viewer_3D::~D_Viewer_3D
~D_Viewer_3D()
Definition: d_viewer_3d.cpp:21
ER_type_missmatch
@ ER_type_missmatch
Definition: d_enum.h:137
D_Viewer_3D::Dim_is_fix
int Dim_is_fix(int d)
Definition: d_viewer_3d.h:140
c_DIM_NUMBER_OF
@ c_DIM_NUMBER_OF
Definition: d_enum.h:241
d_opencv_typedefs.h
D_Viewer_3D::Set_VisTrafo_Mode_Crop
void Set_VisTrafo_Mode_Crop(int mode=c_VIS_TRAFO_CROP_DYNAMIC)
Definition: d_viewer_3d.h:118
D_VisDat_Obj::pDim
D_VisDat_Dim * pDim()
Definition: d_visdat_obj.h:73
D_Viewer_3D::init
void init(QGridLayout *target_layout)
Definition: d_viewer_3d.cpp:26
c_VIS_TRAFO_CROP_FIXED
@ c_VIS_TRAFO_CROP_FIXED
Definition: d_enum.h:688
D_Viewer_3D::Set_VisTrafo_Mode_Range
void Set_VisTrafo_Mode_Range(int mode=c_VIS_TRAFO_RANGE_DYNAMIC)
Definition: d_viewer_3d.h:121
D_Img_Proc::Contrast_Color
static QColor Contrast_Color(QColor col_in, bool force_black_and_white=true, bool mirror_hue=true, bool force_light2blue=true)
Definition: d_img_proc.cpp:19388
d_popup_listselect.h
ER_dim_missmatch
@ ER_dim_missmatch
Definition: d_enum.h:148
d_visdat_obj.h
d_enum.h
D_Storage::set_dir_byIndex
void set_dir_byIndex(QString path, int dir_index)
Definition: d_storage.h:95
D_Viewer_3D::Dim_is_extended
bool Dim_is_extended(int d)
Definition: d_viewer_3d.h:135
D_Viewer_3D::SaveVideo_CameraRotationFull
int SaveVideo_CameraRotationFull()
Definition: d_viewer_3d.cpp:469
QSL_DimIndices
const QStringList QSL_DimIndices
Definition: d_enum.h:251
D_VisDat_Proc::Calc_MinMax
static int Calc_MinMax(D_VisDat_Obj *pVD_In, double *min_ext, double *max_ext)
Definition: d_visdat_proc.cpp:7660
D_Viewer_3D::Set_StoragePointer
void Set_StoragePointer(D_Storage *pStorage, int index_dir2use)
Definition: d_viewer_3d.h:124
Vec
cv::Vec< T, N > Vec
Definition: d_opencv_typedefs.h:44
d_error_handler.h
ER_parameter_bad
@ ER_parameter_bad
Definition: d_enum.h:142
c_VOLUME_NUMBER_OF
@ c_VOLUME_NUMBER_OF
Definition: d_enum.h:349
D_Viewer_3D::Dim_fix2
int Dim_fix2()
Definition: d_viewer_3d.h:138
D_Viewer_3D::Set_Volume
void Set_Volume(size_t volume_index)
Definition: d_viewer_3d.h:126
d_videowriter.h
D_Viewer_3D::Update_Slices
int Update_Slices()
Definition: d_viewer_3d.cpp:734
D_Img_Proc::Color2Text4StyleSheet
static QString Color2Text4StyleSheet(QColor col_in)
Definition: d_img_proc.cpp:19445
D_VisDat_Slice_Nd::set_Pos_Dim
void set_Pos_Dim(int d, int pos)
Definition: d_visdat_slice_nd.h:74
D_Viewer_3D::Set_backgroundColor
void Set_backgroundColor(QColor color)
Definition: d_viewer_3d.h:127
c_VIS_TRAFO_CROP_DYNAMIC
@ c_VIS_TRAFO_CROP_DYNAMIC
Definition: d_enum.h:687
D_Viewer_3D::Dim_fix1
int Dim_fix1()
Definition: d_viewer_3d.h:137
d_visdat_proc.h
ER_index_out_of_range
@ ER_index_out_of_range
Definition: d_enum.h:146
ER_empty
@ ER_empty
Definition: d_enum.h:135