DNA Calib 1.1
Project brief
Public Member Functions | Private Attributes | List of all members
dna::LODConstraint Class Reference

#include <LODConstraint.h>

Collaboration diagram for dna::LODConstraint:
Collaboration graph

Public Member Functions

 LODConstraint (std::uint16_t maxLOD, std::uint16_t minLOD, MemoryResource *memRes)
 
 LODConstraint (ConstArrayView< std::uint16_t > lods, MemoryResource *memRes)
 
bool hasImpactOn (std::uint16_t lodCount) const
 
std::uint16_t getMaxLOD () const
 
std::uint16_t getMinLOD () const
 
std::uint16_t getLODCount () const
 
void clampTo (std::uint16_t lodCount)
 
void applyTo (Vector< std::uint16_t > &unconstrainedLODs) const
 
void applyTo (DynArray< std::uint16_t > &unconstrainedLODs) const
 

Private Attributes

Vector< std::uint16_t > lods
 

Constructor & Destructor Documentation

◆ LODConstraint() [1/2]

dna::LODConstraint::LODConstraint ( std::uint16_t  maxLOD,
std::uint16_t  minLOD,
MemoryResource memRes 
)
20 : lods{memRes} {
21 assert(maxLOD <= minLOD);
22 lods.resize(static_cast<std::size_t>(minLOD - maxLOD) + 1ul);
23 std::iota(lods.begin(), lods.end(), maxLOD);
24}
Vector< std::uint16_t > lods
Definition: dna/LODConstraint.h:25

References lods.

◆ LODConstraint() [2/2]

dna::LODConstraint::LODConstraint ( ConstArrayView< std::uint16_t >  lods,
MemoryResource memRes 
)
26 : lods{lods_.begin(), lods_.end(),
27 memRes} {
28 std::sort(lods.begin(), lods.end());
29}

References lods.

Member Function Documentation

◆ applyTo() [1/2]

void dna::LODConstraint::applyTo ( DynArray< std::uint16_t > &  unconstrainedLODs) const
61 {
62 extd::filter(unconstrainedLODs, extd::byPosition(lods));
63}
impl::LUTFilter< TLookUpTable, impl::LUTStrategy::ByPosition > byPosition(const TLookUpTable &lookUpTable)
Definition: utils/Extd.h:107
void filter(std::vector< T, Args... > &source, Predicate pred)
Definition: utils/Extd.h:55

References extd::byPosition(), extd::filter(), and lods.

◆ applyTo() [2/2]

void dna::LODConstraint::applyTo ( Vector< std::uint16_t > &  unconstrainedLODs) const

◆ clampTo()

void dna::LODConstraint::clampTo ( std::uint16_t  lodCount)
51 {
52 extd::filter(lods, [lodCount](std::uint16_t lod, std::size_t /*unused*/) {
53 return lod < lodCount;
54 });
55}

References extd::filter(), and lods.

Referenced by dna::FilteredInputArchive::process().

◆ getLODCount()

std::uint16_t dna::LODConstraint::getLODCount ( ) const
47 {
48 return static_cast<std::uint16_t>(lods.size());
49}

References lods.

Referenced by dna::FilteredInputArchive::process().

◆ getMaxLOD()

std::uint16_t dna::LODConstraint::getMaxLOD ( ) const
39 {
40 return (lods.empty() ? std::uint16_t{} : lods.front());
41}

References lods.

Referenced by dna::FilteredInputArchive::process().

◆ getMinLOD()

std::uint16_t dna::LODConstraint::getMinLOD ( ) const
43 {
44 return (lods.empty() ? std::uint16_t{} : lods.back());
45}

References lods.

◆ hasImpactOn()

bool dna::LODConstraint::hasImpactOn ( std::uint16_t  lodCount) const
31 {
32 std::uint16_t lod = {};
33 for (auto it = lods.begin(); (it != lods.end()) && (lod < lodCount); ++it) {
34 lod = static_cast<std::uint16_t>(lod + static_cast<std::uint16_t>(lod == *it));
35 }
36 return (lod != lodCount);
37}

References lods.

Referenced by dna::FilteredInputArchive::process().

Member Data Documentation

◆ lods

Vector<std::uint16_t> dna::LODConstraint::lods
private

The documentation for this class was generated from the following files: