Skip to content

Commit

Permalink
Binary import bugfix
Browse files Browse the repository at this point in the history
  • Loading branch information
medicalphysics committed Nov 11, 2019
1 parent 7fc829c commit 2ff7cfb
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 4 deletions.
14 changes: 11 additions & 3 deletions src/opendxmc/src/binaryimportpipeline.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ Copyright 2019 Erlend Andersen
BinaryImportPipeline::BinaryImportPipeline(QObject* parent)
:QObject(parent)
{

}

void BinaryImportPipeline::setDimension(const std::array<std::size_t, 3>& dimensions)
Expand All @@ -38,13 +37,15 @@ void BinaryImportPipeline::setDimension(const std::array<std::size_t, 3>& dimens
return;
}
m_dimensions = dimensions;
validate();
}

void BinaryImportPipeline::setDimension(int position, int value)
{
if (value <= 0 || value > 2048)
return;
m_dimensions[position] = static_cast<std::size_t>(value);
validate();
}

void BinaryImportPipeline::setSpacing(const std::array<double, 3>& spacing)
Expand All @@ -55,13 +56,15 @@ void BinaryImportPipeline::setSpacing(const std::array<double, 3>& spacing)
return;
}
m_spacing = spacing;
validate();
}

void BinaryImportPipeline::setSpacing(int position, double value)
{
if (value <= 0)
return;
m_spacing[position] = value;
validate();
}

template<typename T>
Expand Down Expand Up @@ -272,11 +275,16 @@ void BinaryImportPipeline::validate()
for (std::size_t i = 0; i < 3; ++i)
origin[i] = -(m_dimensions[i] * m_spacing[i] * 0.5);
//generating image containers
auto densImage = std::make_shared<ImageContainer>(DensityImageContainer(m_densityArray, m_dimensions, m_spacing, origin));
auto matImage = std::make_shared<ImageContainer>(MaterialImageContainer(m_materialArray, m_dimensions, m_spacing, origin));
auto densImage = std::make_shared<DensityImageContainer>(m_densityArray, m_dimensions, m_spacing, origin);
auto matImage = std::make_shared<MaterialImageContainer>(m_materialArray, m_dimensions, m_spacing, origin);
densImage->ID = ImageContainer::generateID();
matImage->ID = densImage->ID;

//clear arrays
m_materialArray = nullptr;
m_densityArray = nullptr;

//make material definition array
std::vector<Material> materials;
materials.reserve(matInd.size());
for (auto& [ind, m] : m_materialMap)
Expand Down
2 changes: 1 addition & 1 deletion src/opendxmc/src/binaryimportwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ BinaryImportWidget::BinaryImportWidget(QWidget* parent)
auto materialBox = new QGroupBox(tr("Materials array:"), this);
auto materialLayout = new QVBoxLayout;
materialBox->setLayout(materialLayout);
auto materialDescription = new QLabel(tr("Select binary material array. The material array must be a binary file consisting of one 8 bit number per index (type of unsigned char or uint8). This supports up to 255 materials, note that 0 is reserved for air. The size of the array must be dimension_x * dimension_y * dimension_z bytes. The array is read in standard C-style, meaning the first index is varying most."), this);
auto materialDescription = new QLabel(tr("Select binary material array. The material array must be a binary file consisting of one 8 bit number per index (type of unsigned char or uint8). This supports up to 255 materials. The size of the array must be dimension_x * dimension_y * dimension_z bytes. The array is read in standard C-style, meaning the first index is varying most."), this);
materialDescription->setWordWrap(true);
materialLayout->addWidget(materialDescription);
auto materialFileSelect = new FileSelectWidget(this, tr("Select material binary file"));
Expand Down
2 changes: 2 additions & 0 deletions src/opendxmc/src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ MainWindow::MainWindow(QWidget* parent)
auto progressIndicator = new ProgressIndicator(this);
connect(m_importPipeline, &ImageImportPipeline::processingDataStarted, progressIndicator, &ProgressIndicator::startAnimation);
connect(m_importPipeline, &ImageImportPipeline::processingDataEnded, progressIndicator, &ProgressIndicator::stopAnimation);
connect(m_binaryImportPipeline, &BinaryImportPipeline::processingDataStarted, progressIndicator, &ProgressIndicator::startAnimation);
connect(m_binaryImportPipeline, &BinaryImportPipeline::processingDataEnded, progressIndicator, &ProgressIndicator::stopAnimation);
connect(m_simulationPipeline, &SimulationPipeline::processingDataStarted, progressIndicator, &ProgressIndicator::startAnimation);
connect(m_simulationPipeline, &SimulationPipeline::processingDataEnded, progressIndicator, &ProgressIndicator::stopAnimation);
statusBar->addPermanentWidget(progressIndicator);
Expand Down

0 comments on commit 2ff7cfb

Please sign in to comment.