1 #ifndef CTL_COMPOSITEVOLUME_H 2 #define CTL_COMPOSITEVOLUME_H 4 #include "abstractdynamicvolumedata.h" 114 template <
class Volume,
class... Volumes>
126 const std::vector<SubVolPtr>&
data()
const;
127 std::vector<SubVolPtr>&
data();
129 std::unique_ptr<SpectralVolumeData>
muVolume(
uint volIdx,
float centerEnergy,
130 float binWidth)
const;
137 void addSubVolume(std::unique_ptr<SpectralVolumeData> volume);
141 template <
class Volume,
class... Volumes>
142 void addSubVolumes(Volume&& volume, Volumes&&... otherVolumes);
145 void addSubVolumes()
const {}
146 template <
class Volume,
class... Volumes>
148 template <
class Volume>
184 template<
class Volume,
class... Volumes>
185 CompositeVolume::CompositeVolume(Volume&& volume, Volumes&&... otherVolumes)
187 addSubVolumes(std::forward<Volume>(volume), std::forward<Volumes>(otherVolumes)...);
200 template <
class Volume,
class... Volumes>
201 void CompositeVolume::addSubVolumes(Volume&& volume, Volumes&&... otherVolumes)
212 template <
class Volume,
class... Volumes>
221 template <
class Volume>
233 return volume.nbSubVolumes();
238 #endif // CTL_COMPOSITEVOLUME_H bool isEmpty() const
Definition: compositevolume.cpp:65
std::unique_ptr< SpectralVolumeData > muVolume(uint volIdx, float centerEnergy, float binWidth) const
Definition: compositevolume.cpp:36
uint nbSubVolumes() const
Definition: compositevolume.cpp:44
const std::vector< SubVolPtr > & data() const
Definition: compositevolume.cpp:49
static uint getTotalNbSubVolumes(const Volume &volume, const Volumes &... otherVolumes)
Definition: compositevolume.h:213
void addSubVolumes(Volume &&volume, Volumes &&... otherVolumes)
Adds all data passed to this function as sub-volumes of the CompositeVolume.
Definition: compositevolume.h:201
The CompositeVolume class is a container to hold multiple volume datasets of any type from the CTL.
Definition: compositevolume.h:108
unsigned int uint
Qt style alias for unsigned int.
Definition: modulelayout.h:6
The SpectralVolumeData class holds voxelized data (for a single material) along with information on i...
Definition: spectralvolumedata.h:40
void addSubVolume(SpectralVolumeData volume)
Definition: compositevolume.cpp:84
const SpectralVolumeData & subVolume(uint volIdx) const
Definition: compositevolume.cpp:21
Extends std::unique_ptr<T> with copy operations using the clone method of type T.
Definition: copyableuniqueptr.h:14
Definition: abstractdynamicvolumedata.h:14
std::vector< SubVolPtr > _subVolumes
the managed sub-volumes.
Definition: compositevolume.h:152