aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicholas Bottone <nick@bottone.io>2023-12-13 03:20:12 -0500
committerNicholas Bottone <nick@bottone.io>2023-12-13 03:20:13 -0500
commite862c0065d448f4ccc322e6c9565ebc19498673b (patch)
treefe75e1d33b538b531383f3941e12dc651ccab2c1 /src
parent1c911da57c61d50c330ac8be6b692c3daf9aac70 (diff)
Fix scene parsing to only happen on sceneChange instead of settingsChange
Diffstat (limited to 'src')
-rw-r--r--src/raytracer/raytracer.cpp21
1 files changed, 8 insertions, 13 deletions
diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp
index 1622744..38ed2e1 100644
--- a/src/raytracer/raytracer.cpp
+++ b/src/raytracer/raytracer.cpp
@@ -111,6 +111,7 @@ void RayTracer::sceneChanged(QLabel* imageLabel) {
std::cerr << "Error loading scene: \"" << settings.sceneFilePath << "\"" << std::endl;
m_image.fill(Qt::black);
imageLabel->setPixmap(QPixmap::fromImage(m_image));
+ m_imageData = reinterpret_cast<RGBA *>(m_image.bits());
return;
}
@@ -130,17 +131,11 @@ void RayTracer::sceneChanged(QLabel* imageLabel) {
}
void RayTracer::settingsChanged(QLabel* imageLabel) {
- bool success = SceneParser::parse(settings.sceneFilePath, m_metaData);
-
- if (!success) {
- std::cerr << "Error loading scene: \"" << settings.sceneFilePath << "\"" << std::endl;
- // return;
- // render a blank image
- QImage image = QImage(576, 432, QImage::Format_RGBX8888);
- image.fill(Qt::black);
- RGBA *data = reinterpret_cast<RGBA *>(image.bits());
- m_imageData = data;
- imageLabel->setPixmap(QPixmap::fromImage(image));
+ if (settings.sceneFilePath.size() == 0) {
+ // no scene loaded
+ m_image.fill(Qt::black);
+ imageLabel->setPixmap(QPixmap::fromImage(m_image));
+ m_imageData = reinterpret_cast<RGBA *>(m_image.bits());
return;
}
@@ -149,10 +144,10 @@ void RayTracer::settingsChanged(QLabel* imageLabel) {
QImage image = QImage(width, height, QImage::Format_RGBX8888);
image.fill(Qt::black);
- RGBA *data = reinterpret_cast<RGBA *>(image.bits());
+ m_imageData = reinterpret_cast<RGBA *>(image.bits());
RayTraceScene rtScene{ width, height, m_metaData };
- this->render(data, rtScene);
+ this->render(m_imageData, rtScene);
QImage flippedImage = image.mirrored(false, false);
flippedImage = flippedImage.scaled(width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);