OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimNitfFileHeader.h
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: MIT
4 //
5 // See LICENSE.txt file in the top level directory for more details.
6 //
7 // Author: Garrett Potts
8 //
9 // Description: Nitf support class
10 //
11 //********************************************************************
12 // $Id$
13 
14 #ifndef ossimNitfFileHeader_HEADER
15 #define ossimNitfFileHeader_HEADER 1
16 
17 #include <ossim/base/ossimDrect.h>
18 #include <ossim/base/ossimIosFwd.h>
19 #include <ossim/base/ossimObject.h>
24 
25 #include <vector>
26 
33 // These structures are just data holders and will
34 // not be used directly by outside users. This is for internal use
35 //
37 {
38 public:
39  virtual std::ostream& print(std::ostream& out) const;
40 
42  ossim_uint64 dataOffset)
43  :theImageHeaderOffset(headerOffset),
44  theImageDataOffset(dataOffset)
45  {
46  }
47 
50 };
51 
52 
54 {
55 public:
57  ossim_uint64 dataOffset)
58  :theSymbolHeaderOffset(headerOffset),
59  theSymbolDataOffset(dataOffset)
60  {
61  }
62 
65 };
66 
68 {
69 public:
71  ossim_uint64 dataOffset)
72  :theGraphicHeaderOffset(headerOffset),
73  theGraphicDataOffset(dataOffset)
74  {
75  }
76 
79 };
80 
82 {
83 public:
85  ossim_uint64 dataOffset)
86  :theLabelHeaderOffset(headerOffset),
87  theLabelDataOffset(dataOffset)
88  {
89  }
90 
93 };
94 
96 {
97 public:
99  ossim_uint64 dataOffset)
100  :theTextHeaderOffset(headerOffset),
101  theTextDataOffset(dataOffset)
102  {
103  }
104 
107 
108 };
109 
111 {
112 public:
114  ossim_uint64 dataOffset)
115  :theDataExtSegHeaderOffset(headerOffset),
116  theDataExtSegDataOffset(dataOffset)
117  {
118  }
119 
122 };
123 
126 {
127 public:
128  friend class ossimNitfFile;
129 
131  virtual ~ossimNitfFileHeader();
132 
133  virtual void parseStream(ossim::istream& in)= 0;
134  virtual void writeStream(ossim::ostream& out)=0;
135 
136  virtual bool isEncrypted()const=0;
137  virtual ossim_int32 getNumberOfImages()const=0;
138  virtual ossim_int32 getNumberOfLabels()const=0;
139  virtual ossim_int32 getNumberOfSymbols()const=0;
140  virtual ossim_int32 getNumberOfGraphics()const=0;
141  virtual ossim_int32 getNumberOfTextSegments()const=0;
142  virtual ossim_int32 getNumberOfDataExtSegments()const=0;
143  virtual ossim_int32 getNumberOfReservedExtSegments()const=0;
144  virtual ossim_int32 getHeaderSize()const=0;
145 
146  void addTag(const ossimNitfTagInformation& tag, bool unique=true);
147  virtual void removeTag(const ossimString& tagName);
148  virtual bool getTagInformation(ossimNitfTagInformation& tag,
149  int idx)const;
150 
151  virtual std::vector<ossimNitfTagInformation> getAllTags() { return theTagList; }
152  virtual void setAllTags(std::vector<ossimNitfTagInformation> tagList) { theTagList = tagList; }
153 
154  virtual int getNumberOfTags()const;
155 
156  virtual bool getTag(ossimNitfTagInformation& tagInfo,
157  const ossimString& tagName)const;
158 
159  virtual ossim_int64 getFileSize()const=0;
160  virtual const char* getVersion()const=0;
161  virtual const char* getDateTime()const=0;
162  virtual ossimDrect getImageRect()const=0;
163  virtual ossimString getSecurityClassification()const=0;
164 
168  virtual bool isValid()const=0;
169 
170  bool hasImages()const;
171  bool hasSymbols()const;
172  bool hasGraphics()const;
173  bool hasText()const;
174  bool hasLabels()const;
175  bool hasDataExtSegments()const;
176 
178  ossim::istream& in)const=0;
180  ossim::istream& in)const=0;
182  ossim::istream& in)const=0;
184  ossim::istream& in)const=0;
186  ossim_int32 dataExtNumber, ossim::istream& in)const=0;
187 
188  virtual ossimNitfImageHeader* allocateImageHeader()const=0;
189  virtual ossimNitfSymbolHeader* allocateSymbolHeader()const=0;
190  virtual ossimNitfLabelHeader* allocateLabelHeader()const=0;
191  virtual ossimNitfTextHeader* allocateTextHeader()const=0;
192  virtual ossimNitfDataExtensionSegment *allocateDataExtSegment()const=0;
193 
194  virtual ossim_uint32 getTotalTagLength()const;
195 
197  virtual void setFileLength(ossim_uint64 fileLength) = 0;
198 
200  virtual void setHeaderLength(ossim_uint64 headerLength) = 0;
201 
202  virtual void setProperty(ossimRefPtr<ossimProperty> property);
203  virtual ossimRefPtr<ossimProperty> getProperty(const ossimString& name)const;
204  virtual void getPropertyNames(std::vector<ossimString>& propertyNames)const;
205 
210  virtual std::ostream& print(std::ostream& out,
211  const std::string& prefix=std::string()) const;
212 
217  virtual std::ostream& printTags(
218  std::ostream& out,
219  const std::string& prefix=std::string()) const;
220 
221  virtual bool saveState(ossimKeywordlist& kwl, const ossimString& prefix="")const;
222 
223 protected:
224  std::vector<ossimNitfTagInformation> theTagList;
225  std::vector<ossimNitfDesInformation> theDesList;
226 
227 TYPE_DATA
228 };
229 
230 #endif
bool parseStream(const ossimFilename &file, ossim::istream &in)
Parse stream method.
ossimNitfSymbolHeader * getNewSymbolHeader(ossim_uint32 symbolNumber) const
ossimNitfImageHeader * allocateImageHeader() const
ossimNitfImageOffsetInformation(ossim_uint64 headerOffset, ossim_uint64 dataOffset)
#define OSSIMDLLEXPORT
ossimNitfImageHeader * getNewImageHeader(ossim_uint32 imageNumber) const
ossimNitfTextOffsetInformation(ossim_uint64 headerOffset, ossim_uint64 dataOffset)
Represents serializable keyword/value map.
std::vector< ossimNitfDesInformation > theDesList
ossimNitfSymbolOffsetInformation(ossim_uint64 headerOffset, ossim_uint64 dataOffset)
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
Definition: ossimObject.cpp:95
ossimNitfDataExtSegOffsetInformation(ossim_uint64 headerOffset, ossim_uint64 dataOffset)
std::vector< ossimNitfTagInformation > theTagList
ossimNitfLabelHeader * getNewLabelHeader(ossim_uint32 labelNumber) const
virtual std::ostream & print(std::ostream &out) const
Generic print method.
ossimNitfTextHeader * getNewTextHeader(ossim_uint32 textNumber) const
#define TYPE_DATA
Definition: ossimRtti.h:339
unsigned long long ossim_uint64
unsigned int ossim_uint32
virtual std::vector< ossimNitfTagInformation > getAllTags()
virtual void setAllTags(std::vector< ossimNitfTagInformation > tagList)
std::basic_istream< char > istream
Base class for char input streams.
Definition: ossimIosFwd.h:20
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
ossimNitfDataExtensionSegment * getNewDataExtensionSegment(ossim_uint32 dataExtNumber) const
ossimIrect getImageRect() const
#define OSSIM_DLL
virtual void setProperty(const ossimString &name, const ossimString &value)
long long ossim_int64
ossimNitfGraphicOffsetInformation(ossim_uint64 headerOffset, ossim_uint64 dataOffset)
ossimString getVersion() const
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
ossimNitfLabelOffsetInformation(ossim_uint64 headerOffset, ossim_uint64 dataOffset)
int ossim_int32