ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
e57::BitpackFloatEncoder Class Reference

#include <Encoder.h>

Inheritance diagram for e57::BitpackFloatEncoder:
Collaboration diagram for e57::BitpackFloatEncoder:

Public Member Functions

 BitpackFloatEncoder (unsigned bytestreamNumber, SourceDestBuffer &sbuf, unsigned outputMaxSize, FloatPrecision precision)
 
uint64_t processRecords (size_t recordCount) override
 
bool registerFlushToOutput () override
 
float bitsPerRecord () override
 
void dump (int indent=0, std::ostream &os=std::cout) const override
 
- Public Member Functions inherited from e57::BitpackEncoder
unsigned sourceBufferNextIndex () override
 
uint64_t currentRecordIndex () override
 
size_t outputAvailable () const override
 
void outputRead (char *dest, const size_t byteCount) override
 number of bytes that can be read More...
 
void outputClear () override
 get data from encoder More...
 
void sourceBufferSetNew (std::vector< SourceDestBuffer > &sbufs) override
 
size_t outputGetMaxSize () override
 
void outputSetMaxSize (unsigned byteCount) override
 
- Public Member Functions inherited from e57::Encoder
virtual ~Encoder ()=default
 
unsigned bytestreamNumber () const
 

Protected Attributes

FloatPrecision precision_
 
- Protected Attributes inherited from e57::BitpackEncoder
std::shared_ptr< SourceDestBufferImplsourceBuffer_
 
std::vector< char > outBuffer_
 
size_t outBufferFirst_
 
size_t outBufferEnd_
 
size_t outBufferAlignmentSize_
 
uint64_t currentRecordIndex_
 
- Protected Attributes inherited from e57::Encoder
unsigned bytestreamNumber_
 

Additional Inherited Members

- Static Public Member Functions inherited from e57::Encoder
static std::shared_ptr< EncoderEncoderFactory (unsigned bytestreamNumber, std::shared_ptr< CompressedVectorNodeImpl > cVector, std::vector< SourceDestBuffer > &sbuf, ustring &codecPath)
 
- Protected Member Functions inherited from e57::BitpackEncoder
 BitpackEncoder (unsigned bytestreamNumber, SourceDestBuffer &sbuf, unsigned outputMaxSize, unsigned alignmentSize)
 ================ More...
 
void outBufferShiftDown ()
 
- Protected Member Functions inherited from e57::Encoder
 Encoder (unsigned bytestreamNumber)
 

Detailed Description

Definition at line 108 of file Encoder.h.

Constructor & Destructor Documentation

◆ BitpackFloatEncoder()

BitpackFloatEncoder::BitpackFloatEncoder ( unsigned  bytestreamNumber,
SourceDestBuffer sbuf,
unsigned  outputMaxSize,
FloatPrecision  precision 
)

Definition at line 374 of file Encoder.cpp.

Member Function Documentation

◆ bitsPerRecord()

float BitpackFloatEncoder::bitsPerRecord ( )
overridevirtual

Implements e57::BitpackEncoder.

Definition at line 455 of file Encoder.cpp.

References e57::E57_SINGLE, and precision_.

◆ dump()

void BitpackFloatEncoder::dump ( int  indent = 0,
std::ostream &  os = std::cout 
) const
overridevirtual

Reimplemented from e57::BitpackEncoder.

Definition at line 461 of file Encoder.cpp.

References e57::BitpackEncoder::dump(), e57::E57_SINGLE, QtCompat::endl(), precision_, and e57::space().

◆ processRecords()

uint64_t BitpackFloatEncoder::processRecords ( size_t  recordCount)
overridevirtual

Before we add any more, try to shift current contents of outBuffer_ down to beginning of buffer. This leaves outBufferEnd_ at a natural boundary.

Verify that outBufferEnd_ is multiple of typeSize (so transfers of floats are aligned naturally in memory).

Figure out how many records will fit in output.

Can't process more records than will safely fit in output stream

Form the starting address for next available location in outBuffer

Copy floats from sourceBuffer_ to outBuffer_

E57_DOUBLE precision

Form the starting address for next available location in outBuffer

Copy doubles from sourceBuffer_ to outBuffer_

Update end of outBuffer

Update counts of records processed

Implements e57::BitpackEncoder.

Definition at line 382 of file Encoder.cpp.

References e57::BitpackEncoder::currentRecordIndex_, e57::E57_ERROR_INTERNAL, E57_EXCEPTION2, e57::E57_SINGLE, QtCompat::endl(), e57::BitpackEncoder::outBuffer_, e57::BitpackEncoder::outBufferEnd_, e57::BitpackEncoder::outBufferShiftDown(), precision_, e57::BitpackEncoder::sourceBuffer_, and e57::toString().

◆ registerFlushToOutput()

bool BitpackFloatEncoder::registerFlushToOutput ( )
overridevirtual

Since have no registers in encoder, return success

Implements e57::BitpackEncoder.

Definition at line 449 of file Encoder.cpp.

Member Data Documentation

◆ precision_

FloatPrecision e57::BitpackFloatEncoder::precision_
protected

Definition at line 122 of file Encoder.h.

Referenced by bitsPerRecord(), dump(), and processRecords().


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