1 #ifndef CTL_ABSTRACTPROJECTOR_H 2 #define CTL_ABSTRACTPROJECTOR_H 5 #include "img/spectralvolumedata.h" 13 class AcquisitionSetup;
14 class CompositeVolume;
15 class SparseVoxelVolume;
16 typedef SpectralVolumeData VolumeData;
65 QMetaObject::Connection _progressConnection;
107 template <
typename ProjectorType,
typename... ConstructorArguments>
108 auto makeProjector(ConstructorArguments&&... arguments) ->
109 typename std::enable_if<std::is_convertible<ProjectorType*, AbstractProjector*>::value,
110 std::unique_ptr<ProjectorType>>::type
112 return std::unique_ptr<ProjectorType>(
new ProjectorType(
113 std::forward<ConstructorArguments>(arguments)...));
145 #endif // CTL_ABSTRACTPROJECTOR_H void information(QString info)
virtual bool isLinear() const
Returns true if the projection operation is linear.
Definition: abstractprojector.cpp:52
virtual ProjectionData projectComposite(const CompositeVolume &volume)
Provides the functionality to forward project CompositeVolume data.
Definition: abstractprojector.cpp:69
QVariant toVariant() const override
Stores the contents of this instance in a QVariant.
Definition: abstractprojector.cpp:218
void connectToMessageHandler(bool includeProgress)
Connects this instance's signals to the CTL's MessageHandler.
Definition: abstractprojector.cpp:308
void fromVariant(const QVariant &variant) override
Sets the contents of the object based on the QVariant variant.
Definition: abstractprojector.cpp:233
virtual void setParameter(const QVariant ¶meter)
Sets the parameters of this instance based on the passed QVariant parameter. Parameters need to follo...
Definition: abstractprojector.cpp:208
void projectionFinished(int viewNb)
virtual ProjectionData project(const VolumeData &volume)=0
Provides the actual forward projection functionality.
Holds a CTSystem together with the information about the system settings for all views from which pro...
Definition: acquisitionsetup.h:175
The ProjectionData class is the container class used to store all projections from all views.
Definition: projectiondata.h:19
Definition: sparsevoxelvolume.h:14
The AbstractProjector class is the abstract base class defining the interfaces for forward projectors...
Definition: abstractprojector.h:68
Specify an interface for de-/serialization from/to QVariants.
Definition: serializationinterface.h:17
std::unique_ptr< ProjectorNotifier > _notifier
The notifier object used for signal emission.
Definition: abstractprojector.h:101
The CompositeVolume class is a container to hold multiple volume datasets of any type from the CTL.
Definition: compositevolume.h:108
#define CTL_TYPE_ID(newIndex)
Definition: serializationinterface.h:189
The SpectralVolumeData class holds voxelized data (for a single material) along with information on i...
Definition: spectralvolumedata.h:40
virtual ProjectionData projectSparse(const SparseVoxelVolume &volume)
Provides the functionality to forward project SparseVoxelVolume data.
Definition: abstractprojector.cpp:97
void connectNotifierToMessageHandler(bool includeProgress=false)
Connects the notifier to the CTL's MessageHandler.
Definition: abstractprojector.cpp:285
virtual void configure(const AcquisitionSetup &setup)=0
Configures the projector.
Helper class that can emit signals during calculations of a certain projector.
Definition: abstractprojector.h:53
ProjectionData configureAndProject(const AcquisitionSetup &setup, const VolumeData &volume)
Performs a forward projection with a precedent configuration of the projector.
Definition: abstractprojector.cpp:129
virtual ProjectorNotifier * notifier()
Returns a pointer to the notifier of the projector.
Definition: abstractprojector.cpp:273
virtual QVariant parameter() const
Returns the parameters of this instance as QVariant.
Definition: abstractprojector.cpp:199