-
Notifications
You must be signed in to change notification settings - Fork 1
/
gui5_reference.cpp
99 lines (79 loc) · 2.24 KB
/
gui5_reference.cpp
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
#include "easyfg.h"
void MainWindow::CalculateCorrectedArray()
{
if(!refloaded || referenceComboBox->currentIndex() == 0)
return;
int i, j;
int x_shift = -xshiftSpinBox->value();
int y_shift = -yshiftSpinBox->value();
float val=0;
correctedmin = 1e9;
correctedmax = 0;
for(i=0; i<datawidth; i++){
for(j=0; j<dataheight; j++){
if(i>=refwidth-x_shift || j>=refheight-y_shift || i<-x_shift || j<-y_shift)
val = 0;
else{
val = RefArray[i+x_shift][j+y_shift];
switch(referenceComboBox->currentIndex()){
case 1: //substract
val = DataArray[i][j] - val;
break;
case 2: //divide
if(val != 0)
val = refaverage*DataArray[i][j]/val;
break;
//case 3: "show reference" - do nothing
}
}
if(val < correctedmin)
correctedmin = val;
if(val > correctedmax)
correctedmax = val;
CorrectedArray[i][j] = floor(val+0.5);
}
}
//UpdateRanges();
//UpdateScale();
}
void MainWindow::on_referenceButton_clicked()
{
if(!QFile::exists(reffile))
reffile = datafile;
QFileDialog dialog(this, "Load reference file", reffile, "All supported (*.asc *.csv *.tiff *.tif *.sif *.raw);;ASCII (*.asc *.csv);;TIFF (*.tiff *.tif);;Andor SIF (*.sif);;Pyrocam RAW (*.raw)");
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setAcceptMode(QFileDialog::AcceptOpen);
if(dialog.exec()){
QStringList path = dialog.selectedFiles();
LoadRef(path[0]);
}
}
void MainWindow::on_currentButton_clicked()
{
if(!QFile::exists(datafile))
return;
reffile = datafile;
LoadRef(reffile);
}
void MainWindow::on_referenceComboBox_currentIndexChanged()
{
if(dataloaded && refloaded)
{
if(referenceComboBox->currentIndex()>0) // reference ON
CalculateCorrectedArray();
RedoAnalysis();
UpdateScale();
UpdateImage();
UpdateScene();
UpdateStatus();
}
UpdateVisibility();
}
void MainWindow::on_xshiftSpinBox_valueChanged()
{
on_referenceComboBox_currentIndexChanged();
}
void MainWindow::on_yshiftSpinBox_valueChanged()
{
on_referenceComboBox_currentIndexChanged();
}