OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ossimNitfVqCompressionHeader Class Reference

#include <ossimNitfVqCompressionHeader.h>

Inheritance diagram for ossimNitfVqCompressionHeader:
ossimNitfCompressionHeader ossimObject ossimReferenced

Public Member Functions

 ossimNitfVqCompressionHeader ()
 
virtual void parseStream (std::istream &in)
 
virtual std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
virtual std::ostream & print (std::ostream &out, const std::string &prefix) const
 print method that outputs a key/value type format adding prefix to keys. More...
 
virtual bool saveState (ossimKeywordlist &kwl, const ossimString &prefix="") const
 
virtual ossim_uint32 getBlockSizeInBytes () const
 
virtual ossim_uint32 getNumberOfImageRows () const
 
virtual ossim_uint32 getNumberOfImageCodesPerRow () const
 
virtual ossim_uint32 getCompressionAlgorithmId () const
 
virtual ossim_uint32 getImageCodeBitLength () const
 
virtual ossim_uint32 getNumberOfTables () const
 
const std::vector< ossimNitfVqCompressionOffsetTableData > & getTable () const
 
- Public Member Functions inherited from ossimNitfCompressionHeader
virtual void parseStream (ossim::istream &in)=0
 
- Public Member Functions inherited from ossimObject
 ossimObject ()
 
virtual ~ossimObject ()
 
virtual ossimObjectdup () const
 
virtual ossimString getShortName () const
 
virtual ossimString getLongName () const
 
virtual ossimString getDescription () const
 
virtual ossimString getClassName () const
 
virtual RTTItypeid getType () const
 
virtual bool canCastTo (ossimObject *obj) const
 
virtual bool canCastTo (const RTTItypeid &id) const
 
virtual bool canCastTo (const ossimString &parentClassName) const
 
virtual bool saveState (ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual bool loadState (const ossimKeywordlist &kwl, const char *prefix=0)
 
virtual bool isEqualTo (const ossimObject &obj, ossimCompareType compareType=OSSIM_COMPARE_FULL) const
 
virtual void accept (ossimVisitor &visitor)
 
- Public Member Functions inherited from ossimReferenced
 ossimReferenced ()
 
 ossimReferenced (const ossimReferenced &)
 
ossimReferencedoperator= (const ossimReferenced &)
 
void ref () const
 increment the reference count by one, indicating that this object has another pointer which is referencing it. More...
 
void unref () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
void unref_nodelete () const
 decrement the reference count by one, indicating that a pointer to this object is referencing it. More...
 
int referenceCount () const
 

Protected Member Functions

void clearFields ()
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Protected Attributes

ossim_uint32 theNumberOfImageRows
 
ossim_uint32 theNumberOfImageCodesPerRow
 
ossim_uint8 theImageCodeBitLength
 
ossim_uint16 theCompressionAlgorithmId
 
ossim_uint16 theNumberOfCompressionLookupOffsetRecords
 
ossim_uint16 theNumberOfCompressionParameterOffsetRecords
 
ossim_uint32 theCompressionLookupOffsetTableOffset
 
ossim_uint16 theCompressionLookupTableOffsetRecordLength
 
std::vector< ossimNitfVqCompressionOffsetTableDatatheTable
 
- Protected Attributes inherited from ossimNitfCompressionHeader
 TYPE_DATA
 

Detailed Description

Definition at line 37 of file ossimNitfVqCompressionHeader.h.

Constructor & Destructor Documentation

◆ ossimNitfVqCompressionHeader()

ossimNitfVqCompressionHeader::ossimNitfVqCompressionHeader ( )

Definition at line 148 of file ossimNitfVqCompressionHeader.cpp.

References clearFields().

Member Function Documentation

◆ clearFields()

void ossimNitfVqCompressionHeader::clearFields ( )
protected

◆ getBlockSizeInBytes()

ossim_uint32 ossimNitfVqCompressionHeader::getBlockSizeInBytes ( ) const
virtual

Definition at line 303 of file ossimNitfVqCompressionHeader.cpp.

References getImageCodeBitLength(), getNumberOfImageCodesPerRow(), and getNumberOfImageRows().

304 {
305  return (getNumberOfImageRows()*
308 }
virtual ossim_uint32 getNumberOfImageRows() const
virtual ossim_uint32 getNumberOfImageCodesPerRow() const
virtual ossim_uint32 getImageCodeBitLength() const

◆ getCompressionAlgorithmId()

ossim_uint32 ossimNitfVqCompressionHeader::getCompressionAlgorithmId ( ) const
virtual

◆ getImageCodeBitLength()

ossim_uint32 ossimNitfVqCompressionHeader::getImageCodeBitLength ( ) const
virtual

◆ getNumberOfImageCodesPerRow()

ossim_uint32 ossimNitfVqCompressionHeader::getNumberOfImageCodesPerRow ( ) const
virtual

◆ getNumberOfImageRows()

ossim_uint32 ossimNitfVqCompressionHeader::getNumberOfImageRows ( ) const
virtual

◆ getNumberOfTables()

ossim_uint32 ossimNitfVqCompressionHeader::getNumberOfTables ( ) const
virtual

Definition at line 330 of file ossimNitfVqCompressionHeader.cpp.

References theTable.

331 {
332  return (ossim_uint32)theTable.size();
333 }
unsigned int ossim_uint32
std::vector< ossimNitfVqCompressionOffsetTableData > theTable

◆ getTable()

const std::vector< ossimNitfVqCompressionOffsetTableData > & ossimNitfVqCompressionHeader::getTable ( ) const

Definition at line 335 of file ossimNitfVqCompressionHeader.cpp.

References theTable.

Referenced by ossimNitfTileSource::vqUncompressC4(), and ossimNitfTileSource::vqUncompressM4().

336 {
337  return theTable;
338 }
std::vector< ossimNitfVqCompressionOffsetTableData > theTable

◆ parseStream()

void ossimNitfVqCompressionHeader::parseStream ( std::istream &  in)
virtual

Definition at line 153 of file ossimNitfVqCompressionHeader.cpp.

References ossimEndian::getSystemEndianType(), OSSIM_LITTLE_ENDIAN, ossimEndian::swap(), theCompressionAlgorithmId, theCompressionLookupOffsetTableOffset, theCompressionLookupTableOffsetRecordLength, theImageCodeBitLength, theNumberOfCompressionLookupOffsetRecords, theNumberOfCompressionParameterOffsetRecords, theNumberOfImageCodesPerRow, theNumberOfImageRows, and theTable.

Referenced by ossimNitfImageHeaderV2_0::parseStream().

154 {
155  ossimEndian endian;
156 
157  in.read((char*)(&theNumberOfImageRows), 4);
158  in.read((char*)(&theNumberOfImageCodesPerRow), 4);
159  in.read((char*)(&theImageCodeBitLength), 1);
160  in.read((char*)(&theCompressionAlgorithmId), 2);
161 
162  in.read((char*)(&theNumberOfCompressionLookupOffsetRecords), 2);
163  in.read((char*)(&theNumberOfCompressionParameterOffsetRecords), 2);
164  in.read((char*)(&theCompressionLookupOffsetTableOffset), 4);
165  in.read((char*)(&theCompressionLookupTableOffsetRecordLength), 2);
166 
168  {
169  endian.swap(theNumberOfImageRows);
176  }
177 
180  {
181  theTable.clear();
183 
184  ossim_uint32 idx = 0;
185 
186  for(idx = 0; idx < theNumberOfCompressionLookupOffsetRecords; ++idx)
187  {
188  theTable[idx].parseStream(in);
189  }
190  for(idx = 0; idx < theTable.size(); ++idx)
191  {
192  if(theTable[idx].theData)
193  {
194  delete [] theTable[idx].theData;
195  theTable[idx].theData = 0;
196  }
197  if(theTable[idx].getDataLengthInBytes()>0)
198  {
199  theTable[idx].theData = new ossim_uint8[theTable[idx].getDataLengthInBytes()];
200  in.read((char*)(theTable[idx].theData), theTable[idx].getDataLengthInBytes());
201  }
202  }
203  }
204 }
unsigned int ossim_uint32
ossimByteOrder getSystemEndianType() const
Definition: ossimEndian.h:78
std::vector< ossimNitfVqCompressionOffsetTableData > theTable
void swap(ossim_sint8 &)
Definition: ossimEndian.h:26
unsigned char ossim_uint8

◆ print() [1/2]

std::ostream & ossimNitfVqCompressionHeader::print ( std::ostream &  out) const
virtual

Generic print method.

Derived classes should re-implement as they see fit.

Returns
std::ostream&

Reimplemented from ossimObject.

Definition at line 206 of file ossimNitfVqCompressionHeader.cpp.

207 {
208  return this->print(out, std::string(""));
209 }
virtual std::ostream & print(std::ostream &out) const
Generic print method.

◆ print() [2/2]

std::ostream & ossimNitfVqCompressionHeader::print ( std::ostream &  out,
const std::string &  prefix 
) const
virtual

print method that outputs a key/value type format adding prefix to keys.

Implements ossimNitfCompressionHeader.

Definition at line 211 of file ossimNitfVqCompressionHeader.cpp.

References ossimString::string(), theCompressionAlgorithmId, theCompressionLookupTableOffsetRecordLength, theImageCodeBitLength, theNumberOfCompressionLookupOffsetRecords, theNumberOfImageCodesPerRow, theNumberOfImageRows, theTable, and ossimString::toString().

213 {
214  std::string pfx = prefix;
215  pfx += "vq_header.";
216 
217  out << std::setiosflags(std::ios::left)
218  << pfx << std::setw(24) << "image_rows:"
219  << theNumberOfImageRows << "\n"
220  << pfx << std::setw(24) << "codes_per_row:"
221  << theNumberOfImageCodesPerRow << "\n"
222  << pfx << std::setw(24) << "codebit_length:"
224  << pfx << std::setw(24) << "algorithm_id:"
225  << theCompressionAlgorithmId << "\n"
226  << pfx << std::setw(24)
227  << "offset_records:"
229  << pfx << std::setw(24)
230  << "offset_record_length:"
232 
233  if(theTable.size() > 0)
234  {
235  for(ossim_uint32 idx = 0; idx < theTable.size()-1; ++idx)
236  {
237  std::string tblPfx = pfx;
238  tblPfx += "table";
239  tblPfx += ossimString::toString(idx).string();
240  tblPfx += ".";
241 
242  out << tblPfx << std::setw(24) << "id:"
243  << theTable[idx].theTableId << "\n"
244  << tblPfx << std::setw(24) << "lookup_records:"
245  << theTable[idx].theNumberOfCompressionLookupRecords << "\n"
246  << tblPfx << std::setw(24) << "values_per_lookup:"
247  << theTable[idx].theNumberOfValuesPerCompressionLookup << "\n"
248  << tblPfx << std::setw(24) << "lookup_bit_length:"
249  << theTable[idx].theCompressionLookupValueBitLength << "\n"
250  << tblPfx << std::setw(24) << "lookup_table_offset:"
251  << theTable[idx].theCompressionLookupTableOffset << "\n";
252  }
253 
254  }
255 
256  return out;
257 }
static ossimString toString(bool aValue)
Numeric to string methods.
unsigned int ossim_uint32
std::vector< ossimNitfVqCompressionOffsetTableData > theTable
const std::string & string() const
Definition: ossimString.h:414

◆ saveState()

bool ossimNitfVqCompressionHeader::saveState ( ossimKeywordlist kwl,
const ossimString prefix = "" 
) const
virtual

Reimplemented from ossimNitfCompressionHeader.

Definition at line 259 of file ossimNitfVqCompressionHeader.cpp.

References ossimKeywordlist::add(), ossimKeywordlist::parseStream(), ossimNitfCompressionHeader::saveState(), ossimString::string(), theCompressionAlgorithmId, theCompressionLookupTableOffsetRecordLength, theImageCodeBitLength, theNumberOfCompressionLookupOffsetRecords, theNumberOfImageCodesPerRow, theNumberOfImageRows, theTable, and ossimString::toString().

260 {
261  bool result = ossimNitfCompressionHeader::saveState(kwl, prefix);
262 
263  if(result)
264  {
265  std::ostringstream out;
266 
267  out << std::setiosflags(std::ios::left)
268  << "image_rows:" << theNumberOfImageRows << "\n"
269  << "codes_per_row:" << theNumberOfImageCodesPerRow << "\n"
270  << "codebit_length:" << (ossim_uint32)theImageCodeBitLength << "\n"
271  << "algorithm_id:" << theCompressionAlgorithmId << "\n"
272  << "offset_records:" << theNumberOfCompressionLookupOffsetRecords << "\n"
273  << "offset_record_length:" << theCompressionLookupTableOffsetRecordLength << "\n";
274 
275  if(theTable.size() > 0)
276  {
277  for(ossim_uint32 idx = 0; idx < theTable.size()-1; ++idx)
278  {
279  std::string tblPfx = "table";
280  tblPfx += ossimString::toString(idx).string();
281  tblPfx += ".";
282 
283  out << tblPfx<< "id:"
284  << theTable[idx].theTableId << "\n"
285  << tblPfx << "lookup_records:"<< theTable[idx].theNumberOfCompressionLookupRecords << "\n"
286  << tblPfx <<"values_per_lookup:"<< theTable[idx].theNumberOfValuesPerCompressionLookup << "\n"
287  << tblPfx << "lookup_bit_length:"<< theTable[idx].theCompressionLookupValueBitLength << "\n"
288  << tblPfx << "lookup_table_offset:"<< theTable[idx].theCompressionLookupTableOffset << "\n";
289  }
290  }
291  ossimKeywordlist kwlTemp;
292 
293  std::istringstream in(out.str());
294  if(kwlTemp.parseStream(in))
295  {
296  kwl.add(prefix, kwlTemp);
297  }
298  }
299 
300  return result;
301 }
std::basic_ostringstream< char > ostringstream
Class for char output memory streams.
Definition: ossimIosFwd.h:35
Represents serializable keyword/value map.
static ossimString toString(bool aValue)
Numeric to string methods.
virtual bool saveState(ossimKeywordlist &kwl, const ossimString &prefix="") const
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
unsigned int ossim_uint32
virtual bool parseStream(ossim::istream &is, bool ignoreBinaryChars)
deprecated method
std::vector< ossimNitfVqCompressionOffsetTableData > theTable
std::basic_istringstream< char > istringstream
Class for char input memory streams.
Definition: ossimIosFwd.h:32
const std::string & string() const
Definition: ossimString.h:414

Member Data Documentation

◆ theCompressionAlgorithmId

ossim_uint16 ossimNitfVqCompressionHeader::theCompressionAlgorithmId
protected

◆ theCompressionLookupOffsetTableOffset

ossim_uint32 ossimNitfVqCompressionHeader::theCompressionLookupOffsetTableOffset
protected

Definition at line 70 of file ossimNitfVqCompressionHeader.h.

Referenced by parseStream().

◆ theCompressionLookupTableOffsetRecordLength

ossim_uint16 ossimNitfVqCompressionHeader::theCompressionLookupTableOffsetRecordLength
protected

Definition at line 71 of file ossimNitfVqCompressionHeader.h.

Referenced by clearFields(), parseStream(), print(), and saveState().

◆ theImageCodeBitLength

ossim_uint8 ossimNitfVqCompressionHeader::theImageCodeBitLength
protected

◆ theNumberOfCompressionLookupOffsetRecords

ossim_uint16 ossimNitfVqCompressionHeader::theNumberOfCompressionLookupOffsetRecords
protected

Definition at line 67 of file ossimNitfVqCompressionHeader.h.

Referenced by clearFields(), parseStream(), print(), and saveState().

◆ theNumberOfCompressionParameterOffsetRecords

ossim_uint16 ossimNitfVqCompressionHeader::theNumberOfCompressionParameterOffsetRecords
protected

Definition at line 68 of file ossimNitfVqCompressionHeader.h.

Referenced by parseStream().

◆ theNumberOfImageCodesPerRow

ossim_uint32 ossimNitfVqCompressionHeader::theNumberOfImageCodesPerRow
protected

◆ theNumberOfImageRows

ossim_uint32 ossimNitfVqCompressionHeader::theNumberOfImageRows
protected

◆ theTable

std::vector<ossimNitfVqCompressionOffsetTableData> ossimNitfVqCompressionHeader::theTable
protected

The documentation for this class was generated from the following files: