Skip to content
Snippets Groups Projects
Commit 67154285 authored by Matthias Puchner's avatar Matthias Puchner
Browse files

Use mask (inverted rectangle) in MaskPresenter instead of RegionOfInterest

parent 02027aa6
No related branches found
No related tags found
1 merge request!88Remove RegionOfInterest
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include "GUI/Views/MaskWidgets/MaskResultsPresenter.h" #include "GUI/Views/MaskWidgets/MaskResultsPresenter.h"
#include "Device/ProDetector/DetectorMask.h" #include "Device/ProDetector/DetectorMask.h"
#include "Device/ProDetector/RegionOfInterest.h"
#include "GUI/Models/IntensityDataItem.h" #include "GUI/Models/IntensityDataItem.h"
#include "GUI/Models/MaskItems.h" #include "GUI/Models/MaskItems.h"
#include "GUI/Models/SessionModel.h" #include "GUI/Models/SessionModel.h"
...@@ -87,18 +86,13 @@ void MaskResultsPresenter::backup_data() ...@@ -87,18 +86,13 @@ void MaskResultsPresenter::backup_data()
OutputData<double>* MaskResultsPresenter::createMaskPresentation() const OutputData<double>* MaskResultsPresenter::createMaskPresentation() const
{ {
// Requesting mask information // Requesting mask information
std::unique_ptr<RegionOfInterest> roi; std::unique_ptr<IShape2D> roi;
DetectorMask detectorMask; DetectorMask detectorMask;
for (int i_row = m_maskModel->rowCount(m_maskContainerIndex); i_row > 0; --i_row) { for (int i_row = m_maskModel->rowCount(m_maskContainerIndex); i_row > 0; --i_row) {
QModelIndex itemIndex = m_maskModel->index(i_row - 1, 0, m_maskContainerIndex); QModelIndex itemIndex = m_maskModel->index(i_row - 1, 0, m_maskContainerIndex);
if (MaskItem* maskItem = dynamic_cast<MaskItem*>(m_maskModel->itemForIndex(itemIndex))) { if (MaskItem* maskItem = dynamic_cast<MaskItem*>(m_maskModel->itemForIndex(itemIndex))) {
if (maskItem->modelType() == "RegionOfInterest") { if (maskItem->modelType() == "RegionOfInterest") {
double xlow = maskItem->getItemValue(RectangleItem::P_XLOW).toDouble(); roi = maskItem->createShape();
double ylow = maskItem->getItemValue(RectangleItem::P_YLOW).toDouble();
double xup = maskItem->getItemValue(RectangleItem::P_XUP).toDouble();
double yup = maskItem->getItemValue(RectangleItem::P_YUP).toDouble();
roi.reset(new RegionOfInterest(m_intensityDataItem->getOutputData()->axes(), xlow,
ylow, xup, yup));
} else { } else {
std::unique_ptr<IShape2D> shape(maskItem->createShape()); std::unique_ptr<IShape2D> shape(maskItem->createShape());
bool mask_value = maskItem->getItemValue(MaskItem::P_MASK_VALUE).toBool(); bool mask_value = maskItem->getItemValue(MaskItem::P_MASK_VALUE).toBool();
...@@ -107,14 +101,18 @@ OutputData<double>* MaskResultsPresenter::createMaskPresentation() const ...@@ -107,14 +101,18 @@ OutputData<double>* MaskResultsPresenter::createMaskPresentation() const
} }
} }
if (!detectorMask.hasMasks() && !roi) // ROI mask has to be the last one, it can not be "unmasked" by other shapes
return 0; if (roi)
detectorMask.addMask(*roi, true);
if (!detectorMask.hasMasks())
return nullptr;
OutputData<double>* result = m_intensityDataItem->getOutputData()->clone(); OutputData<double>* result = m_intensityDataItem->getOutputData()->clone();
detectorMask.initMaskData(result->axes()); detectorMask.initMaskData(result->axes());
for (size_t i = 0; i < result->getAllocatedSize(); ++i) for (size_t i = 0; i < result->getAllocatedSize(); ++i)
if (detectorMask.isMasked(i) || (roi && !roi->isInROI(i))) if (detectorMask.isMasked(i))
(*result)[i] = 0.0; (*result)[i] = 0.0;
return result; return result;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment