mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-28 01:04:50 +01:00
Extract RLE repeat to its own method
This commit is contained in:
committed by
Michael Steenbeek
parent
a737848e8e
commit
1f605db54b
@@ -142,13 +142,8 @@ size_t SawyerChunkReader::DecodeChunk(void * dst, size_t dstCapacity, const void
|
||||
resultLength = DecodeChunkRLE(dst, dstCapacity, src, header.length);
|
||||
break;
|
||||
case CHUNK_ENCODING_RLECOMPRESSED:
|
||||
{
|
||||
auto immBufferLength = MAX_UNCOMPRESSED_CHUNK_SIZE;
|
||||
auto immBuffer = std::make_unique<uint8[]>(immBufferLength);
|
||||
auto immLength = DecodeChunkRLE(immBuffer.get(), immBufferLength, src, header.length);
|
||||
resultLength = DecodeChunkRepeat(dst, dstCapacity, immBuffer.get(), immLength);
|
||||
resultLength = DecodeChunkRLERepeat(dst, dstCapacity, src, header.length);
|
||||
break;
|
||||
}
|
||||
case CHUNK_ENCODING_ROTATE:
|
||||
resultLength = DecodeChunkRotate(dst, dstCapacity, src, header.length);
|
||||
break;
|
||||
@@ -158,6 +153,14 @@ size_t SawyerChunkReader::DecodeChunk(void * dst, size_t dstCapacity, const void
|
||||
return resultLength;
|
||||
}
|
||||
|
||||
size_t SawyerChunkReader::DecodeChunkRLERepeat(void * dst, size_t dstCapacity, const void * src, size_t srcLength)
|
||||
{
|
||||
auto immBufferLength = MAX_UNCOMPRESSED_CHUNK_SIZE;
|
||||
auto immBuffer = std::make_unique<uint8[]>(immBufferLength);
|
||||
auto immLength = DecodeChunkRLE(immBuffer.get(), immBufferLength, src, srcLength);
|
||||
return DecodeChunkRepeat(dst, dstCapacity, immBuffer.get(), immLength);
|
||||
}
|
||||
|
||||
size_t SawyerChunkReader::DecodeChunkRLE(void * dst, size_t dstCapacity, const void * src, size_t srcLength)
|
||||
{
|
||||
auto src8 = static_cast<const uint8 *>(src);
|
||||
|
||||
@@ -73,6 +73,7 @@ public:
|
||||
|
||||
private:
|
||||
static size_t DecodeChunk(void * dst, size_t dstCapacity, const void * src, const sawyercoding_chunk_header &header);
|
||||
static size_t DecodeChunkRLERepeat(void * dst, size_t dstCapacity, const void * src, size_t srcLength);
|
||||
static size_t DecodeChunkRLE(void * dst, size_t dstCapacity, const void * src, size_t srcLength);
|
||||
static size_t DecodeChunkRepeat(void * dst, size_t dstCapacity, const void * src, size_t srcLength);
|
||||
static size_t DecodeChunkRotate(void * dst, size_t dstCapacity, const void * src, size_t srcLength);
|
||||
|
||||
Reference in New Issue
Block a user