OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimNitfFileHeaderV2_0.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 ossimNitfFileHeaderV2_0_HEADER
15 #define ossimNitfFileHeaderV2_0_HEADER 1
16 
19 #include <ossim/base/ossimIosFwd.h>
20 #include <ossim/base/ossimString.h>
22 
24 
26 {
27 public:
29  const ossimNitfImageInfoRecordV2_0 &data);
30 
34  void setSubheaderLength(ossim_uint32 length);
35  void setImageLength(ossim_uint64 length);
36 
41 
45  char theImageLength[11];
46 };
47 
49 {
50 public:
52  const ossimNitfSymbolInfoRecordV2_0 &data);
53 
57 
62 
66  char theSymbolLength[7];
67 };
68 
70 {
71 public:
73  const ossimNitfLabelInfoRecordV2_0 &data);
74 
78 
83 
87  char theLabelLength[4];
88 };
89 
91 {
92 public:
94  const ossimNitfTextInfoRecordV2_0 &data);
95 
103 
107  char theTextLength[6];
108 };
109 
111 {
112 public:
115 
123 
128 };
129 
131 {
132 public:
135 
140 
145 };
146 
148 {
149 public:
150 
152  virtual ~ossimNitfFileHeaderV2_0();
153 
159  virtual void parseStream(ossim::istream& in);
160 
161  virtual void writeStream(ossim::ostream& out);
162 
167  virtual std::ostream& print(std::ostream& out,
168  const std::string& prefix=std::string()) const;
169 
170  virtual bool isEncrypted()const;
171  virtual ossim_int32 getNumberOfImages()const;
172  virtual ossim_int32 getNumberOfLabels()const;
173  virtual ossim_int32 getNumberOfSymbols()const;
174  virtual ossim_int32 getNumberOfGraphics()const;
175  virtual ossim_int32 getNumberOfTextSegments()const;
178  virtual ossim_int32 getHeaderSize()const;
179  virtual ossim_int64 getFileSize()const;
180  virtual ossimString getSecurityClassification()const;
181 
182  virtual const char* getDateTime()const;
183  virtual const char* getVersion()const;
184 
185  virtual ossimDrect getImageRect()const;
186 
187  virtual void addImageInfoRecord(const ossimNitfImageInfoRecordV2_0& recordInfo);
188  virtual void replaceImageInfoRecord(ossim_uint32 i, const ossimNitfImageInfoRecordV2_0& recordInfo);
189 
191  ossim::istream& in)const;
193  ossim::istream& in)const;
195  ossim::istream& in)const;
197  ossim::istream& in)const;
199  ossim_int32 dataExtNumber, ossim::istream& in)const;
200 
204  virtual ossimNitfTextHeader* allocateTextHeader()const;
206 
207  virtual void setCodeWords(const ossimString& codeWords);
208  virtual void setControlAndHandling(const ossimString& controlAndHandling);
209  virtual void setReleasingInstructions(const ossimString& releasingInstructions);
210  virtual void setClassificationAuthority(const ossimString& classAuth);
211  virtual void setSecurityControlNumber(const ossimString& controlNo);
212  virtual void setOriginatorsName(const ossimString& originatorName);
213  virtual void setOriginatorsPhone(const ossimString& origniatorPhone);
214 
215  virtual ossimString getCodeWords()const;
216  virtual ossimString getControlAndHandling()const;
217  virtual ossimString getReleasingInstructions()const;
219  virtual ossimString getSecurityControlNumber()const;
220  virtual ossimString getOriginatorsName()const;
221  virtual ossimString getOriginatorsPhone()const;
222 
226  virtual bool isValid()const;
227 
228  ossimString getComplianceLevel()const;
229  ossimString getSecurityDowngrade()const;
230  ossimString getDowngradingEvent()const;
231 
232  void setComplianceLevel(const ossimString& complianceLevel);
233  void setSecurityDowngrade(const ossimString& securityDowngrade);
234  void setDowngradingEvent(const ossimString& downgradeEvent);
235 
236  virtual void setFileLength(ossim_uint64 fileLength);
237  virtual void setHeaderLength(ossim_uint64 headerLength);
243  static const ossimString FSDWNG_KW;
244  static const ossimString FSDEVT_KW;
245 
246  virtual void setProperty(ossimRefPtr<ossimProperty> property);
247  virtual ossimRefPtr<ossimProperty> getProperty(const ossimString& name)const;
248  virtual void getPropertyNames(std::vector<ossimString>& propertyNames)const;
249 
250 
251  virtual bool saveState(ossimKeywordlist& kwl, const ossimString& prefix="")const;
252 TYPE_DATA
253 private:
254 
256  {
257  public:
258  ossimNitfDisplayInfo(const ossimString &filePartType,
259  ossim_int32 displayLevel,
260  ossim_int32 indexIntoList)
261  :theFilePartType(filePartType),
262  theDisplayLevel(displayLevel),
263  theIndex(indexIntoList)
264  {
265  }
266 
276 
283 
289 
290  };
291 
292  void clearFields();
301  void setNumberOfImageInfoRecords(ossim_uint64 num);
302 
314  void precomputeValues();
315 
316  void readImageInfoRecords(ossim::istream& in);
317  void readSymbolInfoRecords(ossim::istream& in);
318  void readLabelInfoRecords(ossim::istream& in);
319  void readTextFileInfoRecords(ossim::istream& in);
320  void readDataExtSegInfoRecords(ossim::istream& in);
321  void readResExtSegInfoRecords(ossim::istream& in);
329  void initializeAllOffsets();
330 
335  void readOverflowTags(ossim::istream& in);
336 
343  void initializeDisplayLevels(ossim::istream& in);
344 
345  void insertIntoDisplayInfoList(const ossimNitfDisplayInfo &displayInformation);
346 
347 
352 
359 
365  std::vector<ossimNitfDisplayInfo> theDisplayInformationList;
366 
371  std::vector<ossimNitfImageOffsetInformation> theImageOffsetList;
372 
377  std::vector<ossimNitfSymbolOffsetInformation> theSymbolOffsetList;
378 
383  std::vector<ossimNitfLabelOffsetInformation> theLabelOffsetList;
384 
389  std::vector<ossimNitfTextOffsetInformation> theTextOffsetList;
390 
395  std::vector<ossimNitfDataExtSegOffsetInformation> theDataExtSegOffsetList;
396 
397 
398 
399 
400  // Note: these are work variables and not part of the
401  // ossimNitf header. These variables will be used to quickly
402  // access various parts of the file.
411 
415  char theCodewords[41];
416 
420  char theControlAndHandling[41];
421 
425  char theReleasingInstructions[41];
426 
430  char theClassificationAuthority[21];
431 
435  char theSecurityControlNumber[21];
436 
454  char theSecurityDowngrade[7];
455 
462  char theDowngradingEvent[41];
463 
469  char theOriginatorsName[28];
470 
475  char theOriginatorsPhone[19];
476 
488  char theFileLength[13];
489 
500  char theHeaderLength[7];
501 
508  char theNumberOfImageInfoRecords[4];
509 
515  std::vector<ossimNitfImageInfoRecordV2_0> theNitfImageInfoRecords;
516 
521  char theNumberOfSymbolInfoRecords[4];
527  std::vector<ossimNitfSymbolInfoRecordV2_0> theNitfSymbolInfoRecords;
528 
535  char theNumberOfLabelInfoRecords[4];
536 
542  std::vector<ossimNitfLabelInfoRecordV2_0> theNitfLabelInfoRecords;
543 
549  char theNumberOfTextFileInfoRecords[4];
550 
556  std::vector<ossimNitfTextInfoRecordV2_0> theNitfTextInfoRecords;
557 
563  char theNumberOfDataExtSegInfoRecords[4];
564 
570  std::vector<ossimNitfDataExtSegInfoRecordV2_0> theNitfDataExtSegInfoRecords;
571 
577  char theNumberOfResExtSegInfoRecords[4];
578 
584  std::vector<ossimNitfResExtSegInfoRecordV2_0> theNitfResExtSegInfoRecords;
585 
592  char theUserDefinedHeaderDataLength[6];
593 
601  char theUserDefinedHeaderOverflow[4];
602 
609  char theExtendedHeaderDataLength[6];
610 
615  char theExtendedHeaderOverflow[4];
616 };
617 
618 #endif
virtual const char * getDateTime() const =0
virtual ossimNitfTextHeader * allocateTextHeader() const =0
virtual std::ostream & print(std::ostream &out, const std::string &prefix=std::string()) const
Print method that outputs a key/value type format adding prefix to keys.
friend std::ostream & operator<<(std::ostream &out, const ossimNitfImageInfoRecordV2_0 &data)
virtual void setHeaderLength(ossim_uint64 headerLength)=0
Sets header length (HL) field.
friend std::ostream & operator<<(std::ostream &out, const ossimNitfSymbolInfoRecordV2_0 &data)
std::vector< ossimNitfSymbolOffsetInformation > theSymbolOffsetList
virtual ossimNitfLabelHeader * getNewLabelHeader(ossim_uint32 labelNumber, ossim::istream &in) const =0
friend std::ostream & operator<<(std::ostream &out, const ossimNitfLabelInfoRecordV2_0 &data)
virtual const char * getVersion() const =0
std::vector< ossimNitfResExtSegInfoRecordV2_0 > theNitfResExtSegInfoRecords
std::vector< ossimNitfDisplayInfo > theDisplayInformationList
#define OSSIMDLLEXPORT
virtual ossimNitfImageHeader * getNewImageHeader(ossim_uint32 imageNumber, ossim::istream &in) const =0
Represents serializable keyword/value map.
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
virtual ossimString getSecurityClassification() const
virtual bool isValid() const
isValid will test if the fields are valid and will return true or false.
virtual ossim_int32 getNumberOfLabels() const =0
void setSubheaderLength(ossim_uint32 length)
std::vector< ossimNitfSymbolInfoRecordV2_0 > theNitfSymbolInfoRecords
std::vector< ossimNitfTextInfoRecordV2_0 > theNitfTextInfoRecords
std::vector< ossimNitfLabelOffsetInformation > theLabelOffsetList
virtual ossimNitfSymbolHeader * getNewSymbolHeader(ossim_uint32 symbolNumber, ossim::istream &in) const =0
virtual ossimString getReleasingInstructions() const =0
virtual bool isEncrypted() const =0
friend std::ostream & operator<<(std::ostream &out, const ossimNitfResExtSegInfoRecordV2_0 &data)
virtual void setOriginatorsPhone(const ossimString &origniatorPhone)=0
virtual void setControlAndHandling(const ossimString &controlAndHandling)=0
virtual ossimString getSecurityControlNumber() const =0
virtual void setSecurityControlNumber(const ossimString &controlNo)=0
virtual ossim_int32 getNumberOfSymbols() const =0
virtual ossim_int64 getFileSize() const =0
virtual ossimNitfLabelHeader * allocateLabelHeader() const =0
virtual ossimString getOriginatorsName() const =0
friend std::ostream & operator<<(std::ostream &out, const ossimNitfDataExtSegInfoRecordV2_0 &data)
virtual ossimNitfImageHeader * allocateImageHeader() const =0
virtual ossimNitfTextHeader * getNewTextHeader(ossim_uint32 textNumber, ossim::istream &in) const =0
std::vector< ossimNitfDataExtSegInfoRecordV2_0 > theNitfDataExtSegInfoRecords
std::vector< ossimNitfLabelInfoRecordV2_0 > theNitfLabelInfoRecords
virtual ossim_int32 getNumberOfReservedExtSegments() const =0
virtual ossim_int32 getNumberOfTextSegments() const =0
#define TYPE_DATA
Definition: ossimRtti.h:339
std::vector< ossimNitfDataExtSegOffsetInformation > theDataExtSegOffsetList
unsigned long long ossim_uint64
unsigned int ossim_uint32
virtual ossim_int32 getNumberOfDataExtSegments() const =0
virtual void setFileLength(ossim_uint64 fileLength)=0
Sets file length (FL) field.
virtual void parseStream(ossim::istream &in)=0
static const ossimString FSDWNG_KW
Properties of a NITF 2.0 Header file.
virtual ossim_int32 getHeaderSize() const =0
virtual void setCodeWords(const ossimString &codeWords)=0
virtual ossimString getOriginatorsPhone() const =0
friend std::ostream & operator<<(std::ostream &out, const ossimNitfTextInfoRecordV2_0 &data)
virtual void setClassificationAuthority(const ossimString &classAuth)=0
virtual void setOriginatorsName(const ossimString &originatorName)=0
virtual ossim_int32 getNumberOfGraphics() const =0
virtual ossimDrect getImageRect() const =0
virtual void setReleasingInstructions(const ossimString &releasingInstructions)=0
virtual ossimString getControlAndHandling() const =0
std::basic_istream< char > istream
Base class for char input streams.
Definition: ossimIosFwd.h:20
virtual ossimNitfSymbolHeader * allocateSymbolHeader() const =0
void setImageLength(ossim_uint64 length)
virtual ossimString getClassificationAuthority() const =0
long long ossim_int64
virtual ossimNitfDataExtensionSegment * getNewDataExtensionSegment(ossim_int32 dataExtNumber, ossim::istream &in) const =0
static const ossimString FSDEVT_KW
virtual ossimNitfDataExtensionSegment * allocateDataExtSegment() const =0
std::vector< ossimNitfImageInfoRecordV2_0 > theNitfImageInfoRecords
virtual void writeStream(ossim::ostream &out)=0
virtual ossimString getCodeWords() const =0
std::vector< ossimNitfTextOffsetInformation > theTextOffsetList
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
bool saveState(ossimKeywordlist &kwl, const ossimString &prefix="") const
ossimNitfDisplayInfo(const ossimString &filePartType, ossim_int32 displayLevel, ossim_int32 indexIntoList)
virtual void setProperty(ossimRefPtr< ossimProperty > property)
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
int ossim_int32
std::vector< ossimNitfImageOffsetInformation > theImageOffsetList
virtual ossim_int32 getNumberOfImages() const =0