diff --git a/profileplot.cpp b/profileplot.cpp index eb61f736..e0f5930c 100644 --- a/profileplot.cpp +++ b/profileplot.cpp @@ -623,7 +623,7 @@ std::vector compute_average_radial_profile( void ProfilePlot::populate() { -qDebug() << "Populate"; + m_plot->detachItems(QwtPlotItem::Rtti_PlotItem); compass->setGeometry(QRect(80,80,70,70)); QString tmp("nanometers"); diff --git a/ronchicomparedialog.cpp b/ronchicomparedialog.cpp index 3a8ab367..b0b6b948 100644 --- a/ronchicomparedialog.cpp +++ b/ronchicomparedialog.cpp @@ -19,6 +19,7 @@ RonchiCompareDialog::RonchiCompareDialog(const QImage& img1, const QString& name resize(dlgW, dlgH); // Main layout for the dialog QVBoxLayout* mainLayout = new QVBoxLayout(this); + QHBoxLayout* blinkLayout = new QHBoxLayout(); // 1. Color Legend Labels at the top QHBoxLayout* legendLayout = new QHBoxLayout(); @@ -48,19 +49,29 @@ RonchiCompareDialog::RonchiCompareDialog(const QImage& img1, const QString& name mainLayout->addWidget(m_displayLabel, 1); // 3. Controls Area - mainLayout->addWidget(new QLabel(tr("Blend Ratio (Slide to compare difference):"))); - - QSlider* slider = new QSlider(Qt::Horizontal); - slider->setRange(0, 100); - slider->setValue(50); - mainLayout->addWidget(slider); - - QPushButton* saveBtn = new QPushButton(tr("Save This Comparison Image")); - mainLayout->addWidget(saveBtn); + mainLayout->addWidget(m_info = new QLabel(tr("Blend Ratio (Slide to compare difference):"))); + m_info->setAlignment(Qt::AlignCenter); + m_info->setStyleSheet("font-weight: bold; font-size: 24px; color: #4CAF50; padding: 5px;"); + m_slider = new QSlider(Qt::Horizontal); + m_slider->setRange(0, 100); + m_slider->setValue(50); + mainLayout->addWidget(m_slider); + + m_saveBtn = new QPushButton(tr("Save This Comparison Image")); + QPushButton* blinkBtn = new QPushButton(tr("Blink")); + mainLayout->addWidget(m_saveBtn); + + blinkLayout->addSpacerItem( new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding)); + blinkLayout->addWidget(blinkBtn); + blinkLayout->addSpacerItem( new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Expanding)); + mainLayout->addLayout(blinkLayout); + blinkTimer = new QTimer(this); // Signal/Slot Connections - connect(slider, &QSlider::valueChanged, this, &RonchiCompareDialog::updateOverlay); - connect(saveBtn, &QPushButton::clicked, this, &RonchiCompareDialog::onSaveClicked); + connect(m_slider, &QSlider::valueChanged, this, &RonchiCompareDialog::updateOverlay); + connect(m_saveBtn, &QPushButton::clicked, this, &RonchiCompareDialog::onSaveClicked); + connect(blinkBtn, &QPushButton::clicked, this, &RonchiCompareDialog::startBlink); + connect(blinkTimer, &QTimer::timeout, this, &RonchiCompareDialog::blink); // Perform initial render updateOverlay(50); @@ -72,6 +83,36 @@ RonchiCompareDialog::~RonchiCompareDialog() // Destructor implementation to satisfy vtable requirements } +void RonchiCompareDialog::startBlink(){ + if (blinking){ + blinkTimer->stop(); + updateOverlay(50); + blinking = false; + m_slider->show(); + m_saveBtn->show(); + m_info->setText(tr("Blend Ratio (Slide to compare difference):")); + } + else { + blinking = true; + blinkTimer->start(300); + m_slider->hide(); + m_saveBtn->hide(); + } +} + +void RonchiCompareDialog::blink(){ + blinkone = !blinkone; + if (blinkone){ + m_displayLabel->setPixmap(QPixmap::fromImage(m_q1)); + m_info->setText(m_baseLabel->text()); + } + else { + m_displayLabel->setPixmap(QPixmap::fromImage(m_q2)); + m_info->setText(m_compLabel->text()); + } + blinkTimer->start(300); +} + cv::Mat RonchiCompareDialog::qImageToMat(const QImage& image) { // Force conversion to 4-channel ARGB to ensure predictable memory layout for OpenCV diff --git a/ronchicomparedialog.h b/ronchicomparedialog.h index c3041ae0..5dc11a3d 100644 --- a/ronchicomparedialog.h +++ b/ronchicomparedialog.h @@ -6,7 +6,8 @@ #include #include #include - +#include +#include class RonchiCompareDialog : public QDialog { Q_OBJECT @@ -18,6 +19,8 @@ class RonchiCompareDialog : public QDialog { private slots: void updateOverlay(int val); void onSaveClicked(); + void startBlink(); + void blink(); private: cv::Mat qImageToMat(const QImage& image); @@ -25,10 +28,15 @@ private slots: QImage m_q1; QImage m_q2; cv::Mat m_currentMat; - + QSlider *m_slider; QLabel* m_displayLabel; QLabel* m_baseLabel; QLabel* m_compLabel; + QLabel* m_info; + bool blinkone = true; + bool blinking = false; + QTimer *blinkTimer; + QPushButton* m_saveBtn; }; #endif // RONCHICOMPAREDIALOG_H