mirror of
https://github.com/ihhub/fheroes2.git
synced 2026-10-12 02:16:11 +00:00
Add an argument to compress data for non-gameplay functionality (#10644)
This commit is contained in:
@@ -153,7 +153,7 @@ namespace fheroes2
|
||||
return false;
|
||||
}
|
||||
|
||||
_fileData[name] = Compression::zipData( data.data(), data.size() );
|
||||
_fileData[name] = Compression::zipData( data.data(), data.size(), true );
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/***************************************************************************
|
||||
* fheroes2: https://github.com/ihhub/fheroes2 *
|
||||
* Copyright (C) 2019 - 2024 *
|
||||
* Copyright (C) 2019 - 2026 *
|
||||
* *
|
||||
* Free Heroes2 Engine: http://sourceforge.net/projects/fheroes2 *
|
||||
* Copyright (C) 2009 by Andrey Afletdinov <[email protected]> *
|
||||
@@ -100,7 +100,7 @@ std::vector<uint8_t> Compression::unzipData( const uint8_t * src, const size_t s
|
||||
return res;
|
||||
}
|
||||
|
||||
std::vector<uint8_t> Compression::zipData( const uint8_t * src, const size_t srcSize )
|
||||
std::vector<uint8_t> Compression::zipData( const uint8_t * src, const size_t srcSize, const bool isMaximumCompression )
|
||||
{
|
||||
if ( src == nullptr || srcSize == 0 ) {
|
||||
return {};
|
||||
@@ -120,7 +120,7 @@ std::vector<uint8_t> Compression::zipData( const uint8_t * src, const size_t src
|
||||
return {};
|
||||
}
|
||||
|
||||
const int ret = compress( res.data(), &dstSizeULong, src, srcSizeULong );
|
||||
const int ret = compress2( res.data(), &dstSizeULong, src, srcSizeULong, isMaximumCompression ? Z_BEST_COMPRESSION : Z_DEFAULT_COMPRESSION );
|
||||
|
||||
if ( ret != Z_OK ) {
|
||||
ERROR_LOG( "zlib error: " << ret )
|
||||
@@ -160,7 +160,7 @@ bool Compression::unzipStream( IStreamBase & inputStream, OStreamBase & outputSt
|
||||
|
||||
bool Compression::zipStreamBuf( const IStreamBuf & inputStream, OStreamBase & outputStream )
|
||||
{
|
||||
const std::vector<uint8_t> zip = zipData( inputStream.data(), inputStream.size() );
|
||||
const std::vector<uint8_t> zip = zipData( inputStream.data(), inputStream.size(), false );
|
||||
if ( zip.empty() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
+3
-2
@@ -1,6 +1,6 @@
|
||||
/***************************************************************************
|
||||
* fheroes2: https://github.com/ihhub/fheroes2 *
|
||||
* Copyright (C) 2019 - 2025 *
|
||||
* Copyright (C) 2019 - 2026 *
|
||||
* *
|
||||
* Free Heroes2 Engine: http://sourceforge.net/projects/fheroes2 *
|
||||
* Copyright (C) 2009 by Andrey Afletdinov <[email protected]> *
|
||||
@@ -42,7 +42,8 @@ namespace Compression
|
||||
std::vector<uint8_t> unzipData( const uint8_t * src, const size_t srcSize, size_t realSize = 0 );
|
||||
|
||||
// Zips the input data and returns the compressed data or an empty vector in case of an error.
|
||||
std::vector<uint8_t> zipData( const uint8_t * src, const size_t srcSize );
|
||||
// Set isMaximumCompression only when compressing data not during the gameplay.
|
||||
std::vector<uint8_t> zipData( const uint8_t * src, const size_t srcSize, const bool isMaximumCompression );
|
||||
|
||||
// Reads & unzips the zipped chunk from the given input stream and writes it to the given output
|
||||
// stream. Returns true on success or false on error.
|
||||
|
||||
@@ -496,7 +496,7 @@ namespace
|
||||
<< map.adventureMapEventMetadata << map.selectionObjectMetadata << map.capturableObjectsMetadata << map.monsterMetadata << map.artifactMetadata
|
||||
<< map.resourceMetadata << map.translationInfo;
|
||||
|
||||
const std::vector<uint8_t> temp = Compression::zipData( compressed.data(), compressed.size() );
|
||||
const std::vector<uint8_t> temp = Compression::zipData( compressed.data(), compressed.size(), false );
|
||||
|
||||
stream.putRaw( temp.data(), temp.size() );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user