diff -r 000000000000 -r 469c91dae73b imagingmodules/jp2kcodec/Inc/JP2KComponentInfo.h --- /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 + +// 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 iPrecinctSizeList; + + // List of grid + RArray 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__