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_visdat_slice_nd.h
Go to the documentation of this file.
1 /************************************
2  * added: 03.07.2019 *
3  * author: David Eilenstein *
4  * contact: D.Eilenstein@gsi.de *
5  * project: ImageD *
6  * facility: GSI Darmstadt, Ger *
7  ************************************/
8 
9 #ifndef D_VISDAT_SLICE_ND_H
10 #define D_VISDAT_SLICE_ND_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_error_handler.h>
15 #include <d_visdat_dim.h>
16 
17 //Qt
18 #include <QString>
19 #include <QStringList>
20 
21 //Qt::Charts
22 
23 //general
24 #include <iostream>
25 #include <sstream>
26 #include <fstream>
27 #include <vector>
28 #include <algorithm>
29 
30 //openCV
31 #include <opencv2/core/core.hpp>
32 #include <opencv2/highgui/highgui.hpp>
33 #include <opencv2/imgproc/imgproc.hpp>
34 
35 //namespaces
36 using namespace std;
37 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
38 #include <d_opencv_typedefs.h>
39 
46 {
47 public:
49  //D_VisDat_Slice_Nd (int X, int Y, int Z, int T, int S, int P);
50  //D_VisDat_Slice_Nd (vector<int> vPositions);
51 
52  int pos_X () {return vPos[c_DIM_X];}
53  int pos_Y () {return vPos[c_DIM_Y];}
54  int pos_Z () {return vPos[c_DIM_Z];}
55  int pos_T () {return vPos[c_DIM_T];}
56  int pos_S () {return vPos[c_DIM_S];}
57  int pos_P () {return vPos[c_DIM_P];}
58  int pos_Dim (int d) {return d >= 0 && d < c_DIM_NUMBER_OF ? vPos[d] : 0;}
59  Vec<int, c_DIM_NUMBER_OF> pos_Dims();
60 
61  int extended_Dim_Count () {return EXT_DIMS;}
62  int dimensionality () {return extended_Dim_Count();}
63  int extended_Dim (int ext_number) {return ext_number < vExt.size() ? vExt[ext_number] : vExt[0];}
64  vector<int> extended_Dims () {return vExt;}
65 
66  void set_Dimensionality (int dims);
67 
68  void set_Pos_X (int X) {vPos[c_DIM_X] = X;}
69  void set_Pos_Y (int Y) {vPos[c_DIM_Y] = Y;}
70  void set_Pos_Z (int Z) {vPos[c_DIM_Z] = Z;}
71  void set_Pos_T (int T) {vPos[c_DIM_T] = T;}
72  void set_Pos_S (int S) {vPos[c_DIM_S] = S;}
73  void set_Pos_P (int P) {vPos[c_DIM_P] = P;}
74  void set_Pos_Dim (int d, int pos) {vPos[d] = pos;}
75  void set_Pos (int X, int Y, int Z, int T, int S, int P) {vPos = {X, Y, Z, T, S, P}; force_Dimensionality();}
76  void set_Pos (vector<int> vPositions) {if(vPos.size() == vPositions.size()) vPos = vPositions; force_Dimensionality();}
77 
78  bool isExtendedDim (int dim);
79 
80  bool inRangeOf (D_VisDat_Dim dim_container);
81  int dimOutOfRange (D_VisDat_Dim dim_container);
82  int ER_OutOfrange (D_VisDat_Dim dim_container);
83  void forceToBeInRangeOf (D_VisDat_Dim dim_container);
84  void force_Dimensionality();
85 
86  QString QS_pos ();
87  QString QS_pos_nonProcOnly ();
88 
89  QString info ();
90 
91 //protected:
92  int EXT_DIMS = 2;
93 
94  void Init();
95 
96  vector<int> vPos = {0, 0, 0, 0, 0, 0};
97  vector<int> vExt = {};
98 };
99 
100 #endif // D_VISDAT_SLICE_ND_H
D_VisDat_Slice_Nd::vPos
vector< int > vPos
Definition: d_visdat_slice_nd.h:96
ER_okay
@ ER_okay
Definition: d_enum.h:133
D_VisDat_Slice_Nd::pos_T
int pos_T()
Definition: d_visdat_slice_nd.h:55
D_VisDat_Slice_Nd::pos_S
int pos_S()
Definition: d_visdat_slice_nd.h:56
c_DIM_X
@ c_DIM_X
Definition: d_enum.h:235
c_DIM_Z
@ c_DIM_Z
Definition: d_enum.h:237
d_visdat_slice_nd.h
c_DIM_T
@ c_DIM_T
Definition: d_enum.h:238
D_VisDat_Slice_Nd
The D_VisDat_Slice_Nd class Represents a nD slice through a D_VisDat_Obj.
Definition: d_visdat_slice_nd.h:46
D_VisDat_Slice_Nd::pos_Dim
int pos_Dim(int d)
Definition: d_visdat_slice_nd.h:58
D_VisDat_Slice_Nd::set_Pos
void set_Pos(vector< int > vPositions)
Definition: d_visdat_slice_nd.h:76
D_VisDat_Slice_Nd::pos_Y
int pos_Y()
Definition: d_visdat_slice_nd.h:53
c_DIM_Y
@ c_DIM_Y
Definition: d_enum.h:236
D_VisDat_Slice_Nd::force_Dimensionality
void force_Dimensionality()
Definition: d_visdat_slice_nd.cpp:104
D_VisDat_Slice_Nd::vExt
vector< int > vExt
Definition: d_visdat_slice_nd.h:97
ER_dim_Z_out_of_range
@ ER_dim_Z_out_of_range
Definition: d_enum.h:153
D_VisDat_Slice_Nd::inRangeOf
bool inRangeOf(D_VisDat_Dim dim_container)
Definition: d_visdat_slice_nd.cpp:65
D_VisDat_Slice_Nd::set_Pos_X
void set_Pos_X(int X)
Definition: d_visdat_slice_nd.h:68
D_VisDat_Slice_Nd::set_Pos_Y
void set_Pos_Y(int Y)
Definition: d_visdat_slice_nd.h:69
D_VisDat_Slice_Nd::dimOutOfRange
int dimOutOfRange(D_VisDat_Dim dim_container)
Definition: d_visdat_slice_nd.cpp:74
D_VisDat_Slice_Nd::QS_pos_nonProcOnly
QString QS_pos_nonProcOnly()
Definition: d_visdat_slice_nd.cpp:171
D_VisDat_Slice_Nd::pos_P
int pos_P()
Definition: d_visdat_slice_nd.h:57
D_VisDat_Dim
The D_VisDat_Dim class Represents a 6D volume.
Definition: d_visdat_dim.h:49
d_visdat_dim.h
c_DIM_S
@ c_DIM_S
Definition: d_enum.h:239
D_VisDat_Slice_Nd::set_Pos_P
void set_Pos_P(int P)
Definition: d_visdat_slice_nd.h:73
ER_dim_P_out_of_range
@ ER_dim_P_out_of_range
Definition: d_enum.h:159
ER_dim_Y_out_of_range
@ ER_dim_Y_out_of_range
Definition: d_enum.h:151
D_VisDat_Slice_Nd::extended_Dim
int extended_Dim(int ext_number)
Definition: d_visdat_slice_nd.h:63
D_VisDat_Slice_Nd::Init
void Init()
Definition: d_visdat_slice_nd.cpp:188
D_VisDat_Slice_Nd::set_Dimensionality
void set_Dimensionality(int dims)
Definition: d_visdat_slice_nd.cpp:45
D_VisDat_Dim::size_Dim
int size_Dim(int idx)
Definition: d_visdat_dim.h:65
D_VisDat_Slice_Nd::forceToBeInRangeOf
void forceToBeInRangeOf(D_VisDat_Dim dim_container)
Definition: d_visdat_slice_nd.cpp:95
D_VisDat_Slice_Nd::isExtendedDim
bool isExtendedDim(int dim)
Definition: d_visdat_slice_nd.cpp:56
D_VisDat_Slice_Nd::info
QString info()
Definition: d_visdat_slice_nd.cpp:181
D_VisDat_Slice_Nd::set_Pos_S
void set_Pos_S(int S)
Definition: d_visdat_slice_nd.h:72
D_VisDat_Slice_Nd::dimensionality
int dimensionality()
Definition: d_visdat_slice_nd.h:62
D_VisDat_Slice_Nd::set_Pos
void set_Pos(int X, int Y, int Z, int T, int S, int P)
Definition: d_visdat_slice_nd.h:75
D_VisDat_Slice_Nd::extended_Dim_Count
int extended_Dim_Count()
Definition: d_visdat_slice_nd.h:61
D_VisDat_Slice_Nd::set_Pos_Z
void set_Pos_Z(int Z)
Definition: d_visdat_slice_nd.h:70
D_VisDat_Slice_Nd::extended_Dims
vector< int > extended_Dims()
Definition: d_visdat_slice_nd.h:64
c_DIM_P
@ c_DIM_P
Definition: d_enum.h:240
c_DIM_NUMBER_OF
@ c_DIM_NUMBER_OF
Definition: d_enum.h:241
d_opencv_typedefs.h
D_VisDat_Slice_Nd::pos_Dims
Vec< int, c_DIM_NUMBER_OF > pos_Dims()
Definition: d_visdat_slice_nd.cpp:35
d_enum.h
D_VisDat_Slice_Nd::set_Pos_T
void set_Pos_T(int T)
Definition: d_visdat_slice_nd.h:71
QSL_DimIndices
const QStringList QSL_DimIndices
Definition: d_enum.h:251
Vec
cv::Vec< T, N > Vec
Definition: d_opencv_typedefs.h:44
d_error_handler.h
D_VisDat_Slice_Nd::EXT_DIMS
int EXT_DIMS
Definition: d_visdat_slice_nd.h:92
D_VisDat_Slice_Nd::set_Pos_Dim
void set_Pos_Dim(int d, int pos)
Definition: d_visdat_slice_nd.h:74
D_VisDat_Slice_Nd::pos_Z
int pos_Z()
Definition: d_visdat_slice_nd.h:54
D_VisDat_Slice_Nd::pos_X
int pos_X()
Definition: d_visdat_slice_nd.h:52
ER_dim_S_out_of_range
@ ER_dim_S_out_of_range
Definition: d_enum.h:157
D_VisDat_Slice_Nd::QS_pos
QString QS_pos()
Definition: d_visdat_slice_nd.cpp:154
ER_dim_X_out_of_range
@ ER_dim_X_out_of_range
Definition: d_enum.h:149
ER_dim_T_out_of_range
@ ER_dim_T_out_of_range
Definition: d_enum.h:155
D_VisDat_Slice_Nd::D_VisDat_Slice_Nd
D_VisDat_Slice_Nd()
Definition: d_visdat_slice_nd.cpp:13
D_VisDat_Slice_Nd::ER_OutOfrange
int ER_OutOfrange(D_VisDat_Dim dim_container)
Definition: d_visdat_slice_nd.cpp:83