JFJochAzIntImageView: Change SetData interface

This commit is contained in:
2025-11-13 19:54:41 +01:00
parent 12dca02aa8
commit e3ee59a0a0
3 changed files with 24 additions and 8 deletions
+2 -2
View File
@@ -87,8 +87,8 @@ void JFJochViewerSidePanelChart::redrawPlot() {
const auto &ds = image->Dataset();
int az_bins = ds.azimuthal_bins;
int q_bins = ds.q_bins;
if (az_bins > 1 && q_bins > 0 && profile.size() == static_cast<size_t>(az_bins * q_bins)) {
azint_image->SetData(profile, az_bins, q_bins);
if (az_bins > 0 && q_bins > 0 && profile.size() == static_cast<size_t>(az_bins * q_bins)) {
azint_image->SetData(profile, ds.az_int_bin_to_phi, ds.az_int_bin_to_q, az_bins);
} else {
azint_image->Clear();
}
+17 -5
View File
@@ -4,6 +4,8 @@
#include "JFJochAzIntImageView.h"
#include <QVBoxLayout>
#include "../../common/JFJochException.h"
JFJochAzIntImageView::JFJochAzIntImageView(QWidget *parent)
: QWidget(parent), label(new QLabel(this)) {
label->setAlignment(Qt::AlignCenter);
@@ -22,12 +24,22 @@ void JFJochAzIntImageView::Clear() {
// data: size = azimuthal_bins * q_bins
// Layout: q varies fastest (i % q_bins == q index)
void JFJochAzIntImageView::SetData(const std::vector<float> &data, int azimuthal_bins, int q_bins) {
if (azimuthal_bins <= 0 || q_bins <= 0 ||
data.size() != static_cast<size_t>(azimuthal_bins * q_bins)) {
void JFJochAzIntImageView::SetData(const std::vector<float> &data,
const std::vector<float> &phi,
const std::vector<float> &q,
int azimuthal_bins) {
if (azimuthal_bins <= 0) {
Clear();
return;
}
throw std::runtime_error("azimuthal_bins <= 0");
}
int q_bins = data.size() / azimuthal_bins;
if (q_bins <= 0 || phi.size() != data.size() || q.size() != data.size()) {
Clear();
throw JFJochException(JFJochExceptionCategory::InputParameterInvalid,
"Mismatch in input size");
}
float local_min = range_min, local_max = range_max;
if (auto_range) {
+5 -1
View File
@@ -27,7 +27,11 @@ class JFJochAzIntImageView : public QWidget {
public:
explicit JFJochAzIntImageView(QWidget *parent = nullptr);
void Clear();
void SetData(const std::vector<float>& data, int azimuthal_bins, int q_bins);
void SetData(const std::vector<float> &data,
const std::vector<float> &phi,
const std::vector<float> &q,
int azimuthal_bins);
void SetColorScale(ColorScaleEnum map);
void SetRangeAuto();