Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pavlov <ipavlov@users.sourceforge.net>2015-06-15 03:00:00 +0300
committerKornel LesiƄski <kornel@geekhood.net>2016-05-28 02:16:54 +0300
commit54490d51d5c6b0d794dcbad2d634d4c95fc25b6c (patch)
treec3c413656432c0ef87b2841c80e42b55ad17d4e8 /CPP/7zip/UI/GUI/CompressDialog.cpp
parent0713a3ab803e57401f18432148b4139e5fe6e5dd (diff)
15.0515.05
Diffstat (limited to 'CPP/7zip/UI/GUI/CompressDialog.cpp')
-rw-r--r--CPP/7zip/UI/GUI/CompressDialog.cpp270
1 files changed, 148 insertions, 122 deletions
diff --git a/CPP/7zip/UI/GUI/CompressDialog.cpp b/CPP/7zip/UI/GUI/CompressDialog.cpp
index a2d0ac2b..23b6f52f 100644
--- a/CPP/7zip/UI/GUI/CompressDialog.cpp
+++ b/CPP/7zip/UI/GUI/CompressDialog.cpp
@@ -2,6 +2,8 @@
#include "StdAfx.h"
+#include "../../../../C/CpuArch.h"
+
#include "../../../Common/IntToString.h"
#include "../../../Common/StringConvert.h"
@@ -76,7 +78,7 @@ using namespace NFile;
using namespace NName;
using namespace NDir;
-static const int kHistorySize = 20;
+static const unsigned kHistorySize = 20;
static LPCWSTR kExeExt = L".exe";
static LPCWSTR k7zFormat = L"7z";
@@ -170,7 +172,7 @@ struct CFormatInfo
LPCWSTR Name;
UInt32 LevelsMask;
const EMethodID *MathodIDs;
- int NumMethods;
+ unsigned NumMethods;
bool Filter;
bool Solid;
bool MultiThread;
@@ -372,7 +374,7 @@ bool CCompressDialog::OnInit()
m_Format.SetCurSel(index);
continue;
}
- if (i == 0 || ai.Name.IsEqualToNoCase(m_RegistryInfo.ArcType))
+ if (i == 0 || ai.Name.IsEqualTo_NoCase(m_RegistryInfo.ArcType))
{
m_Format.SetCurSel(index);
Info.FormatIndex = arcIndex;
@@ -455,7 +457,7 @@ void CCompressDialog::UpdatePasswordControl()
bool CCompressDialog::OnButtonClicked(int buttonID, HWND buttonHWND)
{
- switch(buttonID)
+ switch (buttonID)
{
case IDB_COMPRESS_SET_ARCHIVE:
{
@@ -554,9 +556,8 @@ bool CCompressDialog::IsSFX()
static int GetExtDotPos(const UString &s)
{
- int dotPos = s.ReverseFind('.');
- int slashPos = MyMax(s.ReverseFind(WCHAR_PATH_SEPARATOR), s.ReverseFind('/'));
- if (dotPos >= 0 && dotPos > slashPos + 1)
+ int dotPos = s.ReverseFind_Dot();
+ if (dotPos > s.ReverseFind_PathSepar() + 1)
return dotPos;
return -1;
}
@@ -578,7 +579,7 @@ void CCompressDialog::OnButtonSFX()
if (dotPos >= 0)
{
UString ext = fileName.Ptr(dotPos);
- if (ext.IsEqualToNoCase(kExeExt))
+ if (ext.IsEqualTo_NoCase(kExeExt))
{
fileName.DeleteFrom(dotPos);
m_ArchivePath.SetText(fileName);
@@ -690,8 +691,7 @@ void CCompressDialog::OnOK()
return;
}
UString method = GetEncryptionMethodSpec();
- method.MakeLower_Ascii();
- if (method.Find(L"aes") == 0)
+ if (method.IsPrefixedBy_Ascii_NoCase("aes"))
{
if (Info.Password.Len() > 99)
{
@@ -820,7 +820,7 @@ bool CCompressDialog::OnCommand(int code, int itemID, LPARAM lParam)
{
if (code == CBN_SELCHANGE)
{
- switch(itemID)
+ switch (itemID)
{
case IDC_COMPRESS_ARCHIVE:
{
@@ -914,7 +914,7 @@ void CCompressDialog::SetArchiveName2(bool prevWasSFX)
if (prevWasSFX)
prevExtension = kExeExt;
else
- prevExtension = UString('.') + prevArchiverInfo.GetMainExt();
+ prevExtension = UString(L'.') + prevArchiverInfo.GetMainExt();
const unsigned prevExtensionLen = prevExtension.Len();
if (fileName.Len() >= prevExtensionLen)
if (StringsAreEqualNoCase(fileName.RightPtr(prevExtensionLen), prevExtension))
@@ -962,7 +962,7 @@ int CCompressDialog::FindRegistryFormat(const UString &name)
FOR_VECTOR (i, m_RegistryInfo.Formats)
{
const NCompression::CFormatOptions &fo = m_RegistryInfo.Formats[i];
- if (name.IsEqualToNoCase(GetUnicodeString(fo.FormatID)))
+ if (name.IsEqualTo_NoCase(GetUnicodeString(fo.FormatID)))
return i;
}
return -1;
@@ -984,7 +984,7 @@ int CCompressDialog::GetStaticFormatIndex()
{
const CArcInfoEx &ai = (*ArcFormats)[GetFormatIndex()];
for (unsigned i = 0; i < ARRAY_SIZE(g_Formats); i++)
- if (ai.Name.IsEqualToNoCase(g_Formats[i].Name))
+ if (ai.Name.IsEqualTo_NoCase(g_Formats[i].Name))
return i;
return 0; // -1;
}
@@ -1016,8 +1016,8 @@ void CCompressDialog::SetLevel()
else
level = 9;
}
- int i;
- for (i = 0; i <= 9; i++)
+
+ for (unsigned i = 0; i <= 9; i++)
{
if ((fi.LevelsMask & (1 << i)) != 0)
{
@@ -1051,7 +1051,8 @@ void CCompressDialog::SetMethod(int keepMethodId)
}
bool isSfx = IsSFX();
bool weUseSameMethod = false;
- for (int m = 0; m < fi.NumMethods; m++)
+
+ for (unsigned m = 0; m < fi.NumMethods; m++)
{
EMethodID methodID = fi.MathodIDs[m];
if (isSfx)
@@ -1066,9 +1067,10 @@ void CCompressDialog::SetMethod(int keepMethodId)
weUseSameMethod = true;
continue;
}
- if ((defaultMethod.IsEqualToNoCase(method) || m == 0) && !weUseSameMethod)
+ if ((defaultMethod.IsEqualTo_NoCase(method) || m == 0) && !weUseSameMethod)
m_Method.SetCurSel(itemIndex);
}
+
if (!weUseSameMethod)
{
SetDictionary();
@@ -1079,19 +1081,19 @@ void CCompressDialog::SetMethod(int keepMethodId)
bool CCompressDialog::IsZipFormat()
{
const CArcInfoEx &ai = (*ArcFormats)[GetFormatIndex()];
- return ai.Name.IsEqualToNoCase(L"zip");
+ return ai.Name.IsEqualTo_Ascii_NoCase("zip");
}
void CCompressDialog::SetEncryptionMethod()
{
_encryptionMethod.ResetContent();
const CArcInfoEx &ai = (*ArcFormats)[GetFormatIndex()];
- if (ai.Name.IsEqualToNoCase(L"7z"))
+ if (ai.Name.IsEqualTo_Ascii_NoCase("7z"))
{
_encryptionMethod.AddString(TEXT("AES-256"));
_encryptionMethod.SetCurSel(0);
}
- else if (ai.Name.IsEqualToNoCase(L"zip"))
+ else if (ai.Name.IsEqualTo_Ascii_NoCase("zip"))
{
int index = FindRegistryFormat(ai.Name);
UString encryptionMethod;
@@ -1102,7 +1104,7 @@ void CCompressDialog::SetEncryptionMethod()
}
_encryptionMethod.AddString(TEXT("ZipCrypto"));
_encryptionMethod.AddString(TEXT("AES-256"));
- _encryptionMethod.SetCurSel(encryptionMethod.Find(L"AES") == 0 ? 1 : 0);
+ _encryptionMethod.SetCurSel(encryptionMethod.IsPrefixedBy_Ascii_NoCase("aes") ? 1 : 0);
}
}
@@ -1155,138 +1157,149 @@ void CCompressDialog::SetDictionary()
m_Dictionary.ResetContent();
const CArcInfoEx &ai = (*ArcFormats)[GetFormatIndex()];
int index = FindRegistryFormat(ai.Name);
- UInt32 defaultDictionary = (UInt32)(Int32)-1;
+ UInt32 defaultDict = (UInt32)(Int32)-1;
+
if (index >= 0)
{
const NCompression::CFormatOptions &fo = m_RegistryInfo.Formats[index];
- if (fo.Method.IsEqualToNoCase(GetMethodSpec()))
- defaultDictionary = fo.Dictionary;
+ if (fo.Method.IsEqualTo_NoCase(GetMethodSpec()))
+ defaultDict = fo.Dictionary;
}
+
int methodID = GetMethodID();
UInt32 level = GetLevel2();
if (methodID < 0)
return;
const UInt64 maxRamSize = GetMaxRamSizeForProgram();
+
switch (methodID)
{
case kLZMA:
case kLZMA2:
{
static const UInt32 kMinDicSize = (1 << 16);
- if (defaultDictionary == (UInt32)(Int32)-1)
+ if (defaultDict == (UInt32)(Int32)-1)
{
- if (level >= 9) defaultDictionary = (1 << 26);
- else if (level >= 7) defaultDictionary = (1 << 25);
- else if (level >= 5) defaultDictionary = (1 << 24);
- else if (level >= 3) defaultDictionary = (1 << 20);
- else defaultDictionary = (kMinDicSize);
+ if (level >= 9) defaultDict = (1 << 26);
+ else if (level >= 7) defaultDict = (1 << 25);
+ else if (level >= 5) defaultDict = (1 << 24);
+ else if (level >= 3) defaultDict = (1 << 20);
+ else defaultDict = (kMinDicSize);
}
- int i;
+
AddDictionarySize(kMinDicSize);
m_Dictionary.SetCurSel(0);
- for (i = 20; i <= 30; i++)
- for (int j = 0; j < 2; j++)
+
+ for (unsigned i = 20; i <= 31; i++)
+ for (unsigned j = 0; j < 2; j++)
{
if (i == 20 && j > 0)
continue;
- UInt32 dictionary = (1 << i) + (j << (i - 1));
- if (dictionary >
- #ifdef _WIN64
- (1 << 30)
+ UInt32 dict = ((UInt32)(2 + j) << (i - 1));
+ if (dict >
+ #ifdef MY_CPU_64BIT
+ (3 << 29)
#else
(1 << 26)
#endif
)
continue;
- AddDictionarySize(dictionary);
+ AddDictionarySize(dict);
UInt64 decomprSize;
- UInt64 requiredComprSize = GetMemoryUsage(dictionary, decomprSize);
- if (dictionary <= defaultDictionary && requiredComprSize <= maxRamSize)
+ UInt64 requiredComprSize = GetMemoryUsage(dict, decomprSize);
+ if (dict <= defaultDict && requiredComprSize <= maxRamSize)
m_Dictionary.SetCurSel(m_Dictionary.GetCount() - 1);
}
- // SetNearestSelectComboBox(m_Dictionary, defaultDictionary);
+ // SetNearestSelectComboBox(m_Dictionary, defaultDict);
break;
}
+
case kPPMd:
{
- if (defaultDictionary == (UInt32)(Int32)-1)
+ if (defaultDict == (UInt32)(Int32)-1)
{
- if (level >= 9) defaultDictionary = (192 << 20);
- else if (level >= 7) defaultDictionary = ( 64 << 20);
- else if (level >= 5) defaultDictionary = ( 16 << 20);
- else defaultDictionary = ( 4 << 20);
+ if (level >= 9) defaultDict = (192 << 20);
+ else if (level >= 7) defaultDict = ( 64 << 20);
+ else if (level >= 5) defaultDict = ( 16 << 20);
+ else defaultDict = ( 4 << 20);
}
- int i;
- for (i = 20; i < 31; i++)
- for (int j = 0; j < 2; j++)
+
+ for (unsigned i = 20; i < 31; i++)
+ for (unsigned j = 0; j < 2; j++)
{
if (i == 20 && j > 0)
continue;
- UInt32 dictionary = (1 << i) + (j << (i - 1));
- if (dictionary >
- #ifdef _WIN64
+ UInt32 dict = ((UInt32)(2 + j) << (i - 1));
+ if (dict >
+ #ifdef MY_CPU_64BIT
(1 << 30)
#else
(1 << 29)
#endif
)
continue;
- AddDictionarySize(dictionary);
+ AddDictionarySize(dict);
UInt64 decomprSize;
- UInt64 requiredComprSize = GetMemoryUsage(dictionary, decomprSize);
- if (dictionary <= defaultDictionary && requiredComprSize <= maxRamSize || m_Dictionary.GetCount() == 0)
+ UInt64 requiredComprSize = GetMemoryUsage(dict, decomprSize);
+ if (dict <= defaultDict && requiredComprSize <= maxRamSize || m_Dictionary.GetCount() == 0)
m_Dictionary.SetCurSel(m_Dictionary.GetCount() - 1);
}
- SetNearestSelectComboBox(m_Dictionary, defaultDictionary);
+
+ SetNearestSelectComboBox(m_Dictionary, defaultDict);
break;
}
+
case kDeflate:
{
AddDictionarySize(32 << 10);
m_Dictionary.SetCurSel(0);
break;
}
+
case kDeflate64:
{
AddDictionarySize(64 << 10);
m_Dictionary.SetCurSel(0);
break;
}
+
case kBZip2:
{
- if (defaultDictionary == (UInt32)(Int32)-1)
+ if (defaultDict == (UInt32)(Int32)-1)
{
- if (level >= 5)
- defaultDictionary = (900 << 10);
- else if (level >= 3)
- defaultDictionary = (500 << 10);
- else
- defaultDictionary = (100 << 10);
+ if (level >= 5) defaultDict = (900 << 10);
+ else if (level >= 3) defaultDict = (500 << 10);
+ else defaultDict = (100 << 10);
}
- for (int i = 1; i <= 9; i++)
+
+ for (unsigned i = 1; i <= 9; i++)
{
- UInt32 dictionary = (i * 100) << 10;
- AddDictionarySize(dictionary);
- if (dictionary <= defaultDictionary || m_Dictionary.GetCount() == 0)
+ UInt32 dict = ((UInt32)i * 100) << 10;
+ AddDictionarySize(dict);
+ if (dict <= defaultDict || m_Dictionary.GetCount() == 0)
m_Dictionary.SetCurSel(m_Dictionary.GetCount() - 1);
}
+
break;
}
+
case kPPMdZip:
{
- if (defaultDictionary == (UInt32)(Int32)-1)
- defaultDictionary = (1 << (19 + (level > 8 ? 8 : level)));
- for (int i = 20; i <= 28; i++)
+ if (defaultDict == (UInt32)(Int32)-1)
+ defaultDict = (1 << (19 + (level > 8 ? 8 : level)));
+
+ for (unsigned i = 20; i <= 28; i++)
{
- UInt32 dictionary = (1 << i);
- AddDictionarySize(dictionary);
+ UInt32 dict = (1 << i);
+ AddDictionarySize(dict);
UInt64 decomprSize;
- UInt64 requiredComprSize = GetMemoryUsage(dictionary, decomprSize);
- if (dictionary <= defaultDictionary && requiredComprSize <= maxRamSize || m_Dictionary.GetCount() == 0)
+ UInt64 requiredComprSize = GetMemoryUsage(dict, decomprSize);
+ if (dict <= defaultDict && requiredComprSize <= maxRamSize || m_Dictionary.GetCount() == 0)
m_Dictionary.SetCurSel(m_Dictionary.GetCount() - 1);
}
- SetNearestSelectComboBox(m_Dictionary, defaultDictionary);
+
+ SetNearestSelectComboBox(m_Dictionary, defaultDict);
break;
}
}
@@ -1322,16 +1335,19 @@ void CCompressDialog::SetOrder()
const CArcInfoEx &ai = (*ArcFormats)[GetFormatIndex()];
int index = FindRegistryFormat(ai.Name);
UInt32 defaultOrder = (UInt32)(Int32)-1;
+
if (index >= 0)
{
const NCompression::CFormatOptions &fo = m_RegistryInfo.Formats[index];
- if (fo.Method.IsEqualToNoCase(GetMethodSpec()))
+ if (fo.Method.IsEqualTo_NoCase(GetMethodSpec()))
defaultOrder = fo.Order;
}
+
int methodID = GetMethodID();
UInt32 level = GetLevel2();
if (methodID < 0)
return;
+
switch (methodID)
{
case kLZMA:
@@ -1339,10 +1355,10 @@ void CCompressDialog::SetOrder()
{
if (defaultOrder == (UInt32)(Int32)-1)
defaultOrder = (level >= 7) ? 64 : 32;
- for (int i = 3; i <= 8; i++)
- for (int j = 0; j < 2; j++)
+ for (unsigned i = 3; i <= 8; i++)
+ for (unsigned j = 0; j < 2; j++)
{
- UInt32 order = (1 << i) + (j << (i - 1));
+ UInt32 order = ((UInt32)(2 + j) << (i - 1));
if (order <= 256)
AddOrder(order);
}
@@ -1350,66 +1366,64 @@ void CCompressDialog::SetOrder()
SetNearestSelectComboBox(m_Order, defaultOrder);
break;
}
+
case kPPMd:
{
if (defaultOrder == (UInt32)(Int32)-1)
{
- if (level >= 9)
- defaultOrder = 32;
- else if (level >= 7)
- defaultOrder = 16;
- else if (level >= 5)
- defaultOrder = 6;
- else
- defaultOrder = 4;
+ if (level >= 9) defaultOrder = 32;
+ else if (level >= 7) defaultOrder = 16;
+ else if (level >= 5) defaultOrder = 6;
+ else defaultOrder = 4;
}
- int i;
+
AddOrder(2);
AddOrder(3);
- for (i = 2; i < 8; i++)
- for (int j = 0; j < 4; j++)
+
+ for (unsigned i = 2; i < 8; i++)
+ for (unsigned j = 0; j < 4; j++)
{
- UInt32 order = (1 << i) + (j << (i - 2));
+ UInt32 order = (4 + j) << (i - 2);
if (order < 32)
AddOrder(order);
}
+
AddOrder(32);
SetNearestSelectComboBox(m_Order, defaultOrder);
break;
}
+
case kDeflate:
case kDeflate64:
{
if (defaultOrder == (UInt32)(Int32)-1)
{
- if (level >= 9)
- defaultOrder = 128;
- else if (level >= 7)
- defaultOrder = 64;
- else
- defaultOrder = 32;
+ if (level >= 9) defaultOrder = 128;
+ else if (level >= 7) defaultOrder = 64;
+ else defaultOrder = 32;
}
- int i;
- for (i = 3; i <= 8; i++)
- for (int j = 0; j < 2; j++)
+
+ for (unsigned i = 3; i <= 8; i++)
+ for (unsigned j = 0; j < 2; j++)
{
- UInt32 order = (1 << i) + (j << (i - 1));
+ UInt32 order = ((UInt32)(2 + j) << (i - 1));;
if (order <= 256)
AddOrder(order);
}
+
AddOrder(methodID == kDeflate64 ? 257 : 258);
SetNearestSelectComboBox(m_Order, defaultOrder);
break;
}
+
case kBZip2:
- {
break;
- }
+
case kPPMdZip:
{
if (defaultOrder == (UInt32)(Int32)-1)
defaultOrder = level + 3;
- for (int i = 2; i <= 16; i++)
+ for (unsigned i = 2; i <= 16; i++)
AddOrder(i);
SetNearestSelectComboBox(m_Order, defaultOrder);
break;
@@ -1442,9 +1456,9 @@ void CCompressDialog::SetSolidBlockSize()
if (level == 0)
return;
- UInt32 dictionary = GetDictionarySpec();
- if (dictionary == (UInt32)(Int32)-1)
- dictionary = 1;
+ UInt32 dict = GetDictionarySpec();
+ if (dict == (UInt32)(Int32)-1)
+ dict = 1;
UInt32 defaultBlockSize = (UInt32)(Int32)-1;
@@ -1453,7 +1467,7 @@ void CCompressDialog::SetSolidBlockSize()
if (index >= 0)
{
const NCompression::CFormatOptions &fo = m_RegistryInfo.Formats[index];
- if (fo.Method.IsEqualToNoCase(GetMethodSpec()))
+ if (fo.Method.IsEqualTo_NoCase(GetMethodSpec()))
defaultBlockSize = fo.BlockLogSize;
}
@@ -1461,9 +1475,10 @@ void CCompressDialog::SetSolidBlockSize()
m_Solid.SetItemData(index, (UInt32)kNoSolidBlockSize);
m_Solid.SetCurSel(0);
bool needSet = defaultBlockSize == (UInt32)(Int32)-1;
- for (int i = 20; i <= 36; i++)
+
+ for (unsigned i = 20; i <= 36; i++)
{
- if (needSet && dictionary >= (((UInt64)1 << (i - 7))) && i <= 32)
+ if (needSet && dict >= (((UInt64)1 << (i - 7))) && i <= 32)
defaultBlockSize = i;
TCHAR s[40];
ConvertUInt32ToString(1 << (i % 10), s);
@@ -1473,6 +1488,7 @@ void CCompressDialog::SetSolidBlockSize()
int index = (int)m_Solid.AddString(s);
m_Solid.SetItemData(index, (UInt32)i);
}
+
index = (int)m_Solid.AddString(LangString(IDS_COMPRESS_SOLID));
m_Solid.SetItemData(index, kSolidBlockSize);
if (defaultBlockSize == (UInt32)(Int32)-1)
@@ -1497,7 +1513,7 @@ void CCompressDialog::SetNumThreads()
if (index >= 0)
{
const NCompression::CFormatOptions &fo = m_RegistryInfo.Formats[index];
- if (fo.Method.IsEqualToNoCase(GetMethodSpec()) && fo.NumThreads != (UInt32)(Int32)-1)
+ if (fo.Method.IsEqualTo_NoCase(GetMethodSpec()) && fo.NumThreads != (UInt32)(Int32)-1)
defaultValue = fo.NumThreads;
}
@@ -1521,7 +1537,7 @@ void CCompressDialog::SetNumThreads()
SetNearestSelectComboBox(m_NumThreads, defaultValue);
}
-UInt64 CCompressDialog::GetMemoryUsage(UInt32 dictionary, UInt64 &decompressMemory)
+UInt64 CCompressDialog::GetMemoryUsage(UInt32 dict, UInt64 &decompressMemory)
{
decompressMemory = UInt64(Int64(-1));
UInt32 level = GetLevel2();
@@ -1536,6 +1552,7 @@ UInt64 CCompressDialog::GetMemoryUsage(UInt32 dictionary, UInt64 &decompressMemo
if (fi.Filter && level >= 9)
size += (12 << 20) * 2 + (5 << 20);
UInt32 numThreads = GetNumThreads2();
+
if (IsZipFormat())
{
UInt32 numSubThreads = 1;
@@ -1545,13 +1562,15 @@ UInt64 CCompressDialog::GetMemoryUsage(UInt32 dictionary, UInt64 &decompressMemo
if (numMainThreads > 1)
size += (UInt64)numMainThreads << 25;
}
+
int methidId = GetMethodID();
+
switch (methidId)
{
case kLZMA:
case kLZMA2:
{
- UInt32 hs = dictionary - 1;
+ UInt32 hs = dict - 1;
hs |= (hs >> 1);
hs |= (hs >> 2);
hs |= (hs >> 4);
@@ -1562,9 +1581,9 @@ UInt64 CCompressDialog::GetMemoryUsage(UInt32 dictionary, UInt64 &decompressMemo
hs >>= 1;
hs++;
UInt64 size1 = (UInt64)hs * 4;
- size1 += (UInt64)dictionary * 4;
+ size1 += (UInt64)dict * 4;
if (level >= 5)
- size1 += (UInt64)dictionary * 4;
+ size1 += (UInt64)dict * 4;
size1 += (2 << 20);
UInt32 numThreads1 = 1;
@@ -1573,27 +1592,31 @@ UInt64 CCompressDialog::GetMemoryUsage(UInt32 dictionary, UInt64 &decompressMemo
size1 += (2 << 20) + (4 << 20);
numThreads1 = 2;
}
+
UInt32 numBlockThreads = numThreads / numThreads1;
+
if (methidId == kLZMA || numBlockThreads == 1)
- size1 += (UInt64)dictionary * 3 / 2;
+ size1 += (UInt64)dict * 3 / 2;
else
{
- UInt64 chunkSize = (UInt64)dictionary << 2;
+ UInt64 chunkSize = (UInt64)dict << 2;
chunkSize = MyMax(chunkSize, (UInt64)(1 << 20));
chunkSize = MyMin(chunkSize, (UInt64)(1 << 28));
- chunkSize = MyMax(chunkSize, (UInt64)dictionary);
+ chunkSize = MyMax(chunkSize, (UInt64)dict);
size1 += chunkSize * 2;
}
size += size1 * numBlockThreads;
- decompressMemory = dictionary + (2 << 20);
+ decompressMemory = dict + (2 << 20);
return size;
}
+
case kPPMd:
{
- decompressMemory = dictionary + (2 << 20);
+ decompressMemory = dict + (2 << 20);
return size + decompressMemory;
}
+
case kDeflate:
case kDeflate64:
{
@@ -1606,18 +1629,21 @@ UInt64 CCompressDialog::GetMemoryUsage(UInt32 dictionary, UInt64 &decompressMemo
decompressMemory = (2 << 20);
return size;
}
+
case kBZip2:
{
decompressMemory = (7 << 20);
UInt64 memForOneThread = (10 << 20);
return size + memForOneThread * numThreads;
}
+
case kPPMdZip:
{
- decompressMemory = dictionary + (2 << 20);
+ decompressMemory = dict + (2 << 20);
return size + (UInt64)decompressMemory * numThreads;
}
}
+
return (UInt64)(Int64)-1;
}