--- /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 <e32base.h>
+
+// 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__
+