![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
#include <Encoder.h>


Public Member Functions | |
| BitpackIntegerEncoder (bool isScaledInteger, unsigned bytestreamNumber, SourceDestBuffer &sbuf, unsigned outputMaxSize, int64_t minimum, int64_t maximum, double scale, double offset) | |
| 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 | |
| bool | isScaledInteger_ |
| int64_t | minimum_ |
| int64_t | maximum_ |
| double | scale_ |
| double | offset_ |
| unsigned | bitsPerRecord_ |
| uint64_t | sourceBitMask_ |
| unsigned | registerBitsUsed_ |
| RegisterT | register_ |
Protected Attributes inherited from e57::BitpackEncoder | |
| std::shared_ptr< SourceDestBufferImpl > | sourceBuffer_ |
| 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< Encoder > | EncoderFactory (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) | |
| BitpackIntegerEncoder::BitpackIntegerEncoder | ( | bool | isScaledInteger, |
| unsigned | bytestreamNumber, | ||
| SourceDestBuffer & | sbuf, | ||
| unsigned | outputMaxSize, | ||
| int64_t | minimum, | ||
| int64_t | maximum, | ||
| double | scale, | ||
| double | offset | ||
| ) |
Get pointer to parent ImageFileImpl
Definition at line 636 of file Encoder.cpp.
References e57::BitpackIntegerEncoder< RegisterT >::bitsPerRecord_, e57::BitpackIntegerEncoder< RegisterT >::isScaledInteger_, e57::BitpackIntegerEncoder< RegisterT >::maximum_, e57::BitpackIntegerEncoder< RegisterT >::minimum_, offset, e57::BitpackIntegerEncoder< RegisterT >::offset_, e57::BitpackIntegerEncoder< RegisterT >::register_, e57::BitpackIntegerEncoder< RegisterT >::registerBitsUsed_, e57::BitpackIntegerEncoder< RegisterT >::scale_, and e57::BitpackIntegerEncoder< RegisterT >::sourceBitMask_.
|
overridevirtual |
Implements e57::BitpackEncoder.
Definition at line 847 of file Encoder.cpp.
|
overridevirtual |
Reimplemented from e57::BitpackEncoder.
Definition at line 853 of file Encoder.cpp.
References e57::binaryString(), e57::BitpackEncoder::dump(), QtCompat::endl(), e57::hexString(), offset_, and e57::space().
|
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 sizeof(RegisterT) (so transfers of RegisterT are aligned naturally in memory).
Precalculate exact maximum number of records that will fit in output before overflow.
Number of transfers is the smaller of what was requested and what will fit.
Form the starting address for next available location in outBuffer
Copy bits from sourceBuffer_ to outBuffer_
The parameter isScaledInteger_ determines which version of getNextInt64 gets called
Enforce min/max specification on value
Double check that no bits outside of the mask are set
Mask off upper bits (just in case)
See if uValue bits will fit in register
Have more than one registers worth, fill register, transfer, then fill some more
Before transfer, double check address within bounds
Input will exactly fill register, insert value, then transfer
Before transfer, double check address within bounds
There is extra room in register, insert value, but don't do transfer yet
Update tail of output buffer
Double check end is ok
Update counts of records processed
Implements e57::BitpackEncoder.
Definition at line 657 of file Encoder.cpp.
References e57::binaryString(), e57::E57_ERROR_INTERNAL, e57::E57_ERROR_VALUE_OUT_OF_BOUNDS, E57_EXCEPTION2, QtCompat::endl(), e57::hexString(), min(), offset_, and e57::toString().
|
overridevirtual |
If have any used bits in register, transfer to output, padded in MSBits with zeros to RegisterT boundary
Implements e57::BitpackEncoder.
Definition at line 819 of file Encoder.cpp.
References QtCompat::endl().
|
protected |
Definition at line 164 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().
|
protected |
Definition at line 159 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().
|
protected |
Definition at line 161 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().
|
protected |
Definition at line 160 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().
|
protected |
Definition at line 163 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().
|
protected |
Definition at line 167 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().
|
protected |
Definition at line 166 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().
|
protected |
Definition at line 162 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().
|
protected |
Definition at line 165 of file Encoder.h.
Referenced by e57::BitpackIntegerEncoder< RegisterT >::BitpackIntegerEncoder().