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 @@
#include "GUI/Views/MaskWidgets/MaskResultsPresenter.h"
#include "Device/ProDetector/DetectorMask.h"
#include "Device/ProDetector/RegionOfInterest.h"
#include "GUI/Models/IntensityDataItem.h"
#include "GUI/Models/MaskItems.h"
#include "GUI/Models/SessionModel.h"
......@@ -87,18 +86,13 @@ void MaskResultsPresenter::backup_data()
OutputData<double>* MaskResultsPresenter::createMaskPresentation() const
{
// Requesting mask information
std::unique_ptr<RegionOfInterest> roi;
std::unique_ptr<IShape2D> roi;
DetectorMask detectorMask;
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);
if (MaskItem* maskItem = dynamic_cast<MaskItem*>(m_maskModel->itemForIndex(itemIndex))) {
if (maskItem->modelType() == "RegionOfInterest") {
double xlow = maskItem->getItemValue(RectangleItem::P_XLOW).toDouble();
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));
roi = maskItem->createShape();
} else {
std::unique_ptr<IShape2D> shape(maskItem->createShape());
bool mask_value = maskItem->getItemValue(MaskItem::P_MASK_VALUE).toBool();
......@@ -107,14 +101,18 @@ OutputData<double>* MaskResultsPresenter::createMaskPresentation() const
}
}
if (!detectorMask.hasMasks() && !roi)
return 0;
// ROI mask has to be the last one, it can not be "unmasked" by other shapes
if (roi)
detectorMask.addMask(*roi, true);
if (!detectorMask.hasMasks())
return nullptr;
OutputData<double>* result = m_intensityDataItem->getOutputData()->clone();
detectorMask.initMaskData(result->axes());
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;
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