--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingmodules/jp2kcodec/Inc/JP2KComponentInfo.h Thu Dec 17 09:22:31 2009 +0200
@@ -0,0 +1,312 @@
+/*
+* 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: CJ2kComponentInfo class used to collect component related
+* information such as precincts size at each resolution level and
+* list of subbands
+*
+*/
+
+
+#ifndef __JP2KCOMPONENTINFO_H__
+#define __JP2KCOMPONENTINFO_H__
+
+// INCLUDES
+#include <e32base.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CJ2kTileInfo;
+class CJ2kSubband;
+
+// CLASS DECLARATION
+
+/**
+ * JP2KComponentInfo class used to collect component related
+ * information such as precincts size at each resolution level,
+ * list of subbands, and etc. It contains the data to control
+ * where to resume the parsing of the bitstream.
+ *
+ * JP2KCodec.dll
+ * @since 2.6
+ */
+class CJ2kComponentInfo : public CBase
+{
+public:
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CJ2kComponentInfo* NewLC( CJ2kTileInfo& aTile, TUint16 aIndex );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CJ2kComponentInfo();
+
+ public: // New functions
+
+ /**
+ * At each component, parse the bitstream with LRCP progression order
+ * @since 2.6
+ * @param aTile: a reference to CJ2kTileInfo object.
+ * @return TUint8: true if incomplete, false if completed.
+ */
+ TUint8 LRCPProgressionL( CJ2kTileInfo& aTile );
+
+ /**
+ * At each component, parse the bitstream with RPCL progression order
+ * @since 2.6
+ * @param aTile: a reference to CJ2kTileInfo object.
+ * @return TUint8: true if incomplete, false if completed.
+ */
+ TUint8 RPCLProgressionL( CJ2kTileInfo& aTile );
+
+ /**
+ * At each component, parse the bitstream with CPRL progression order
+ * @since 2.6
+ * @param aTile: a reference to CJ2kTileInfo object.
+ * @return TUint8: true if incomplete, false if completed.
+ */
+ TUint8 CPRLProgressionL( CJ2kTileInfo& aTile );
+
+ /**
+ * Get the subband at specific resolution level
+ * @since 2.6
+ * @param aResLevel: resolution level.
+ * @return CJ2kSubband*: pointer to CJ2kSubband object.
+ */
+ const CJ2kSubband* SubbandAt( TUint8 aResLevel ) const;
+
+ /**
+ * Get the number of packets at specific resolution level
+ * @since 2.6
+ * @param aResLevel: resolution level.
+ * @return TUint32: number of packets.
+ */
+ TUint32 NumOfPackets( TUint8 aResLevel ) const;
+
+ /**
+ * Get the quantization exponent value for transformation
+ * @since 2.6
+ * @param aIndex: subband index.
+ * @return TUint8: exponent value.
+ */
+ TUint8 Exponent( TUint16 aIndex ) const;
+
+ /**
+ * Get the quantization mantissa value for transformation
+ * @since 2.6
+ * @param aIndex: subband index.
+ * @return TUint16: mantissa value.
+ */
+ TUint16 Mantissa( TUint16 aIndex ) const;
+
+ /**
+ * Get the magnitude bits
+ * @since 2.6
+ * @param aIndex: subband index.
+ * @return TUint8: magnitude bits.
+ */
+ TUint8 MagnitudeBits( TUint16 aIndex ) const;
+
+ /**
+ * Reset the last packet processed for each subband
+ * @since 2.6
+ */
+ void ResetLastPacketProcessed();
+
+ /**
+ * Get the resolution level
+ * @since 2.6
+ * @return TUint8: resolution level.
+ */
+ TUint8 Levels() const;
+
+ /**
+ * Get the codeblock style
+ * @since 2.6
+ * @return TUint8: codeblock style.
+ */
+ TUint8 CodeBlockStyle() const;
+
+ /**
+ * Get the number of guard
+ * @since 2.6
+ * @return TUint8: number of guard.
+ */
+ TUint8 NumGuard() const;
+
+ /**
+ * Get the quantization style
+ * @since 2.6
+ * @return TUint8: quantization style.
+ */
+ TUint8 QuantizationStyle() const;
+
+ /**
+ * Get the region of interest shifting
+ * @since 2.6
+ * @return TUint8: region of interest shifting.
+ */
+ TUint8 RoiShift() const;
+
+ /**
+ * Get the codeblock size
+ * @since 2.6
+ * @return TSize&: a reference to the codeblock size.
+ */
+ const TSize& CodeBlockSize() const;
+
+ /**
+ * Get the canvas of the component
+ * @since 2.6
+ * @return TRect&: a reference to the component's canvas.
+ */
+ const TRect& ComponentCanvas() const;
+
+ /**
+ * Get the precinct size at specific resolution level
+ * @since 2.6
+ * @param aResLevel: resolution level.
+ * @return TSize&: a reference to the precinct size.
+ */
+ const TSize& PrecinctSizeAt( TUint8 aResLevel ) const;
+
+ /**
+ * Get the minimum grid size
+ * @since 2.6
+ * @return TSize&: a reference to the minimum grid.
+ */
+ const TSize& MinGrid() const;
+
+ /**
+ * Is coding style shows SOP marker may exists in codestream
+ * @since 2.6
+ * @return TUInt8: true if SOP marker used.
+ */
+ TUint8 IsSOPMarkerUsed() const;
+
+ /**
+ * Is coding style shows EPH marker may exists in codestream
+ * @since 2.6
+ * @return TUint8: true if EPH marker used.
+ */
+ TUint8 IsEPHMarkerUsed() const;
+
+ /**
+ * Is codeblock style shows AC bypass
+ * @since 2.6
+ * @return TUint8: true if AC bypass.
+ */
+ TUint8 IsACByPass() const;
+
+ /**
+ * Is codeblock style shows termination
+ * @since 2.6
+ * @return TUint8: true if termination.
+ */
+ TUint8 IsTermination() const;
+
+ /**
+ * Is transformation reversible
+ * @since 2.6
+ * @return TUint8: true if reversible.
+ */
+ TUint8 IsReversible() const;
+
+ public: // Functions from base classes
+
+ protected: // New functions
+
+ protected: // Functions from base classes
+
+ private:
+
+ /**
+ * C++ default constructor.
+ */
+ CJ2kComponentInfo();
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL( CJ2kTileInfo& aTile, TUint16 aIndex );
+
+ public: // Data
+
+ protected: // Data
+
+ private: // Data
+
+ // Canvas of the component
+ TRect iComponentCanvas;
+
+ // Root of the subbands
+ CJ2kSubband *iRootSubband;
+
+ // Precincts at each resolution level
+ RArray<TSize> iPrecinctSizeList;
+
+ // List of grid
+ RArray<TSize> iGridList;
+
+ // Minimum grid size
+ TSize iMinGrid;
+
+ // Size of codeblock
+ TSize iCodeBlockSiz;
+
+ // Number of resolution level
+ TUint8 iNumOfLevels;
+
+ // Codeblock style
+ TUint8 iCodeBlockStyle;
+
+ // DWT transformation
+ TUint8 iWaveletTransformation;
+
+ // Coding style
+ TUint8 iCod;
+
+ // Quantization
+ TUint8 iQc;
+
+ // Region of interest
+ TUint8 iRoiShift;
+
+ // Quantization values for transformation
+ HBufC8 *iExponentList;
+
+ // Quantization values for transformation
+ HBufC16 *iMantissaList;
+
+ public: // Friend classes
+
+ protected: // Friend classes
+
+ private: // Friend classes
+};
+
+// For inliners.
+#include "JP2KComponentInfo.inl"
+
+#endif // __JP2KCOMPONENTINFO_H__