/******************************************************** ** Copyright 2002 Earth Resource Mapping Ltd. ** This document contains proprietary source code of ** Earth Resource Mapping Ltd, and can only be used under ** one of the three licenses as described in the ** license.txt file supplied with this distribution. ** See separate license.txt file for license details ** and conditions. ** ** This software is covered by US patent #6,442,298, ** #6,102,897 and #6,633,688. Rights to use these patents ** is included in the license agreements. ** ** FILE: $Archive: /NCS/Source/include/NCSJPCPLTMarker.h $ ** CREATED: 19/12/2002 3:27:34 PM ** AUTHOR: Simon Cope ** PURPOSE: CNCSJPCPLTMarker class header ** EDITS: [xx] ddMmmyy NAME COMMENTS *******************************************************/ #ifndef NCSJPCPLTMARKER_H #define NCSJPCPLTMARKER_H #include "NCSJPCMarker.h" #include "NCSJPCPacketLengthType.h" #include "NCSJPCNode.h" /** * CNCSJPCPLTMarker class - the JPC PLT marker. * * @author Simon Cope * @version $Revision: 1.12 $ $Author: simon $ $Date: 2005/01/17 09:11:23 $ */ class NCSJPC_EXPORT_ALL CNCSJPCPLTMarker: public CNCSJPCMarker { public: /** Index of this marker WRT other PLT markers */ UINT8 m_nZplt; /** Number of packet lengths in this marker */ UINT16 m_nLengths; /** Lengths in this PLT are cumulative */ bool m_bCumulativeLengths; /** PLT's were dynamically generated */ bool m_bDynamic; /** Length offsets when hashing index */ UINT32 m_nFirstPacket; UINT64 m_nHeaderLengthOffset; UINT64 m_nDataLengthOffset; /** Default constructor, initialises members */ CNCSJPCPLTMarker(); /** Virtual destructor */ virtual ~CNCSJPCPLTMarker(); /** * Parse the marker from the JPC codestream. * @param JPC CNCSJPC to use to parse file. * @param Stream IOStream to use to parse file. * @return CNCSError NCS_SUCCESS, or Error code on failure. */ virtual CNCSError Parse(class CNCSJPC &JPC, CNCSJPCIOStream &Stream); /** * UnParse the marker to the JPC codestream. * @param Stream IOStream to use to parse file. * @param JPC CNCSJPC to use to parse file. * @return CNCSError NCS_SUCCESS, or Error code on failure. */ virtual CNCSError UnParse(class CNCSJPC &JPC, CNCSJPCIOStream &Stream); /** * Parse the marker from the JPC codestream. * @param JPC CNCSJPC to use to parse file. * @param Stream IOStream to use to parse file. * @return CNCSError NCS_SUCCESS, or Error code on failure. */ virtual bool ParseLength(class CNCSJPC &JPC, CNCSJPCIOStream &Stream, UINT16 iLength); /** * Assignment operator. * @param src Copy source. * @return void */ void operator=( const class CNCSJPCPLTMarker& src ); /** * Allocate the lengths array vector. */ void AllocLengths(void); /** * Free the lengths array vector. */ void FreeLengths(void); /** * Get a pointer to the lengths array vector. */ std::vector *GetLengths(); /** * Add a length to the lengths array. */ void AddLength(CNCSJPCPacketLengthType &Len); protected: static CNCSJPCNode::CNCSJPCNodeTracker sm_Tracker; /** Packet length(s) for tile-part */ std::vector *m_pLengths; }; #endif // !NCSJPCPLTMARKER_H