Subversion Repositories seema-scanner

Rev

Rev 54 | Rev 71 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 54 Rev 70
1
#include "SMPreferenceDialog.h"
1
#include "SMPreferenceDialog.h"
2
#include "ui_SMPreferenceDialog.h"
2
#include "ui_SMPreferenceDialog.h"
3
 
3
 
4
#include "OpenGLContext.h"
4
#include "OpenGLContext.h"
5
#include "Camera.h"
5
#include "Camera.h"
6
#include "Algorithm.h"
6
#include "Algorithm.h"
7
 
7
 
8
using namespace std;
8
using namespace std;
9
 
9
 
10
SMPreferenceDialog::SMPreferenceDialog(QWidget *parent) : QDialog(parent), ui(new Ui::SMPreferenceDialog) {
10
SMPreferenceDialog::SMPreferenceDialog(QWidget *parent) : QDialog(parent), ui(new Ui::SMPreferenceDialog) {
11
    ui->setupUi(this);
11
    ui->setupUi(this);
12
 
12
 
13
    // Query projectors
13
    // Query projectors
14
    vector<ScreenInfo> screenList = OpenGLContext::GetScreenInfo();
14
    vector<ScreenInfo> screenList = OpenGLContext::GetScreenInfo();
15
    for(unsigned int i=0; i<screenList.size(); i++){
15
    for(unsigned int i=0; i<screenList.size(); i++){
16
        QString screenString = QString("Screen %1: %2x%3").arg(i).arg(screenList[i].resX).arg(screenList[i].resY);
16
        QString screenString = QString("Screen %1: %2x%3").arg(i).arg(screenList[i].resX).arg(screenList[i].resY);
17
        ui->projectorComboBox->addItem(screenString, i);
17
        ui->projectorComboBox->addItem(screenString, i);
18
    }
18
    }
19
 
19
 
20
    // Add LC3000 option
20
    // Add LC3000 option
21
    #ifdef WITH_LC3000API
21
    #ifdef WITH_LC3000API
22
        ui->projectorComboBox->addItem("LC3000 API", -2);
22
        ui->projectorComboBox->addItem("LC3000 API", -2);
23
    #endif
23
    #endif
24
    // Add LC4500 option
24
    // Add LC4500 option
25
    #ifdef WITH_LC4500API
25
    #ifdef WITH_LC4500API
26
        ui->projectorComboBox->addItem("LC4500 API", -3);
26
        ui->projectorComboBox->addItem("LC4500 API", -3);
27
    #endif
27
    #endif
28
 
28
 
29
    // Query cameras
29
    // Query cameras
30
    vector< vector<CameraInfo> > interfaceCameraList = Camera::GetInterfaceCameraList();
30
    vector< vector<CameraInfo> > interfaceCameraList = Camera::GetInterfaceCameraList();
31
    for(unsigned int i=0; i<interfaceCameraList.size(); i++){
31
    for(unsigned int i=0; i<interfaceCameraList.size(); i++){
32
        vector<CameraInfo> cameraList = interfaceCameraList[i];
32
        vector<CameraInfo> cameraList = interfaceCameraList[i];
33
        for(unsigned int j=0; j<cameraList.size(); j++){
33
        for(unsigned int j=0; j<cameraList.size(); j++){
34
            QString cameraString = QString("%1: %2 # %3").arg(cameraList[j].vendor.c_str()).arg(cameraList[j].model.c_str()).arg(cameraList[j].serialNumber);
34
            QString cameraString = QString("%1: %2 # %3").arg(cameraList[j].vendor.c_str()).arg(cameraList[j].model.c_str()).arg(cameraList[j].serialNumber);
35
            ui->camera0ComboBox->addItem(cameraString, QPoint(i, j));
35
            ui->camera0ComboBox->addItem(cameraString, QPoint(i, j));
36
            ui->camera1ComboBox->addItem(cameraString, QPoint(i, j));
36
            ui->camera1ComboBox->addItem(cameraString, QPoint(i, j));
37
        }
37
        }
38
    }
38
    }
39
 
39
 
40
    // List pattern modes
40
    // List pattern modes
41
    ui->patternModeComboBox->addItem("Gray Coding", "CodecGrayCode");
41
    ui->patternModeComboBox->addItem("Gray Coding", "CodecGrayCode");
42
    ui->patternModeComboBox->addItem("2x3 Pattern Phase Shift", "CodecPhaseShift2x3");
42
    ui->patternModeComboBox->addItem("2x3 Pattern Phase Shift", "CodecPhaseShift2x3");
43
 
43
 
44
    // Set all elements to current application settings
44
    // Set all elements to current application settings
45
    unsigned int patternModeIndex = ui->patternModeComboBox->findData(settings.value("pattern/mode"));
45
    unsigned int patternModeIndex = ui->patternModeComboBox->findData(settings.value("pattern/mode"));
46
    ui->patternModeComboBox->setCurrentIndex(patternModeIndex);
46
    ui->patternModeComboBox->setCurrentIndex(patternModeIndex);
47
 
47
 
48
    CodingDir codingDir = (CodingDir)settings.value("pattern/direction", CodingDirHorizontal).toInt();
-
 
49
    ui->patternHorizontalCheckBox->setChecked(codingDir & CodingDirHorizontal);
-
 
50
    ui->patternVerticalCheckBox->setChecked(codingDir & CodingDirVertical);
-
 
51
 
-
 
52
    int projectorIndex = ui->projectorComboBox->findData(settings.value("projector/screenNumber"));
48
    int projectorIndex = ui->projectorComboBox->findData(settings.value("projector/screenNumber"));
53
    ui->projectorComboBox->setCurrentIndex(projectorIndex);
49
    ui->projectorComboBox->setCurrentIndex(projectorIndex);
54
    ui->diamondPatternCheckBox->setChecked(settings.value("projector/diamondPattern").toBool());
50
    ui->diamondPatternCheckBox->setChecked(settings.value("projector/diamondPattern").toBool());
55
 
51
 
56
    QPoint camera0InterfaceSetting = QPoint(settings.value("camera0/interfaceNumber").toInt(), settings.value("camera0/cameraNumber").toInt());
52
    QPoint camera0InterfaceSetting = QPoint(settings.value("camera0/interfaceNumber").toInt(), settings.value("camera0/cameraNumber").toInt());
57
    unsigned int camera0Index = ui->camera0ComboBox->findData(camera0InterfaceSetting);
53
    unsigned int camera0Index = ui->camera0ComboBox->findData(camera0InterfaceSetting);
58
    ui->camera0ComboBox->setCurrentIndex(camera0Index);
54
    ui->camera0ComboBox->setCurrentIndex(camera0Index);
59
 
55
 
60
    QPoint camera1InterfaceSetting = QPoint(settings.value("camera1/interfaceNumber").toInt(), settings.value("camera1/cameraNumber").toInt());
56
    QPoint camera1InterfaceSetting = QPoint(settings.value("camera1/interfaceNumber").toInt(), settings.value("camera1/cameraNumber").toInt());
61
    unsigned int camera1Index = ui->camera1ComboBox->findData(camera1InterfaceSetting);
57
    unsigned int camera1Index = ui->camera1ComboBox->findData(camera1InterfaceSetting);
62
    ui->camera1ComboBox->setCurrentIndex(camera1Index);
58
    ui->camera1ComboBox->setCurrentIndex(camera1Index);
63
 
59
 
64
    float shutter = settings.value("camera/shutter", 16.666).toFloat();
60
    float shutter = settings.value("camera/shutter", 16.666).toFloat();
65
    ui->shutterDoubleSpinBox->setValue(shutter);
61
    ui->shutterDoubleSpinBox->setValue(shutter);
66
 
62
 
67
    QString triggerMode = settings.value("trigger/mode","software").toString();
63
    QString triggerMode = settings.value("trigger/mode","software").toString();
68
    if(triggerMode == "hardware"){
64
    if(triggerMode == "hardware"){
69
        ui->triggerHardwareRadioButton->setChecked(true);
65
        ui->triggerHardwareRadioButton->setChecked(true);
70
        on_triggerHardwareRadioButton_clicked();
66
        on_triggerHardwareRadioButton_clicked();
71
    } else {
67
    } else {
72
        ui->triggerSoftwareRadioButton->setChecked(true);
68
        ui->triggerSoftwareRadioButton->setChecked(true);
73
        on_triggerSoftwareRadioButton_clicked();
69
        on_triggerSoftwareRadioButton_clicked();
74
    }
70
    }
75
    unsigned int shift = settings.value("trigger/shift",0).toInt();
71
    unsigned int shift = settings.value("trigger/shift",0).toInt();
76
    ui->shiftSpinBox->setValue(shift);
72
    ui->shiftSpinBox->setValue(shift);
77
    unsigned int delay = settings.value("trigger/delay",120).toInt();
73
    unsigned int delay = settings.value("trigger/delay",120).toInt();
78
    ui->delaySpinBox->setValue(delay);
74
    ui->delaySpinBox->setValue(delay);
79
 
75
 
80
}
76
}
81
 
77
 
82
SMPreferenceDialog::~SMPreferenceDialog(){
78
SMPreferenceDialog::~SMPreferenceDialog(){
83
    delete ui;
79
    delete ui;
84
}
80
}
85
 
81
 
86
void SMPreferenceDialog::on_buttonBox_accepted(){
82
void SMPreferenceDialog::on_buttonBox_accepted(){
87
 
83
 
88
    // Save settings
84
    // Save settings
89
 
85
 
90
    // Pattern mode
86
    // Pattern mode
91
    QString patternMode = ui->patternModeComboBox->itemData(ui->patternModeComboBox->currentIndex()).toString();
87
    QString patternMode = ui->patternModeComboBox->itemData(ui->patternModeComboBox->currentIndex()).toString();
92
    settings.setValue("pattern/mode", patternMode);
88
    settings.setValue("pattern/mode", patternMode);
93
 
89
 
94
    // Pattern direction
-
 
95
    bool patternHorizontal = ui->patternHorizontalCheckBox->isChecked();
-
 
96
    bool patternVertical = ui->patternVerticalCheckBox->isChecked();
-
 
97
    CodingDir dir = CodingDirNone;
-
 
98
    if(patternHorizontal && patternVertical)
-
 
99
        dir = CodingDirBoth;
-
 
100
    else if(patternHorizontal)
-
 
101
        dir = CodingDirHorizontal;
-
 
102
    else if(patternVertical)
-
 
103
        dir = CodingDirVertical;
-
 
104
    settings.setValue("pattern/direction", dir);
-
 
105
 
-
 
106
    // Projector
90
    // Projector
107
    int proj = ui->projectorComboBox->itemData(ui->projectorComboBox->currentIndex()).toInt();
91
    int proj = ui->projectorComboBox->itemData(ui->projectorComboBox->currentIndex()).toInt();
108
    settings.setValue("projector/screenNumber", proj);
92
    settings.setValue("projector/screenNumber", proj);
109
    bool diamondPattern = ui->diamondPatternCheckBox->isChecked();
93
    bool diamondPattern = ui->diamondPatternCheckBox->isChecked();
110
    settings.setValue("projector/diamondPattern", diamondPattern);
94
    settings.setValue("projector/diamondPattern", diamondPattern);
111
    vector<ScreenInfo> screenList = OpenGLContext::GetScreenInfo();
95
    vector<ScreenInfo> screenList = OpenGLContext::GetScreenInfo();
112
    settings.setValue("projector/resX", screenList[proj].resX);
96
    settings.setValue("projector/resX", screenList[proj].resX);
113
    settings.setValue("projector/resY", screenList[proj].resY);
97
    settings.setValue("projector/resY", screenList[proj].resY);
114
    //bool verticalBaseline = ui->verticalBaselineCheckbox->isChecked();
98
    //bool verticalBaseline = ui->verticalBaselineCheckbox->isChecked();
115
    //settings.setValue("projector/verticalBaseline", verticalBaseline);
99
    //settings.setValue("projector/verticalBaseline", verticalBaseline);
116
 
100
 
117
    // Cameras
101
    // Cameras
118
    QPoint cam0 = ui->camera0ComboBox->itemData(ui->camera0ComboBox->currentIndex()).toPoint();
102
    QPoint cam0 = ui->camera0ComboBox->itemData(ui->camera0ComboBox->currentIndex()).toPoint();
119
    settings.setValue("camera0/interfaceNumber", cam0.x());
103
    settings.setValue("camera0/interfaceNumber", cam0.x());
120
    settings.setValue("camera0/cameraNumber", cam0.y());
104
    settings.setValue("camera0/cameraNumber", cam0.y());
121
 
105
 
122
    QPoint cam1 = ui->camera1ComboBox->itemData(ui->camera1ComboBox->currentIndex()).toPoint();
106
    QPoint cam1 = ui->camera1ComboBox->itemData(ui->camera1ComboBox->currentIndex()).toPoint();
123
    settings.setValue("camera1/interfaceNumber", cam1.x());
107
    settings.setValue("camera1/interfaceNumber", cam1.x());
124
    settings.setValue("camera1/cameraNumber", cam1.y());
108
    settings.setValue("camera1/cameraNumber", cam1.y());
125
 
109
 
126
    float shutter = ui->shutterDoubleSpinBox->value();
110
    float shutter = ui->shutterDoubleSpinBox->value();
127
    settings.setValue("camera/shutter", shutter);
111
    settings.setValue("camera/shutter", shutter);
128
 
112
 
129
    // Trigger mode
113
    // Trigger mode
130
    if(ui->triggerHardwareRadioButton->isChecked())
114
    if(ui->triggerHardwareRadioButton->isChecked())
131
        settings.setValue("trigger/mode", "hardware");
115
        settings.setValue("trigger/mode", "hardware");
132
    else
116
    else
133
        settings.setValue("trigger/mode", "software");
117
        settings.setValue("trigger/mode", "software");
134
    unsigned int shift = ui->shiftSpinBox->value();
118
    unsigned int shift = ui->shiftSpinBox->value();
135
    settings.setValue("trigger/shift", shift);
119
    settings.setValue("trigger/shift", shift);
136
    unsigned int delay = ui->delaySpinBox->value();
120
    unsigned int delay = ui->delaySpinBox->value();
137
    settings.setValue("trigger/delay", delay);
121
    settings.setValue("trigger/delay", delay);
138
 
122
 
139
}
123
}
140
 
124
 
141
 
125
 
142
 
126
 
143
void SMPreferenceDialog::on_triggerHardwareRadioButton_clicked(){
127
void SMPreferenceDialog::on_triggerHardwareRadioButton_clicked(){
144
 
128
 
145
    ui->shiftLabel->setEnabled(true);
129
    ui->shiftLabel->setEnabled(true);
146
    ui->shiftSpinBox->setEnabled(true);
130
    ui->shiftSpinBox->setEnabled(true);
147
    ui->delayLabel->setEnabled(false);
131
    ui->delayLabel->setEnabled(false);
148
    ui->delaySpinBox->setEnabled(false);
132
    ui->delaySpinBox->setEnabled(false);
149
    ui->delayMsLabel->setEnabled(false);
133
    ui->delayMsLabel->setEnabled(false);
150
}
134
}
151
 
135
 
152
void SMPreferenceDialog::on_triggerSoftwareRadioButton_clicked(){
136
void SMPreferenceDialog::on_triggerSoftwareRadioButton_clicked(){
153
 
137
 
154
    ui->shiftLabel->setEnabled(false);
138
    ui->shiftLabel->setEnabled(false);
155
    ui->shiftSpinBox->setEnabled(false);
139
    ui->shiftSpinBox->setEnabled(false);
156
    ui->delayLabel->setEnabled(true);
140
    ui->delayLabel->setEnabled(true);
157
    ui->delaySpinBox->setEnabled(true);
141
    ui->delaySpinBox->setEnabled(true);
158
    ui->delayMsLabel->setEnabled(true);
142
    ui->delayMsLabel->setEnabled(true);
159
}
143
}
160
 
-
 
161
void SMPreferenceDialog::on_patternHorizontalCheckBox_clicked(){
-
 
162
    if(!ui->patternHorizontalCheckBox->isChecked())
-
 
163
        ui->patternVerticalCheckBox->setChecked(true);
-
 
164
}
-
 
165
 
-
 
166
void SMPreferenceDialog::on_patternVerticalCheckBox_clicked(){
-
 
167
    if(!ui->patternVerticalCheckBox->isChecked())
-
 
168
        ui->patternHorizontalCheckBox->setChecked(true);
-
 
169
}
-
 
170
 
144