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_storage.h
Go to the documentation of this file.
1 /************************************
2  * added: 11.09.2018 *
3  * author: David Eilenstein *
4  * contact: D.Eilenstein@gsi.de *
5  * project: ImageD *
6  * facility: GSI Darmstadt, Ger *
7  ************************************/
8 
9 #ifndef D_STORAGE_H
10 #define D_STORAGE_H
11 
12 //own
13 #include <d_enum.h>
14 #include <d_img_proc.h>
15 #include <d_visdat_obj.h>
16 #include <d_visdat_proc.h>
17 
18 //general
19 #include <iostream>
20 #include <vector>
21 
22 //Qt
23 #include <QMainWindow>
24 #include <QImage>
25 #include <QFileInfo>
26 #include <QFileInfoList>
27 #include <QDir>
28 #include <QString>
29 #include <QDebug>
30 #include <QClipboard>
31 #include <QApplication>
32 #include <QMessageBox>
33 
34 //openCV
35 #include <opencv2/core/core.hpp>
36 #include <opencv2/highgui/highgui.hpp>
37 #include <opencv2/imgproc/imgproc.hpp>
38 
39 //namespaces
40 using namespace std;
41 //using namespace cv; (prohibited because of abigous names with qtdatavisualization)
42 #include <d_opencv_typedefs.h>
43 
48 class D_Storage
49 {
50 public:
51  D_Storage();
52 
53  //Basic
54  Mat *get_Adress(size_t pos) {return vMA_Images.size() <= pos ? &vMA_Images[0] : &vMA_Images[pos];}
55  D_VisDat_Obj *get_pVD(size_t pos) {return pos < vVD_Steps.size() ? &(vVD_Steps[pos]) : &(vVD_Steps[0]);}
56  D_VisDat_Obj get_VD(size_t pos) {return pos < vVD_Steps.size() ? vVD_Steps[pos] : vVD_Steps[0];}
57  size_t size() {return vMA_Images.size();}
58  void expand();
59  void free() {vMA_Images.clear(); vVD_Steps.clear();}
60 
61  //Clipboard
62  QClipboard *clipboard() {return clip;}
63 
64  //Standard-Directories
65  QDir *dir_byIndex(int dir_index) {return &(vDIR_DefaultPaths[dir_index > 0 && dir_index < dir_NUMBER_OF ? dir_index : 0]);}
66  QDir *dir_Config() {return &DIR_Config;}
67  QDir *dir_Default() {return dir_byIndex(dir_DEFAULT);}
68  QDir *dir_Load() {return dir_byIndex(dir_LOAD);}
69  QDir *dir_Save() {return dir_byIndex(dir_SAVE);}
70  QDir *dir_M_dsDNA() {return dir_byIndex(dir_M_DSDNA);}
71  QDir *dir_M_Mitochondria() {return dir_byIndex(dir_M_MITO);}
72  QDir *dir_M_Eilenstein() {return dir_byIndex(dir_M_EILEN);}
73  QDir *dir_Examples() {return dir_byIndex(dir_EXAMPLE);}
74  QDir *dir_Steps() {return dir_byIndex(dir_STEPS);}
75  QDir *dir_M_CellColonies() {return dir_byIndex(dir_M_CELLCOL);}
76  QDir *dir_M_FociTimeNuclei() {return dir_byIndex(dir_M_FOCITIME);}
77  QDir *dir_Analyzer() {return dir_byIndex(dir_ANALYZER);}
78  QDir *dir_Test() {return dir_byIndex(dir_TEST);}
79  QDir *dir_M_IonTracks() {return dir_byIndex(dir_M_TRACKS);}
80  QDir *dir_M_Visualization() {return dir_byIndex(dir_M_VIS);}
81  QDir *dir_M_Osteoclasts() {return dir_byIndex(dir_M_OSTEO);}
82  QDir *dir_M_DnaFibre() {return dir_byIndex(dir_M_DNAFIBER);}
83  QDir *dir_M_RadonCurveFit() {return dir_byIndex(dir_M_RADONFIT);}
84  QDir *dir_M_SegmentationAssistant() {return dir_byIndex(dir_M_SEGASSI);}
85  QDir *dir_M_CerebralOrganoids() {return dir_byIndex(dir_M_CEREB);}
86  QDir *dir_M_ManualSegmentation() {return dir_byIndex(dir_M_MANSEG);}
87  QDir *dir_M_CiliaSphereTracker() {return dir_byIndex(dir_M_CILTRACK);}
88  QDir *dir_M_FourierTransformator() {return dir_byIndex(dir_M_FOURIER);}
89  QDir *dir_M_AirDrag() {return dir_byIndex(dir_M_AIRDRAG);}
90  QDir *dir_M_MegaFoci_Images() {return dir_byIndex(dir_M_MEGAFOCI_IMG);}
91  QDir *dir_M_MegaFoci_Results() {return dir_byIndex(dir_M_MEGAFOCI_RES);}
92  QDir *dir_M_Huang() {return dir_byIndex(dir_M_HUANG);}
93  QDir *dir_M_Softmax() {return dir_byIndex(dir_M_SOFTMAX);}
94 
95  void set_dir_byIndex(QString path, int dir_index) {Path_Set(path, dir_index > 0 && dir_index < dir_NUMBER_OF ? dir_index : 0);}
96  void set_dir_Load(QString path) {set_dir_byIndex(path, dir_LOAD);}
97  void set_dir_Save(QString path) {set_dir_byIndex(path, dir_SAVE);}
98  void set_dir_M_dsDNA(QString path) {set_dir_byIndex(path, dir_M_DSDNA);}
99  void set_dir_M_Mitochondria(QString path) {set_dir_byIndex(path, dir_M_MITO);}
100  void set_dir_M_Eilenstein(QString path) {set_dir_byIndex(path, dir_M_EILEN);}
101  void set_dir_Examples(QString path) {set_dir_byIndex(path, dir_EXAMPLE);}
102  void set_dir_Steps(QString path) {set_dir_byIndex(path, dir_STEPS);}
103  void set_dir_M_CellColonies(QString path) {set_dir_byIndex(path, dir_M_CELLCOL);}
104  void set_dir_M_FociTimeNuclei(QString path) {set_dir_byIndex(path, dir_M_FOCITIME);}
105  void set_dir_Analyzer(QString path) {set_dir_byIndex(path, dir_ANALYZER);}
106  void set_dir_Test(QString path) {set_dir_byIndex(path, dir_TEST);}
107  void set_dir_M_IonTracks(QString path) {set_dir_byIndex(path, dir_M_TRACKS);}
108  void set_dir_M_Visualization(QString path) {set_dir_byIndex(path, dir_M_VIS);}
109  void set_dir_M_Osteoclasts(QString path) {set_dir_byIndex(path, dir_M_OSTEO);}
110  void set_dir_M_DnaFibre(QString path) {set_dir_byIndex(path, dir_M_DNAFIBER);}
111  void set_dir_M_RadonCurveFit(QString path) {set_dir_byIndex(path, dir_M_RADONFIT);}
112  void set_dir_M_SegmentationAssistant(QString path) {set_dir_byIndex(path, dir_M_SEGASSI);}
113  void set_dir_M_CerebralOrganoids(QString path) {set_dir_byIndex(path, dir_M_CEREB);}
114  void set_dir_M_ManualSegmentation(QString path) {set_dir_byIndex(path, dir_M_MANSEG);}
115  void set_dir_M_CiliaSphereTracker(QString path) {set_dir_byIndex(path, dir_M_CILTRACK);}
116  void set_dir_M_FourierTransformator(QString path) {set_dir_byIndex(path, dir_M_FOURIER);}
117  void set_dir_M_AirDrag(QString path) {set_dir_byIndex(path, dir_M_AIRDRAG);}
118  void set_dir_M_MegaFoci_Images(QString path) {set_dir_byIndex(path, dir_M_MEGAFOCI_IMG);}
119  void set_dir_M_MegaFoci_Results(QString path) {set_dir_byIndex(path, dir_M_MEGAFOCI_RES);}
120  void set_dir_M_Huang(QString path) {set_dir_byIndex(path, dir_M_HUANG);}
121  void set_dir_M_Softmax(QString path) {set_dir_byIndex(path, dir_M_SOFTMAX);}
122 
123  //SettingsStats
124  int get_UseCounter();
125  int get_ReminderCountdown();
126  bool get_FeedbackIsSent();
127  void set_ReminderCounter(int countdown);
128  void set_ReminderNextAt(int reminderAt);
129  void set_FeedbackIsSent(bool sent);
130  size_t PluginLastUsed_Get();
131  void PluginLastUsed_Set(size_t index);
132 
133  //init img
134  QFileInfo *default_img() {return &FI_Image_Init;}
135  QFileInfoList *default_img_list() {return &FIL_VD_init;}
136 
137  //Stored times (for time measurement of stepwindows)
138  unsigned int time(size_t pos, size_t type);
139  void set_times(size_t pos, size_t type, unsigned int val);
140 
141 private:
142  //Images
143  void Image_Init();
144  vector<Mat> vMA_Images; //This is where the displayed images of the proccessing chain (stepwindows) are stored
145  Mat MA_Init;
146  QImage *pQI_Init;
147 
148  //VisDat
149  vector<D_VisDat_Obj> vVD_Steps;
150  D_VisDat_Obj VD_Init;
151 
152  //Times
153  vector<array<unsigned int, 5>> v_times;
154 
155  //Defaults
156  QString QS_Dir_Config = QDir().homePath() + "/ImageD_Config";
157  void SettingsStats_Init();
158  int SettingsStats_UseCounterIncreaseAndCheck();
159  void SettingsStats_Read();
160  void SettingsStats_Write();
161  void Paths_Write();
162  void Paths_Read();
163  void Paths_Init();
164  void Path_Set(QString path, unsigned int index_DIR);
165  QFileInfo FI_Paths;
166  QFileInfo FI_Image_Init;
167  QFileInfoList FIL_VD_init;
168  QDir DIR_Config;
169  vector<QDir> vDIR_DefaultPaths;
170 
171  //Clipboard
172  QClipboard *clip;
173 
174  //settings and stats
175  QFileInfo FI_SettingsStats;
176  QStringList QSL_SettingsStats;
177 
178  //CONSTANTS
179 
180  //Settings & Stats
181  enum settings_stats_lines
182  {
183  SS_USE_COUNTER,
184  SS_REMINDER_COUNTDOWN,
185  SS_FEEDBACK_IS_SENT,
186  SS_PLUGIN_LAST_USED,
187  SS_NUMBER_OF
188  };
189 };
190 
191 #endif // D_STORAGE_H
Mat
cv::Mat Mat
Definition: d_opencv_typedefs.h:28
dir_M_CILTRACK
@ dir_M_CILTRACK
Definition: d_enum.h:90
D_Storage::set_dir_M_Softmax
void set_dir_M_Softmax(QString path)
Definition: d_storage.h:121
D_Storage::set_dir_M_RadonCurveFit
void set_dir_M_RadonCurveFit(QString path)
Definition: d_storage.h:111
dir_M_FOURIER
@ dir_M_FOURIER
Definition: d_enum.h:91
D_Storage::dir_M_FourierTransformator
QDir * dir_M_FourierTransformator()
Definition: d_storage.h:88
D_Storage::set_FeedbackIsSent
void set_FeedbackIsSent(bool sent)
Definition: d_storage.cpp:72
D_Storage::set_dir_M_CellColonies
void set_dir_M_CellColonies(QString path)
Definition: d_storage.h:103
D_Storage::set_dir_M_Huang
void set_dir_M_Huang(QString path)
Definition: d_storage.h:120
c_DIM_X
@ c_DIM_X
Definition: d_enum.h:235
c_DIM_Z
@ c_DIM_Z
Definition: d_enum.h:237
D_Storage::set_dir_Steps
void set_dir_Steps(QString path)
Definition: d_storage.h:102
D_Storage::dir_M_MegaFoci_Results
QDir * dir_M_MegaFoci_Results()
Definition: d_storage.h:91
D_Storage::D_Storage
D_Storage()
Definition: d_storage.cpp:11
dir_M_DNAFIBER
@ dir_M_DNAFIBER
Definition: d_enum.h:85
D_Storage::default_img_list
QFileInfoList * default_img_list()
Definition: d_storage.h:135
D_Img_Proc::Load_From_Path
static int Load_From_Path(Mat *pMA_Out, QFileInfo FI_path)
Definition: d_img_proc.cpp:16
D_Storage::dir_Analyzer
QDir * dir_Analyzer()
Definition: d_storage.h:77
D_Storage::expand
void expand()
Definition: d_storage.cpp:25
D_Storage
The D_Storage class Used for storing data. There is only one instance in D_MainWindow .
Definition: d_storage.h:49
D_Storage::dir_Config
QDir * dir_Config()
Definition: d_storage.h:66
dir_M_SOFTMAX
@ dir_M_SOFTMAX
Definition: d_enum.h:95
c_DIM_Y
@ c_DIM_Y
Definition: d_enum.h:236
D_Storage::set_times
void set_times(size_t pos, size_t type, unsigned int val)
Definition: d_storage.cpp:114
D_Storage::time
unsigned int time(size_t pos, size_t type)
Definition: d_storage.cpp:101
D_Storage::dir_Save
QDir * dir_Save()
Definition: d_storage.h:69
D_Storage::set_dir_M_Visualization
void set_dir_M_Visualization(QString path)
Definition: d_storage.h:108
D_Storage::set_dir_M_MegaFoci_Results
void set_dir_M_MegaFoci_Results(QString path)
Definition: d_storage.h:119
D_Storage::dir_Examples
QDir * dir_Examples()
Definition: d_storage.h:73
D_Storage::set_dir_Save
void set_dir_Save(QString path)
Definition: d_storage.h:97
D_Storage::set_dir_M_MegaFoci_Images
void set_dir_M_MegaFoci_Images(QString path)
Definition: d_storage.h:118
D_Storage::dir_M_FociTimeNuclei
QDir * dir_M_FociTimeNuclei()
Definition: d_storage.h:76
D_Storage::set_dir_Test
void set_dir_Test(QString path)
Definition: d_storage.h:106
dir_M_DSDNA
@ dir_M_DSDNA
Definition: d_enum.h:73
dir_M_MITO
@ dir_M_MITO
Definition: d_enum.h:74
D_Storage::get_ReminderCountdown
int get_ReminderCountdown()
Definition: d_storage.cpp:41
dir_M_AIRDRAG
@ dir_M_AIRDRAG
Definition: d_enum.h:92
dir_ANALYZER
@ dir_ANALYZER
Definition: d_enum.h:80
D_Storage::dir_M_Visualization
QDir * dir_M_Visualization()
Definition: d_storage.h:80
D_Storage::dir_M_dsDNA
QDir * dir_M_dsDNA()
Definition: d_storage.h:70
D_Storage::set_dir_M_CerebralOrganoids
void set_dir_M_CerebralOrganoids(QString path)
Definition: d_storage.h:113
dir_M_EILEN
@ dir_M_EILEN
Definition: d_enum.h:75
D_Storage::dir_M_Eilenstein
QDir * dir_M_Eilenstein()
Definition: d_storage.h:72
dir_M_RADONFIT
@ dir_M_RADONFIT
Definition: d_enum.h:86
D_VisDat_Obj
The D_VisDat_Obj class Represents a 6D image.
Definition: d_visdat_obj.h:51
dir_M_MEGAFOCI_RES
@ dir_M_MEGAFOCI_RES
Definition: d_enum.h:96
D_Storage::dir_byIndex
QDir * dir_byIndex(int dir_index)
Definition: d_storage.h:65
D_Storage::PluginLastUsed_Get
size_t PluginLastUsed_Get()
Definition: d_storage.cpp:78
dir_M_SEGASSI
@ dir_M_SEGASSI
Definition: d_enum.h:87
dir_M_TRACKS
@ dir_M_TRACKS
Definition: d_enum.h:82
D_Storage::set_dir_M_FociTimeNuclei
void set_dir_M_FociTimeNuclei(QString path)
Definition: d_storage.h:104
D_Storage::dir_M_ManualSegmentation
QDir * dir_M_ManualSegmentation()
Definition: d_storage.h:86
D_Storage::set_dir_M_CiliaSphereTracker
void set_dir_M_CiliaSphereTracker(QString path)
Definition: d_storage.h:115
D_Storage::size
size_t size()
Definition: d_storage.h:57
dir_LOAD
@ dir_LOAD
Definition: d_enum.h:71
D_Storage::default_img
QFileInfo * default_img()
Definition: d_storage.h:134
c_PL_NUMBER_OF
@ c_PL_NUMBER_OF
Definition: d_enum.h:43
d_img_proc.h
D_Storage::set_dir_M_SegmentationAssistant
void set_dir_M_SegmentationAssistant(QString path)
Definition: d_storage.h:112
D_Storage::PluginLastUsed_Set
void PluginLastUsed_Set(size_t index)
Definition: d_storage.cpp:89
D_Storage::get_pVD
D_VisDat_Obj * get_pVD(size_t pos)
Definition: d_storage.h:55
D_Storage::dir_M_RadonCurveFit
QDir * dir_M_RadonCurveFit()
Definition: d_storage.h:83
D_Storage::dir_M_CerebralOrganoids
QDir * dir_M_CerebralOrganoids()
Definition: d_storage.h:85
dir_STEPS
@ dir_STEPS
Definition: d_enum.h:77
D_Storage::set_dir_M_dsDNA
void set_dir_M_dsDNA(QString path)
Definition: d_storage.h:98
D_Storage::dir_Default
QDir * dir_Default()
Definition: d_storage.h:67
D_Storage::set_ReminderNextAt
void set_ReminderNextAt(int reminderAt)
Definition: d_storage.cpp:61
dir_M_HUANG
@ dir_M_HUANG
Definition: d_enum.h:94
D_Storage::get_VD
D_VisDat_Obj get_VD(size_t pos)
Definition: d_storage.h:56
D_Storage::get_UseCounter
int get_UseCounter()
Definition: d_storage.cpp:34
D_Storage::set_ReminderCounter
void set_ReminderCounter(int countdown)
Definition: d_storage.cpp:55
D_Storage::set_dir_M_FourierTransformator
void set_dir_M_FourierTransformator(QString path)
Definition: d_storage.h:116
dir_EXAMPLE
@ dir_EXAMPLE
Definition: d_enum.h:76
D_Storage::clipboard
QClipboard * clipboard()
Definition: d_storage.h:62
dir_M_CEREB
@ dir_M_CEREB
Definition: d_enum.h:88
D_VisDat_Proc::Create_VD_List
static int Create_VD_List(D_VisDat_Obj *pVD_New, QStringList QSL_InPaths, int DimList=c_DIM_S, int DimImgX=c_DIM_X, int DimImgY=c_DIM_Y)
Definition: d_visdat_proc.cpp:1549
D_Storage::dir_M_IonTracks
QDir * dir_M_IonTracks()
Definition: d_storage.h:79
dir_M_CELLCOL
@ dir_M_CELLCOL
Definition: d_enum.h:78
D_Storage::dir_M_Softmax
QDir * dir_M_Softmax()
Definition: d_storage.h:93
d_storage.h
D_Storage::dir_M_SegmentationAssistant
QDir * dir_M_SegmentationAssistant()
Definition: d_storage.h:84
D_Storage::free
void free()
Definition: d_storage.h:59
D_Storage::dir_M_Huang
QDir * dir_M_Huang()
Definition: d_storage.h:92
D_Storage::set_dir_M_AirDrag
void set_dir_M_AirDrag(QString path)
Definition: d_storage.h:117
d_opencv_typedefs.h
D_Storage::set_dir_M_Mitochondria
void set_dir_M_Mitochondria(QString path)
Definition: d_storage.h:99
dir_SAVE
@ dir_SAVE
Definition: d_enum.h:72
D_Storage::set_dir_M_DnaFibre
void set_dir_M_DnaFibre(QString path)
Definition: d_storage.h:110
D_Storage::get_FeedbackIsSent
bool get_FeedbackIsSent()
Definition: d_storage.cpp:48
D_Storage::dir_Test
QDir * dir_Test()
Definition: d_storage.h:78
d_visdat_obj.h
d_enum.h
dir_NUMBER_OF
@ dir_NUMBER_OF
Definition: d_enum.h:97
D_Storage::set_dir_byIndex
void set_dir_byIndex(QString path, int dir_index)
Definition: d_storage.h:95
dir_M_OSTEO
@ dir_M_OSTEO
Definition: d_enum.h:84
D_Storage::dir_Steps
QDir * dir_Steps()
Definition: d_storage.h:74
D_Storage::set_dir_M_IonTracks
void set_dir_M_IonTracks(QString path)
Definition: d_storage.h:107
D_Storage::dir_M_CiliaSphereTracker
QDir * dir_M_CiliaSphereTracker()
Definition: d_storage.h:87
D_Storage::dir_M_CellColonies
QDir * dir_M_CellColonies()
Definition: d_storage.h:75
dir_DEFAULT
@ dir_DEFAULT
Definition: d_enum.h:70
D_Storage::set_dir_Analyzer
void set_dir_Analyzer(QString path)
Definition: d_storage.h:105
D_Storage::get_Adress
Mat * get_Adress(size_t pos)
Definition: d_storage.h:54
dir_M_FOCITIME
@ dir_M_FOCITIME
Definition: d_enum.h:79
D_Storage::set_dir_M_Eilenstein
void set_dir_M_Eilenstein(QString path)
Definition: d_storage.h:100
D_Storage::set_dir_M_ManualSegmentation
void set_dir_M_ManualSegmentation(QString path)
Definition: d_storage.h:114
D_Storage::dir_Load
QDir * dir_Load()
Definition: d_storage.h:68
D_Storage::dir_M_Mitochondria
QDir * dir_M_Mitochondria()
Definition: d_storage.h:71
dir_M_MANSEG
@ dir_M_MANSEG
Definition: d_enum.h:89
D_Storage::dir_M_AirDrag
QDir * dir_M_AirDrag()
Definition: d_storage.h:89
D_Storage::dir_M_MegaFoci_Images
QDir * dir_M_MegaFoci_Images()
Definition: d_storage.h:90
d_visdat_proc.h
dir_M_VIS
@ dir_M_VIS
Definition: d_enum.h:83
dir_M_MEGAFOCI_IMG
@ dir_M_MEGAFOCI_IMG
Definition: d_enum.h:93
D_Storage::dir_M_DnaFibre
QDir * dir_M_DnaFibre()
Definition: d_storage.h:82
D_Storage::dir_M_Osteoclasts
QDir * dir_M_Osteoclasts()
Definition: d_storage.h:81
D_Storage::set_dir_Examples
void set_dir_Examples(QString path)
Definition: d_storage.h:101
dir_TEST
@ dir_TEST
Definition: d_enum.h:81
D_Storage::set_dir_M_Osteoclasts
void set_dir_M_Osteoclasts(QString path)
Definition: d_storage.h:109
D_Storage::set_dir_Load
void set_dir_Load(QString path)
Definition: d_storage.h:96