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

#include <ossimGdalImageWriterFactory.h>

Inheritance diagram for ossimGdalImageWriterFactory:
ossimImageWriterFactoryBase ossimObjectFactory ossimObject ossimReferenced

Public Member Functions

virtual ~ossimGdalImageWriterFactory ()
 
virtual ossimImageFileWritercreateWriter (const ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual ossimImageFileWritercreateWriter (const ossimString &typeName) const
 
virtual ossimObjectcreateObject (const ossimKeywordlist &kwl, const char *prefix=0) const
 
virtual ossimObjectcreateObject (const ossimString &typeName) const
 
virtual void getExtensions (std::vector< ossimString > &result) const
 
virtual void getTypeNameList (std::vector< ossimString > &typeList) const
 
virtual void getImageTypeList (std::vector< ossimString > &imageTypeList) const
 void getImageTypeList(std::vector<ossimString>& imageTypeList)const More...
 
virtual void getImageFileWritersBySuffix (ossimImageWriterFactoryBase::ImageFileWriterList &result, const ossimString &ext) const
 
virtual void getImageFileWritersByMimeType (ossimImageWriterFactoryBase::ImageFileWriterList &result, const ossimString &mimeType) const
 
- Public Member Functions inherited from ossimImageWriterFactoryBase
virtual ~ossimImageWriterFactoryBase ()
 
- Public Member Functions inherited from ossimObjectFactory
virtual ~ossimObjectFactory ()
 
- 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 std::ostream & print (std::ostream &out) const
 Generic print method. More...
 
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
 

Static Public Member Functions

static ossimGdalImageWriterFactoryinstance ()
 

Protected Member Functions

 ossimGdalImageWriterFactory ()
 
ossimString convertToDriverName (const ossimString &imageTypeName) const
 
bool canWrite (GDALDatasetH handle) const
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Static Protected Attributes

static ossimGdalImageWriterFactorytheInstance = (ossimGdalImageWriterFactory*)NULL
 

Additional Inherited Members

- Public Types inherited from ossimImageWriterFactoryBase
typedef std::vector< ossimRefPtr< ossimImageFileWriter > > ImageFileWriterList
 

Detailed Description

Definition at line 21 of file ossimGdalImageWriterFactory.h.

Constructor & Destructor Documentation

◆ ~ossimGdalImageWriterFactory()

ossimGdalImageWriterFactory::~ossimGdalImageWriterFactory ( )
virtual

Definition at line 30 of file ossimGdalImageWriterFactory.cpp.

References theInstance.

◆ ossimGdalImageWriterFactory()

ossimGdalImageWriterFactory::ossimGdalImageWriterFactory ( )
inlineprotected

Definition at line 61 of file ossimGdalImageWriterFactory.h.

References theInstance.

Referenced by instance().

61 {theInstance = this;}
static ossimGdalImageWriterFactory * theInstance

Member Function Documentation

◆ canWrite()

bool ossimGdalImageWriterFactory::canWrite ( GDALDatasetH  handle) const
protected

Definition at line 196 of file ossimGdalImageWriterFactory.cpp.

Referenced by getImageFileWritersByMimeType(), and getImageFileWritersBySuffix().

197 {
198  return ( GDALGetMetadataItem(handle, GDAL_DCAP_CREATE, 0)|| GDALGetMetadataItem(handle, GDAL_DCAP_CREATECOPY, 0));
199 }

◆ convertToDriverName()

ossimString ossimGdalImageWriterFactory::convertToDriverName ( const ossimString imageTypeName) const
protected

◆ createObject() [1/2]

ossimObject * ossimGdalImageWriterFactory::createObject ( const ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Creates and object given a keyword list.

Implements ossimObjectFactory.

Definition at line 85 of file ossimGdalImageWriterFactory.cpp.

References createWriter().

87 {
88  return createWriter(kwl, prefix);
89 }
virtual ossimImageFileWriter * createWriter(const ossimKeywordlist &kwl, const char *prefix=0) const

◆ createObject() [2/2]

ossimObject * ossimGdalImageWriterFactory::createObject ( const ossimString typeName) const
virtual

Creates an object given a type name.

Implements ossimObjectFactory.

Definition at line 91 of file ossimGdalImageWriterFactory.cpp.

References createWriter().

92 {
93  return createWriter(typeName);
94 }
virtual ossimImageFileWriter * createWriter(const ossimKeywordlist &kwl, const char *prefix=0) const

◆ createWriter() [1/2]

ossimImageFileWriter * ossimGdalImageWriterFactory::createWriter ( const ossimKeywordlist kwl,
const char *  prefix = 0 
) const
virtual

Implements ossimImageWriterFactoryBase.

Definition at line 36 of file ossimGdalImageWriterFactory.cpp.

References ossimKeywordlist::add(), ossimKeywordlist::find(), ossimImageFileWriter::hasImageType(), ossimKeywordNames::IMAGE_TYPE_KW, ossimImageFileWriter::loadState(), and ossimKeywordNames::TYPE_KW.

Referenced by createObject().

38 {
39  ossimString type = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
41  if(type != "")
42  {
43  result = createWriter(type);
44  if (result)
45  {
46  if (result->hasImageType(type))
47  {
48  ossimKeywordlist kwl2(kwl);
49  kwl2.add(prefix,
51  type,
52  true);
53 
54  result->loadState(kwl2, prefix);
55  }
56  else
57  {
58  result->loadState(kwl, prefix);
59  }
60  }
61  }
62 
63  return result;
64 }
Represents serializable keyword/value map.
const char * find(const char *key) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Pure virtual base class for image file writers.
static const char * TYPE_KW
virtual bool hasImageType(const ossimString &imageType) const
bool hasImageType(const ossimString& imageType) const
virtual ossimImageFileWriter * createWriter(const ossimKeywordlist &kwl, const char *prefix=0) const
static const char * IMAGE_TYPE_KW

◆ createWriter() [2/2]

ossimImageFileWriter * ossimGdalImageWriterFactory::createWriter ( const ossimString typeName) const
virtual

Implements ossimImageWriterFactoryBase.

Definition at line 66 of file ossimGdalImageWriterFactory.cpp.

References ossimObject::getClassName(), ossimGdalWriter::hasImageType(), ossimRefPtr< T >::release(), and ossimGdalWriter::setOutputImageType().

67 {
69  if (writer->getClassName() == typeName)
70  {
71  return writer.release();
72  }
73 
74  if (writer->hasImageType(typeName))
75  {
76  writer->setOutputImageType(typeName);
77  return writer.release();
78  }
79 
80  writer = 0;
81 
82  return writer.release();
83 }
virtual void setOutputImageType(const ossimString &type)
virtual ossimString getClassName() const
Definition: ossimObject.cpp:64
virtual bool hasImageType(const ossimString &imageType) const
bool hasImageType(const ossimString& imageType) const
T * release()
Definition: ossimRefPtr.h:93

◆ getExtensions()

void ossimGdalImageWriterFactory::getExtensions ( std::vector< ossimString > &  result) const
virtual

Implements ossimImageWriterFactoryBase.

Definition at line 97 of file ossimGdalImageWriterFactory.cpp.

98 {
99  result.push_back("img");
100  result.push_back("jp2");
101  result.push_back("png");
102 }

◆ getImageFileWritersByMimeType()

void ossimGdalImageWriterFactory::getImageFileWritersByMimeType ( ossimImageWriterFactoryBase::ImageFileWriterList result,
const ossimString mimeType 
) const
virtual

Reimplemented from ossimImageWriterFactoryBase.

Definition at line 160 of file ossimGdalImageWriterFactory.cpp.

References ossimKeywordlist::add(), canWrite(), ossimString::empty(), ossimGdalWriter::loadState(), ossimGdalWriter::setOutputImageType(), and ossimString::upcase().

162 {
163  int c = GDALGetDriverCount();
164  int idx = 0;
165  for(idx = 0; idx < c; ++idx)
166  {
167 
168  GDALDriverH h = GDALGetDriver(idx);
169  if(canWrite(h))
170  {
171  ossimString driverName = GDALGetDriverShortName(h);
172  driverName = "gdal_" + driverName.upcase();
173  ossimString metaData(GDALGetMetadataItem(h, GDAL_DMD_MIMETYPE, 0));
174  if(!metaData.empty())
175  {
176  if(metaData == mimeType)
177  {
178  ossimGdalWriter* writer = new ossimGdalWriter;
179  writer->setOutputImageType(driverName);
180  result.push_back(writer);
181  if ( driverName == "gdal_JP2KAK" )
182  {
183  // Make it lossless for starters. User can still override.
184  ossimKeywordlist kwl;
185  kwl.add("property0.name", "QUALITY");
186  kwl.add("property0.value", "100");
187  writer->loadState(kwl, NULL);
188  }
189  return;
190  }
191  }
192  }
193  }
194 }
static ossimString upcase(const ossimString &aString)
Definition: ossimString.cpp:34
Represents serializable keyword/value map.
virtual void setOutputImageType(const ossimString &type)
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
bool canWrite(GDALDatasetH handle) const

◆ getImageFileWritersBySuffix()

void ossimGdalImageWriterFactory::getImageFileWritersBySuffix ( ossimImageWriterFactoryBase::ImageFileWriterList result,
const ossimString ext 
) const
virtual

Reimplemented from ossimImageWriterFactoryBase.

Definition at line 116 of file ossimGdalImageWriterFactory.cpp.

References ossimKeywordlist::add(), canWrite(), ossimString::empty(), ossimGdalWriter::loadState(), ossimGdalWriter::setOutputImageType(), ossimString::split(), and ossimString::upcase().

118 {
119  int c = GDALGetDriverCount();
120  int idx = 0;
121  for(idx = 0; idx < c; ++idx)
122  {
123 
124  GDALDriverH h = GDALGetDriver(idx);
125  if(canWrite(h))
126  {
127  ossimString driverName = GDALGetDriverShortName(h);
128  driverName = "gdal_" + driverName.upcase();
129  ossimString metaData(GDALGetMetadataItem(h, GDAL_DMD_EXTENSION, 0));
130  if(!metaData.empty())
131  {
132  std::vector<ossimString> splitArray;
133  metaData.split(splitArray, " /");
134 
135  ossim_uint32 idxExtension = 0;
136 
137  for(idxExtension = 0; idxExtension < splitArray.size(); ++idxExtension)
138  {
139  if(ext == splitArray[idxExtension])
140  {
141  ossimGdalWriter* writer = new ossimGdalWriter;
142  writer->setOutputImageType(driverName);
143  result.push_back(writer);
144  if ( driverName == "gdal_JP2KAK" )
145  {
146  // Make it lossless for starters. User can still override.
147  ossimKeywordlist kwl;
148  kwl.add("property0.name", "QUALITY");
149  kwl.add("property0.value", "100");
150  writer->loadState(kwl, NULL);
151  }
152  return;
153  }
154  }
155  }
156  }
157  }
158 }
static ossimString upcase(const ossimString &aString)
Definition: ossimString.cpp:34
Represents serializable keyword/value map.
virtual void setOutputImageType(const ossimString &type)
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
unsigned int ossim_uint32
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
bool canWrite(GDALDatasetH handle) const

◆ getImageTypeList()

void ossimGdalImageWriterFactory::getImageTypeList ( std::vector< ossimString > &  imageTypeList) const
virtual

void getImageTypeList(std::vector<ossimString>& imageTypeList)const

Appends this writer image types to list "imageTypeList".

This writer can have the following types dependent upon how the gdal library was compiled: gdal_imagine_hfa gdal_nitf_rgb_band_separate gdal_jpeg2000 gdal_arc_info_aig gdal_arc_info_gio gdal_arc_info_ascii_grid

Parameters
imageTypeListstl::vector<ossimString> list to append to.

Implements ossimImageWriterFactoryBase.

Definition at line 109 of file ossimGdalImageWriterFactory.cpp.

References ossimGdalWriter::getImageTypeList().

Referenced by getTypeNameList().

110 {
111  ossimGdalWriter* writer = new ossimGdalWriter;
112  writer->getImageTypeList(imageTypeList);
113  delete writer;
114 }
virtual void getImageTypeList(std::vector< ossimString > &imageTypeList) const
void getImageTypeList(std::vector<ossimString>& imageTypeList)const

◆ getTypeNameList()

void ossimGdalImageWriterFactory::getTypeNameList ( std::vector< ossimString > &  typeList) const
virtual

This should return the type name of all objects in all factories. This is the name used to construct the objects dynamially and this name must be unique.

Implements ossimObjectFactory.

Definition at line 104 of file ossimGdalImageWriterFactory.cpp.

References getImageTypeList().

105 {
106  getImageTypeList(typeList);
107 }
virtual void getImageTypeList(std::vector< ossimString > &imageTypeList) const
void getImageTypeList(std::vector<ossimString>& imageTypeList)const

◆ instance()

ossimGdalImageWriterFactory * ossimGdalImageWriterFactory::instance ( )
static

Definition at line 20 of file ossimGdalImageWriterFactory.cpp.

References ossimGdalImageWriterFactory(), and theInstance.

Referenced by ossimSharedLibraryFinalize(), and ossimSharedLibraryInitialize().

21 {
22  if(!theInstance)
23  {
25  }
26 
27  return theInstance;
28 }
static ossimGdalImageWriterFactory * theInstance

Member Data Documentation

◆ theInstance

ossimGdalImageWriterFactory * ossimGdalImageWriterFactory::theInstance = (ossimGdalImageWriterFactory*)NULL
staticprotected

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