// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute // SPDX-License-Identifier: GPL-3.0-only #include #include "JFJochViewerSidePanelChart.h" JFJochViewerSidePanelChart::JFJochViewerSidePanelChart(QWidget *parent) : QWidget(parent) { auto layout = new QVBoxLayout(this); combo_box = new QComboBox(this); combo_box->addItem("Azimuthal integration (1D)", 0); combo_box->addItem("Wilson plot", 1); combo_box->addItem("I/sigma", 2); combo_box->addItem("Spots (count)", 5); combo_box->addItem("Spots (intensity)", 6); combo_box->addItem("X-ray fluorescence spectrum", 4); layout->addWidget(combo_box); connect(combo_box, &QComboBox::currentIndexChanged, this, &JFJochViewerSidePanelChart::comboBoxSelected); azint_plot = new JFJochSimpleChartView(this); layout->addWidget(azint_plot); // index 0 setLayout(layout); } void JFJochViewerSidePanelChart::comboBoxSelected(int val) { redrawPlot(); } void JFJochViewerSidePanelChart::redrawPlot() { std::vector x, y; if (image) { auto index = combo_box->currentIndex(); switch (combo_box->itemData(index).toInt()) { case 0: x = image->GetAzInt1D_BinToQ(); y = image->GetAzInt1D(); azint_plot->UpdateData(x, y, "Q [Å^-1]", "", false); break; case 1: x = image->ImageData().integration_B_one_over_d_square; y = image->ImageData().integration_B_logI; azint_plot->UpdateData(x, y, "d [Å]", "ln(<I>)", true); break; case 2: x = image->ImageData().integration_Isigma_one_over_d_square; y = image->ImageData().integration_Isigma; azint_plot->UpdateData(x, y, "d [Å]", "I/sigma", true); break; case 4: x = image->Dataset().experiment.GetFluorescenceSpectrum().GetEnergy_eV(); y = image->Dataset().experiment.GetFluorescenceSpectrum().GetData(); for (auto &iter: x) iter /= 1000.0; // Convert eV to keV azint_plot->UpdateData(x, y, "E [keV]", "", false); break; case 5: x = image->ImageData().spot_plot_one_over_d_square; y = image->ImageData().spot_plot_count; azint_plot->UpdateData(x, y, "d [Å]", "Count", true); break; case 6: x = image->ImageData().spot_plot_one_over_d_square; y = image->ImageData().spot_plot_intensity; azint_plot->UpdateData(x, y, "d [Å]", "Count", true); break; } } connect(azint_plot, &JFJochSimpleChartView::writeStatusBar, [&](QString string, int timeout_ms) { emit writeStatusBar(string, timeout_ms); }); } void JFJochViewerSidePanelChart::loadImage(std::shared_ptr in_image) { image = in_image; redrawPlot(); }