diff -r 000000000000 -r 469c91dae73b imagingmodules/jp2kcodec/Inc/JP2KCodeBlock.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imagingmodules/jp2kcodec/Inc/JP2KCodeBlock.h Thu Dec 17 09:22:31 2009 +0200 @@ -0,0 +1,222 @@ +/* +* Copyright (c) 2003, 2004 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: JP2KCodeBlock class used to collect the codeblock +* related information such as compressed data and data length. +* +*/ + + +#ifndef __JP2KCODEBLOCK_H__ +#define __JP2KCODEBLOCK_H__ + +// INCLUDES +#include + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class CJ2kPacket; + +// CLASS DECLARATION + +/** + * JP2KCodeBlock class used to collect the code block + * related information such as compressed data, data + * length, and etc. + * + * JP2KCodec.dll + * @since 2.6 + */ +class CJ2kCodeBlock : public CBase + { + public: // Constructors and destructor + + /** + * C++ default constructor. + */ + CJ2kCodeBlock(); + + /** + * Destructor. + */ + virtual ~CJ2kCodeBlock(); + + public: // New functions + + /** + * Set the canvas of the code block + * @since 2.6 + * @param aX: x position of the codeblock. + * @param aY: y position of the codeblock. + * @param aWidth: width of the codeblock. + * @param aHeight: height of the codeblock. + */ + void SetCodeBlockCanvas( TInt32 aX, TInt32 aY, TInt32 aWidth, TInt32 aHeight ); + + /** + * Initialize the number of segment + * @since 2.6 + * @param aLayer: number of layer. + */ + void InitializeL( TUint16 aLayer ); + + /** + * Get the data buffer descriptor + * @since 2.6 + * @return HBufC8*: pointer to the descriptor of the data buffer. + */ + HBufC8* DataL(); + + /** + * Get the pointer to the data portion + * @since 2.6 + * @return TUint8*: pointer to the data buffer. + */ + const TUint8* Data() const; + + /** + * Get the last pass + * @since 2.6 + * @return TInt8: the last pass. + */ + TInt8 LastPass() const; + + /** + * Get the pass index + * @since 2.6 + * @return TInt8: the pass index. + */ + TUint8 PassIndex() const; + + /** + * Get the number of empty bit planes + * @since 2.6 + * @return TInt8: the empty bit planes. + */ + TUint8 EmptyBitplanes() const; + + /** + * Get the canvas of the codeblock + * @since 2.6 + * @return TRect&: reference to the canvas of the codeblock. + */ + const TRect& CodeBlockCanvas() const; + + /** + * Get the data length + * @since 2.6 + * @return TInt32: the data length. + */ + TUint32 DataLength() const; + + /** + * Get the data size at specific segment + * @since 2.6 + * @param aIndex: the specific segment. + * @return TInt16: the data size at specific segment. + */ + TUint16 CblkLength( TUint16 aIndex ) const; + + /** + * Get the pass per segment at specific segment + * @since 2.6 + * @param aIndex: the specific segment. + * @return TInt16: the pass per segment at specific segment. + */ + TUint16 PassesPerSegment( TUint16 aIndex ) const; + + /** + * Reset the pass index to 0 + * @since 2.6 + */ + void ResetPassIndex(); + + /** + * Increment the pass index + * @since 2.6 + */ + void IncrementPassIndex(); + + /** + * Set to indicate that the codeblock has been decoded + * @since 2.6 + */ + void SetCodeBlockDecoded(); + + public: // Functions from base classes + + protected: // New functions + + protected: // Functions from base classes + + private: + + public: // Data + + protected: // Data + + private: // Data + + // Last pass + TInt8 iLastPass; + + // Pass index + TUint8 iPassIndex; + + // Empty bit plane + TUint8 iEmptyBitplane; + + // Bits length + TUint8 iLengthBits; + + // Data length + TUint32 iDataLength; + + // Data size of each segment + HBufC16 *iDataSize; + + // Number of pass per segment + HBufC16 *iPassesPerSegment; + + // Number of segment + HBufC16 *iNumSegment; + + // Canvas of the code block + TRect iCodeBlockCanvas; + + // Compressed image data + HBufC8 *iData; + + // True if codeblock has been decoded + TUint8 iIsDecoded; + + public: // Friend classes + friend class CJ2kPacket; + + protected: // Friend classes + + private: // Friend classes + }; + +// For inliners. +#include "JP2KCodeBlock.inl" + +#endif // __JP2KCODEBLOCK_H__ +