summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/astra/CompositeGeometryManager.h7
-rw-r--r--src/CompositeGeometryManager.cpp39
2 files changed, 32 insertions, 14 deletions
diff --git a/include/astra/CompositeGeometryManager.h b/include/astra/CompositeGeometryManager.h
index 49d02a7..4338994 100644
--- a/include/astra/CompositeGeometryManager.h
+++ b/include/astra/CompositeGeometryManager.h
@@ -137,6 +137,13 @@ public:
bool doJobs(TJobList &jobs);
+ SJob createJobFP(CProjector3D *pProjector,
+ CFloat32VolumeData3DMemory *pVolData,
+ CFloat32ProjectionData3DMemory *pProjData);
+ SJob createJobBP(CProjector3D *pProjector,
+ CFloat32VolumeData3DMemory *pVolData,
+ CFloat32ProjectionData3DMemory *pProjData);
+
// Convenience functions for creating and running a single FP or BP job
bool doFP(CProjector3D *pProjector, CFloat32VolumeData3DMemory *pVolData,
CFloat32ProjectionData3DMemory *pProjData);
diff --git a/src/CompositeGeometryManager.cpp b/src/CompositeGeometryManager.cpp
index d1b713e..96b28e9 100644
--- a/src/CompositeGeometryManager.cpp
+++ b/src/CompositeGeometryManager.cpp
@@ -684,13 +684,12 @@ CCompositeGeometryManager::CProjectionPart* CCompositeGeometryManager::CProjecti
return new CProjectionPart(*this);
}
-
-bool CCompositeGeometryManager::doFP(CProjector3D *pProjector, CFloat32VolumeData3DMemory *pVolData,
- CFloat32ProjectionData3DMemory *pProjData)
+CCompositeGeometryManager::SJob CCompositeGeometryManager::createJobFP(CProjector3D *pProjector,
+ CFloat32VolumeData3DMemory *pVolData,
+ CFloat32ProjectionData3DMemory *pProjData)
{
- ASTRA_DEBUG("CCompositeGeometryManager::doFP");
+ ASTRA_DEBUG("CCompositeGeometryManager::createJobFP");
// Create single job for FP
- // Run result
CVolumePart *input = new CVolumePart();
input->pData = pVolData;
@@ -715,18 +714,15 @@ bool CCompositeGeometryManager::doFP(CProjector3D *pProjector, CFloat32VolumeDat
FP.eType = SJob::JOB_FP;
FP.eMode = SJob::MODE_SET;
- TJobList L;
- L.push_back(FP);
-
- return doJobs(L);
+ return FP;
}
-bool CCompositeGeometryManager::doBP(CProjector3D *pProjector, CFloat32VolumeData3DMemory *pVolData,
- CFloat32ProjectionData3DMemory *pProjData)
+CCompositeGeometryManager::SJob CCompositeGeometryManager::createJobBP(CProjector3D *pProjector,
+ CFloat32VolumeData3DMemory *pVolData,
+ CFloat32ProjectionData3DMemory *pProjData)
{
- ASTRA_DEBUG("CCompositeGeometryManager::doBP");
+ ASTRA_DEBUG("CCompositeGeometryManager::createJobBP");
// Create single job for BP
- // Run result
CProjectionPart *input = new CProjectionPart();
input->pData = pProjData;
@@ -749,8 +745,23 @@ bool CCompositeGeometryManager::doBP(CProjector3D *pProjector, CFloat32VolumeDat
BP.eType = SJob::JOB_BP;
BP.eMode = SJob::MODE_SET;
+ return BP;
+}
+
+bool CCompositeGeometryManager::doFP(CProjector3D *pProjector, CFloat32VolumeData3DMemory *pVolData,
+ CFloat32ProjectionData3DMemory *pProjData)
+{
+ TJobList L;
+ L.push_back(createJobFP(pProjector, pVolData, pProjData));
+
+ return doJobs(L);
+}
+
+bool CCompositeGeometryManager::doBP(CProjector3D *pProjector, CFloat32VolumeData3DMemory *pVolData,
+ CFloat32ProjectionData3DMemory *pProjData)
+{
TJobList L;
- L.push_back(BP);
+ L.push_back(createJobBP(pProjector, pVolData, pProjData));
return doJobs(L);
}