1.0.0-rc.87

This commit is contained in:
2025-09-30 20:43:53 +02:00
parent 79c3b3c5ea
commit 99b7dc07f7
157 changed files with 442 additions and 318 deletions
+37 -12
View File
@@ -3,6 +3,7 @@
#include "JFJochViewerImageStatistics.h"
#include <QFormLayout>
#include <QRegularExpression>
static QString mkSourceInstrumentText(const DiffractionExperiment& exp) {
QString src, inst;
@@ -61,11 +62,11 @@ JFJochViewerImageStatistics::JFJochViewerImageStatistics(QWidget *parent) : QWid
sample_name = new QLabel(this);
layout->addRow("Sample:", sample_name);
error_pixels = new QLabel(this);
layout->addRow(new QLabel("Error pixels:"), error_pixels);
exposure_time = new QLabel(this);
layout->addRow(new QLabel("Exposure Time:"), exposure_time);
sat_pixels = new QLabel(this);
layout->addRow(new QLabel("Sat. pixels:"), sat_pixels);
rotation_angle = new QLabel(this);
layout->addRow(new QLabel("Image angle:"), rotation_angle);
valid_values = new QLabel(this);
layout->addRow(new QLabel("Valid values:"), valid_values);
@@ -99,6 +100,17 @@ JFJochViewerImageStatistics::JFJochViewerImageStatistics(QWidget *parent) : QWid
}
QString TrimZeros(double number, int precision) {
auto s = QString::number(number, 'f', precision);
s.remove(QRegularExpression("\\.?0+$"));
if (s.isEmpty()) s = "0";
return s;
}
QString FormatTime(std::chrono::microseconds time) {
return TrimZeros(time.count()/1e6, 6);
}
void JFJochViewerImageStatistics::loadImage(std::shared_ptr<const JFJochReaderImage> image) {
if (!image) {
source_name->setText("");
@@ -107,9 +119,12 @@ void JFJochViewerImageStatistics::loadImage(std::shared_ptr<const JFJochReaderIm
dataset_name->setToolTip("");
detector_name->setText("");
detector_name->setToolTip("");
error_pixels->setText("");
sat_pixels->setText("");
exposure_time->setText("");
exposure_time->setToolTip("");
rotation_angle->setText("");
rotation_angle->setToolTip("");
valid_values->setText("");
valid_values->setToolTip("");
spots->setText("");
bkg_estimate->setText("");
indexed->setText("");
@@ -146,16 +161,24 @@ void JFJochViewerImageStatistics::loadImage(std::shared_ptr<const JFJochReaderIm
detector_name->setText(text);
source_name->setText(mkSourceInstrumentText(exp));
source_name->setToolTip(mkSampleTooltip(exp));
source_name->setToolTip(mkSourceInstrumentTooltip(exp));
sample_name->setText(mkSampleText(exp));
sample_name->setToolTip(mkSampleTooltip(exp));
text = QString("<b>%1</b>").arg(image->ErrorPixels().size());
error_pixels->setText(text);
text = QString("<b>%1</b>").arg(image->SaturatedPixels().size());
sat_pixels->setText(text);
if (exp.GetGoniometer()) {
rotation_angle->setText(QString("<b>%1°</b>")
.arg(TrimZeros(exp.GetGoniometer()->GetIncrement_deg(), 3)));
rotation_angle->setToolTip(QString("Start angle: <b>%1°</b><br/>This image: <b>%2°</b>")
.arg(TrimZeros(exp.GetGoniometer()->GetStart_deg(), 3))
.arg(TrimZeros(exp.GetGoniometer()->GetAngle_deg(image->ImageData().number), 3))
);
} else {
rotation_angle->setText(QString("-"));
rotation_angle->setToolTip("");
}
exposure_time->setText(QString("<b>%1</b> s").arg(FormatTime(exp.GetImageTime())));
exposure_time->setToolTip(QString("Count time: <b>%1</b> s<br/>").arg(FormatTime(exp.GetImageCountTime())));
text = QString("<b>%1</b>").arg(image->ImageData().spots.size());
spots->setText(text);
@@ -170,6 +193,8 @@ void JFJochViewerImageStatistics::loadImage(std::shared_ptr<const JFJochReaderIm
.arg(image->ValidPixels().begin()->first)
.arg(image->ValidPixels().rbegin()->first);
valid_values->setText(text);
valid_values->setToolTip(QString("Error pixels: <b>%1</b><br/>Saturated pixels: <b>%2</b>")
.arg(image->ErrorPixels().size()).arg(image->SaturatedPixels().size()));
if (!image->Dataset().bkg_estimate.empty()) {
text = QString("<b>%1</b>").arg(image->ImageData().bkg_estimate.value_or(0));