reszip/inc/rescomp.h
changeset 0 f58d6ec98e88
child 9 7c80ebddf816
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/reszip/inc/rescomp.h	Thu Dec 17 09:14:18 2009 +0200
@@ -0,0 +1,95 @@
+/*
+* Copyright (c) 1997-1999 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+#if !defined(__RESCOMP_H__)
+#define __RESCOMP_H__
+
+#include <e32base.h>
+#include <f32file.h>
+#include <s32file.h>
+
+class CDictArray;
+class CResEntry;
+
+class TBitWriter
+	{
+public:
+	TBitWriter(RWriteStream& aStream);
+	void WriteL(TInt aValue, TInt aBits);
+	void FlushL();
+private:
+	RWriteStream& iStream;
+	TInt iValue;
+	TInt iBitsWritten;
+	};
+
+class CResComp : public CBase
+	{
+public:
+	CResComp(CConsoleBase* aConsole);
+	~CResComp();
+	void LoadFileL(RFs& aFs, const TDesC& aFileName);
+	void CompressL();
+	void WriteFileL(RFs& aFs, const TDesC& aName);
+	TPtrC8 Resource(TInt aRes);
+	TInt FindInResources(TDesC8& aBuf, TInt aMax);
+	TInt OriginalFileSize();
+	TInt CompressedSize();
+	void DisplayStats();
+	TInt ResourceSize();
+	TBool IsValid();
+private:
+	void LoadBAFLCompressedFileL(RFs& aFs, const TDesC& aName);
+	void LoadUnCompressedFileL(RFs& aFs, const TDesC& aName);
+	TBool FileIsBAFLCompressedL(RFs& aFs, const TDesC& aName);
+
+	void OptimizeDict();
+	void FindEmbeddedDict(TDesC8& aMatch, TInt aStart);
+	void WriteHeaderL(RWriteStream& aStream);
+	void WriteDictionaryL(RWriteStream& aStream);
+	void WriteDictionaryHeaderL(RWriteStream& aStream);
+	void WriteDictionaryIndexL(RWriteStream& aStream);
+	void WriteDictionaryDataL(RWriteStream& aStream);
+	void WriteResourceL(RWriteStream& aStream);
+	void WriteResourceIndexL(RWriteStream& aStream);
+	void WriteResourceDataL(RWriteStream& aStream);
+	TInt CompressResourcesL(TInt aMaxDictEntries);
+	TInt AttemptCompressionL(TInt aMaxDictEntries);
+	void CheckForLongDataStringsL();
+private:
+	CConsoleBase* iConsole;
+	TUint8* iResData;
+	CDictArray* iDict;
+	TUint16* iResIndex;
+	CArrayPtrFlat<CResEntry>* iResArray;
+	TInt iResources;
+	TInt iFileLength;
+	TInt iCompressedSize;
+	TInt iLargestResourceSize;
+	TInt iMaxEntries;
+	TInt iBitsForDict;
+	TInt iBestCompression;
+	TInt iBestSize;
+	TInt iOriginalCompressedSize;
+public:
+	TBuf<80> iConOutput;
+	};
+
+
+#endif