--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditorengine/inc/CJpegSave.h Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,99 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description:
+*
+*/
+
+
+//
+// Jpeg encoder class
+
+
+#ifndef __CJPEGSAVE_H__
+#define __CJPEGSAVE_H__
+
+#include <e32base.h>
+#include <f32file.h>
+
+#include "TBitmapHandle.h"
+#include "MJpegSave.h"
+
+class CFbsBitmap;
+class TSHuffman;
+
+class CJpegSave
+ : public CBase
+ , public MJpegSave
+ {
+ public:
+ static CJpegSave* NewL( RFs* aFs, RFile* aFile );
+ static CJpegSave* NewLC( RFs* aFs, RFile* aFile );
+ ~CJpegSave();
+
+ private:
+ CJpegSave( RFs* aFs, RFile* aFile );
+ void ConstructL();
+
+ public: // MJpegSave
+ //void SaveL( const CFbsBitmap* aBitmap, const TDesC16& aFileName );
+ void StartSaveL( const TSize& aSize, TPtr8 aExif, TInt aSaveBufferSize, TInt aQuality );
+ void SaveBlock( const TBitmapHandle& aBitmap );
+ void FinalizeSave();
+ TPtrC8 Finalize();
+
+ private:
+ void WriteHuffman( TInt aValue );
+ void CreateHuffmanL( TSHuffman* aHuffman, const TUint8* aBits, const TUint8* aVal );
+ void WriteBits( TUint32 aValue, TInt aNumBits );
+ TInt WriteDct( TInt* aDct, TSHuffman* aDc, TSHuffman* aAc );
+ void Dct( TInt* aSource, TInt* aTarget );
+ void Rgb2Yuv( TUint32* aRgb, TInt aWidth, TInt* aY, TInt* aU, TInt* aV );
+ void MakeTables( TInt aQuality, TUint8* aY, TUint8* aUV );
+
+ void WriteSaveBuffer( const TUint8* aSrc, TInt aBytes );
+ void WriteSaveBuffer( TUint8 aValue );
+ void WriteSaveBuffer( TUint16 aValue );
+ void FlushSaveBuf();
+
+ private:
+
+ RFs* iFs;
+ RFile* iSaveFile;
+ TInt iSaveBufSize;
+ TUint8* iSaveBuf;
+ TInt iSaveBufPos;
+ TInt iSaveBufBitPos;
+ TUint8 iSaveByte;
+/*
+ TUint8* iBuffer;
+ TInt iBufPos;
+ TInt iBufBitPos;
+*/
+ TSHuffman* iHuffman[ 4 ];
+ TSHuffman* iCurrentHuffman;
+ TUint8* iCurrentQuant;
+
+ TInt iDctMul[ 64 ][ 64 ];
+
+ TInt iDy;
+ TInt iDu;
+ TInt iDv;
+
+ TUint8 iYQuant[ 64 ];
+ TUint8 iUVQuant[ 64 ];
+
+ };
+
+#endif