OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimPngWriter.h
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: See top level LICENSE.txt file
4 //
5 // Author: David Burken
6 //
7 // Description: OSSIM Portable Network Graphics (PNG) writer.
8 //
9 //----------------------------------------------------------------------------
10 // $Id: ossimPngWriter.h 19878 2011-07-28 16:27:26Z dburken $
11 #ifndef ossimPngWriter_HEADER
12 #define ossimPngWriter_HEADER
13 
14 
15 #include <ossim/base/ossimRtti.h>
19 #include <ossim/base/ossimRefPtr.h>
20 #include <png.h>
21 #include <ostream>
22 
24 {
25 public:
26 
27  /* default constructor */
29 
30  /* virtual destructor */
31  virtual ~ossimPngWriter();
32 
34  virtual ossimString getShortName() const;
35 
37  virtual ossimString getLongName() const;
38 
40  virtual ossimString getClassName() const;
41 
50  virtual ossimString getExtension() const;
51 
61  virtual void getImageTypeList(std::vector<ossimString>& imageTypeList)const;
62 
63  virtual bool isOpen()const;
64 
65  virtual bool open();
66 
67  virtual void close();
68 
72  virtual bool saveState(ossimKeywordlist& kwl,
73  const char* prefix=0)const;
74 
79  virtual bool loadState(const ossimKeywordlist& kwl,
80  const char* prefix=0);
81 
88  virtual void setProperty(ossimRefPtr<ossimProperty> property);
89 
95  virtual ossimRefPtr<ossimProperty> getProperty(const ossimString& name)const;
96 
102  virtual void getPropertyNames(std::vector<ossimString>& propertyNames)const;
103 
104  bool hasImageType(const ossimString& imageType) const;
105 
106  void setLut(const ossimNBandLutDataObject& lut);
107 
118 
130  bool setCompressionLevel(const ossimString& level);
131 
138  bool getAlphaChannelFlag( void ) const;
139 
145  void setAlphaChannelFlag( bool flag );
146 
152  virtual bool writeStream();
153 
161  virtual bool setOutputStream(std::ostream& stream);
162 
163 private:
164 
169  virtual bool writeFile();
170 
176  static void pngWriteData(png_structp png_ptr, png_bytep data,
177  png_size_t length);
178 
183  static void pngFlush(png_structp png_ptr);
184 
186  bool doSwap(ossimScalarType outputScalar) const;
187 
188  bool isLutEnabled()const;
189 
193  void writeOptionalChunks(png_structp pp, png_infop info);
194 
195  //---
196  // Chunck writers. In place but not implemnted yet.
197  //---
198 
204  void writeTransparentColorChunk(png_structp pp, png_infop info);
205 
211  void writeGammaChunk(png_structp pp, png_infop info);
212 
218  void writeBackgroundColorChunk(png_structp pp, png_infop info);
219 
225  void writeTimeStampChunk(png_structp pp, png_infop info);
226 
232  void writeLatinTextChunk(png_structp pp, png_infop info);
233 
239  void writeInternationalTextChunk(png_structp pp, png_infop info);
240 
246  void writeHistogram(png_structp pp, png_infop info);
247 
253  void writeSuggestedPalette(png_structp pp, png_infop info);
254 
260  void writeSignificantBits(png_structp pp, png_infop info);
261 
267  void writePhysicalPixelDimensions(png_structp pp, png_infop info);
268 
274  void writePhysicalScale(png_structp pp, png_infop info);
275 
281  void writeImageOffset(png_structp pp, png_infop info);
282 
288  void writePixelCalibration(png_structp pp, png_infop info);
289 
295  void writeFractalParameters(png_structp pp, png_infop info);
296 
307  ossim_int32 getColorType(ossim_int32 bands) const;
308 
309  ossim_int32 getBitDepth(ossimScalarType outputScalar) const;
310 
313 
324 
333 
345 
358 
370 
373 
376 
383 
390 
391  TYPE_DATA
392 
393 };
394 
395 #endif /* #ifndef ossimPngVoid Writer_HEADER */
ossim_uint16 theTransparentGreen
ossim_uint16 theBackgroundBlue
void writeTransparentColorChunk(png_structp pp, png_infop info)
Write transparent color chunk (tRNS) Location: Multiple:
void writePhysicalScale(png_structp pp, png_infop info)
Write physical scale (sCAL) Location: before first IDAT Multiple: no.
bool theTimeFlag
Time support, either on or off.
void writeLatinTextChunk(png_structp pp, png_infop info)
Write any text (tEXt, zTXt).
virtual ossimString getLongName() const
Represents serializable keyword/value map.
ossim_int32 theInterlaceSupport
Interlace support: PNG_INTERLACE_ADAM7 PNG_INTERLACE_NONE.
virtual ossimString getClassName() const
virtual void setProperty(ossimRefPtr< ossimProperty > property)
Will set the property whose name matches the argument "property->getName()".
void writeBackgroundColorChunk(png_structp pp, png_infop info)
Write background color chunk (bKGD) Location: After PLTE, before first IDAT.
ossim_int32 thePngFilter
PNG_NO_FILTERS 0x00 PNG_FILTER_NONE 0x08 PNG_FILTER_SUB 0x10 PNG_FILTER_UP 0x20 PNG_FILTER_AVG 0x40 P...
bool theBackgroundFlag
For background support.
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
saves the state of the object.
void setAlphaChannelFlag(bool flag)
Set the writer to add an alpha channel to the output png image.
virtual void getImageTypeList(std::vector< ossimString > &imageTypeList) const
void getImageTypeList(std::vector<ossimString>& imageTypeList)const
void writeImageOffset(png_structp pp, png_infop info)
Write image offset (oFFs) Location: before first IDAT Multiple: no.
virtual bool writeStream()
Method to write the image to a stream.
virtual void close()
ossim_uint16 theTransparentGray
void writeFractalParameters(png_structp pp, png_infop info)
Write fractal parameters (fRAc) Location: anywhere Multiple: yes.
Pure virtual base class for image file writers.
unsigned short ossim_uint16
virtual ossimString getExtension() const
Returns a 3-letter extension from the image type descriptor (theOutputImageType) that can be used for...
bool setCompressionLevel(const ossimString &level)
Set the png compression level from a string.
ossim_uint16 theBackgroundGray
static void pngFlush(png_structp png_ptr)
Callback method for a flush.
double ossim_float64
std::ostream * theOutputStream
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
Pushes this&#39;s names onto the list of property names.
void writeInternationalTextChunk(png_structp pp, png_infop info)
Write any text (iTXt).
void writeSuggestedPalette(png_structp pp, png_infop info)
Write suggested palette (sPLT) Location: before first IDAT Multiple: yes.
#define TYPE_DATA
Definition: ossimRtti.h:339
ossim_uint16 theBackgroundRed
ossimString getCompressionLevel() const
Get the png compression level as a string.
virtual bool isOpen() const
ossim_int32 theCompressionLevel
Compression level from zlib.h: Z_NO_COMPRESSION 0 Z_BEST_SPEED 1 Z_BEST_COMPRESSION 9 Z_DEFAULT_COMPR...
bool isLutEnabled() const
void writePixelCalibration(png_structp pp, png_infop info)
Write pixel calibration (pCAL) Location: after PLTE, before first IDAT Multiple: no.
bool theAlphaChannelFlag
For alpha channel support.
ossimScalarType
virtual bool writeFile()
Writes the file to disk or a stream.
bool getAlphaChannelFlag(void) const
Retrieve the writer&#39;s setting for whether or not to add an alpha channel to the output png image...
bool hasImageType(const ossimString &imageType) const
bool hasImageType(const ossimString& imageType) const
bool theGammaFlag
For gamma support.
void writeHistogram(png_structp pp, png_infop info)
Write histogram (hIST) Location: after PLTE, before first IDAT Multiple: no.
ossim_int32 getColorType(ossim_int32 bands) const
Get the png color type.
void writeGammaChunk(png_structp pp, png_infop info)
Write gamm chunk (gAMMA) Location: Before PLTE, before first IDAT.
ossim_float64 theGamma
bool theTransparentFlag
For transparent color support.
virtual ~ossimPngWriter()
virtual ossimString getShortName() const
void writeOptionalChunks(png_structp pp, png_infop info)
writes optionial chunks.
void writeTimeStampChunk(png_structp pp, png_infop info)
Write time stamp chunk (tIME).
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const
class ossimNBandLutDataObject
ossim_uint16 theTransparentBlue
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
ossim_uint16 theBackgroundGreen
virtual bool open()
void writeSignificantBits(png_structp pp, png_infop info)
Write significant bits (sBIT) Location: before PLTE and first IDAT Multiple: no.
ossim_uint16 theTransparentRed
void writePhysicalPixelDimensions(png_structp pp, png_infop info)
Write physical pixel dimensions (pHYs) Location: before first IDAT Multiple: no.
void setLut(const ossimNBandLutDataObject &lut)
ossim_int32 getBitDepth(ossimScalarType outputScalar) const
ossim_int32 theCompressionStratagy
Z_FILTERED 1 Z_HUFFMAN_ONLY 2 Z_RLE 3 Z_FIXED 4 Z_DEFAULT_STRATEGY 0.
virtual bool setOutputStream(std::ostream &stream)
Sets the output stream to write to.
bool doSwap(ossimScalarType outputScalar) const
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23
int ossim_int32
static void pngWriteData(png_structp png_ptr, png_bytep data, png_size_t length)
Callback method for writing to stream.