Skip to content

Commit 3e282c1

Browse files
committed
dome radius instead of diameter
sphere initialization wrong directory fixed
1 parent 7e97252 commit 3e282c1

File tree

4 files changed

+24
-9
lines changed

4 files changed

+24
-9
lines changed

relightlab/lightgeometry.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,15 @@ LightsGeometry::LightsGeometry(QWidget *parent): QFrame(parent) {
6868
grid->setColumnMinimumWidth(0, 200);
6969
grid->addWidget(new QLabel("Image width:"), 2, 0);
7070
grid->addWidget(image_width = new QDoubleSpinBox, 2, 1);
71-
image_width->setRange(0, 1000);
71+
image_width->setRange(0, 10000);
7272
grid->addWidget(new QLabel("mm"), 2, 2);
7373
connect(image_width, QOverload<double>::of(&QDoubleSpinBox::valueChanged), [&](double v) { qRelightApp->project().dome.imageWidth = v; });
7474

75-
grid->addWidget(new QLabel("Diameter:"), 3, 0);
75+
grid->addWidget(new QLabel("Dome radius:"), 3, 0);
7676
grid->addWidget(diameter = new QDoubleSpinBox, 3, 1);
77-
diameter->setRange(0, 1000);
77+
diameter->setRange(0, 10000);
7878
grid->addWidget(new QLabel("mm"), 3, 2);
79-
connect(diameter, QOverload<double>::of(&QDoubleSpinBox::valueChanged), [&](double v) { qRelightApp->project().dome.domeDiameter = v; });
79+
connect(diameter, QOverload<double>::of(&QDoubleSpinBox::valueChanged), [&](double v) { qRelightApp->project().dome.domeDiameter = v*2.0; });
8080

8181
grid->addWidget(new QLabel("Vertical offset:"), 4, 0);
8282
grid->addWidget(vertical_offset = new QDoubleSpinBox, 4, 1);
@@ -127,7 +127,7 @@ void LightsGeometry::init() {
127127
vertical_offset->setEnabled(spherical);
128128

129129
image_width->setValue(dome.imageWidth);
130-
diameter->setValue(dome.domeDiameter);
130+
diameter->setValue(dome.domeDiameter/2.0);
131131
vertical_offset->setValue(dome.verticalOffset);
132132
directions_view->initFromDome(dome);
133133
}

relightlab/mainwindow.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ void MainWindow::init() {
146146
image_frame->init();
147147
align_frame->init();
148148
scale_frame->init();
149+
sphere_frame->init();
149150
lights_frame->init();
150151
crop_frame->init();
151152
rti_frame->init();

relightlab/sphererow.cpp

+16-3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include <QLabel>
1212
#include <QProgressBar>
1313
#include <QPushButton>
14+
#include <QMessageBox>
1415

1516
DetectHighlights::DetectHighlights(Sphere *_sphere, bool update) {
1617
sphere = _sphere;
@@ -20,6 +21,7 @@ DetectHighlights::DetectHighlights(Sphere *_sphere, bool update) {
2021
}
2122

2223
void DetectHighlights::run() {
24+
//TODO: create a setStatus function in Task.
2325
mutex.lock();
2426
status = RUNNING;
2527
mutex.unlock();
@@ -32,7 +34,14 @@ void DetectHighlights::run() {
3234

3335
Image &image = project.images[i];
3436

35-
QImage img(image.filename);
37+
QImage img(project.dir.filePath(image.filename));
38+
if(img.isNull()) {
39+
mutex.lock();
40+
status = FAILED;
41+
mutex.unlock();
42+
progressed(QString("Failed loading image: %1").arg(image.filename), 100);
43+
return;
44+
}
3645
sphere->findHighlight(img, i, image.skip, update_positions);
3746

3847
int progress = std::min(99, (int)(100*(i+1) / project.images.size()));
@@ -118,8 +127,12 @@ void SphereRow::remove() {
118127
emit removeme(this);
119128
}
120129

121-
void SphereRow::updateStatus(QString /*msg*/, int percent) {
122-
// status->setText(msg);
130+
void SphereRow::updateStatus(QString msg, int percent) {
131+
if(detect_highlights->status == Task::FAILED) {
132+
QMessageBox::critical(this, "Could not detect highlights!", msg);
133+
progress->setValue(0);
134+
return;
135+
}
123136
progress->setValue(percent);
124137
reflections->update();
125138
if(percent == 100) {

src/sphere.cpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,8 @@ void Sphere::findHighlight(QImage img, int n, bool skip, bool update_positions)
230230
float d = sqrt(cx*cx + cy*cy);
231231
if(d > smallradius) continue;
232232
}
233-
233+
assert(x < img.width());
234+
assert(y < img.height());
234235
QRgb c = img.pixel(x, y);
235236
int g = qGray(c);
236237

0 commit comments

Comments
 (0)