jfjoch_viewer: ROI can be configured more flexibly

This commit is contained in:
2025-11-05 13:40:12 +01:00
parent a0840f860d
commit 1e255a3ada
12 changed files with 278 additions and 1 deletions
+34 -1
View File
@@ -10,16 +10,29 @@ JFJochViewerImageROIStatistics::JFJochViewerImageROIStatistics(QWidget *parent)
QVBoxLayout* layout = new QVBoxLayout(this);
box_radio = new QRadioButton("Box", this);
box_radio->setChecked(true);
layout->addWidget(box_radio);
box_settings = new JFJochViewerImageROIStatistics_Box(this);
layout->addWidget(box_settings);
circle_radio = new QRadioButton("Circle", this);
layout->addWidget(circle_radio);
circle_settings = new JFJochViewerImageROIStatistics_Circle(this);
layout->addWidget(circle_settings);
radio_group = new QButtonGroup(this);
radio_group->addButton(box_radio, 1);
radio_group->addButton(circle_radio, 2);
connect(box_radio, &QRadioButton::clicked, this, &JFJochViewerImageROIStatistics::BoxButtonClicked);
connect(circle_radio, &QRadioButton::clicked, this, &JFJochViewerImageROIStatistics::CircleButtonClicked);
connect(box_settings, &JFJochViewerImageROIStatistics_Box::Updated, this, &JFJochViewerImageROIStatistics::BoxButtonClicked);
connect(circle_settings, &JFJochViewerImageROIStatistics_Circle::Updated, this, &JFJochViewerImageROIStatistics::CircleButtonClicked);
circle_settings->Disable();
box_radio->setChecked(true);
layout->addWidget(new QLabel("", this));
roi_label = new QLabel("", this);
layout->addWidget(roi_label);
@@ -50,9 +63,29 @@ void JFJochViewerImageROIStatistics::loadImage(std::shared_ptr<const JFJochReade
void JFJochViewerImageROIStatistics::SetROIBox(QRect box) {
box_radio->setChecked(true);
box_settings->ROIBoxConfigured(box);
circle_settings->Disable();
}
void JFJochViewerImageROIStatistics::SetROICircle(double x, double y, double radius) {
circle_radio->setChecked(true);
circle_settings->SetROICircle(CircleSettings{.x = x, .y = y, .r = radius});
box_settings->Disable();
}
void JFJochViewerImageROIStatistics::BoxButtonClicked() {
box_radio->setChecked(true);
box_settings->Enable();
circle_settings->Disable();
emit ROIBoxConfigured(box_settings->GetROIBox());
}
void JFJochViewerImageROIStatistics::CircleButtonClicked() {
circle_settings->Enable();
box_settings->Disable();
circle_radio->setChecked(true);
auto tmp = circle_settings->GetROICircle();
emit ROICircleConfigured(tmp.x, tmp.y, tmp.r);
}