Add an argument to compress data for non-gameplay functionality (#10644)

This commit is contained in:
Ihar Hubchyk
2026-04-05 12:07:52 +08:00
committed by GitHub
parent e5debe7953
commit 6ebf0204d6
4 changed files with 9 additions and 8 deletions
+1 -1
View File
@@ -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;
}
+4 -4
View File
@@ -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
View File
@@ -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.
+1 -1
View File
@@ -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() );