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

#include <ossimImageWriterFactoryRegistry.h>

Inheritance diagram for ossimImageWriterFactoryRegistry:
ossimObjectFactory ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter > ossimObject ossimReferenced

Public Member Functions

ossimImageFileWritercreateWriter (const ossimFilename &filename) const
 
ossimImageFileWritercreateWriterFromExtension (const ossimString &fileExtension) const
 
ossimImageFileWritercreateWriter (const ossimKeywordlist &kwl, const char *prefix=0) const
 
ossimImageFileWritercreateWriter (const ossimString &typeName) const
 
ossimObjectcreateObject (const ossimKeywordlist &kwl, const char *prefix=0) const
 
ossimObjectcreateObject (const ossimString &typeName) const
 
virtual void getTypeNameList (std::vector< ossimString > &typeList) const
 getTypeNameList. More...
 
virtual void getImageTypeList (std::vector< ossimString > &imageTypeList) const
 getImageTypeList. More...
 
virtual void getImageFileWritersBySuffix (ossimImageWriterFactoryBase::ImageFileWriterList &result, const ossimString &ext) const
 
virtual void getImageFileWritersByMimeType (ossimImageWriterFactoryBase::ImageFileWriterList &result, const ossimString &mimeType) const
 
std::ostream & printImageTypeList (std::ostream &out) const
 Prints list of writers from getImageTypeList. More...
 
std::ostream & printWriterProps (std::ostream &out) const
 Prints list of writers from getImageTypeList. More...
 
- 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
 
- Public Member Functions inherited from ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >
 ossimFactoryListInterface ()
 
void addFactory (ossimImageWriterFactoryBase *factory)
 This is for backward compatability and calls registerFactory for simple adds. More...
 
bool isFactoryRegistered (ossimImageWriterFactoryBase *factory) const
 Public access method to determine if a factory is already registered to this list. More...
 
void registerFactory (ossimImageWriterFactoryBase *factory, bool pushToFrontFlag=false)
 Will register a factory to the factory list. More...
 
void unregisterFactory (ossimImageWriterFactoryBase *factory)
 Will remove the factory from the registry. More...
 
void unregisterFactory (const ossimString &factoryTypeName)
 Will remove the factory from the registry by name. More...
 
void unregisterAllFactories ()
 Will remove all factories from the registry. More...
 
void registerFactoryToFront (ossimImageWriterFactoryBase *factory)
 Inserts the factory to the front of the list. More...
 
void registerFactoryBefore (ossimImageWriterFactoryBase *factory, ossimImageWriterFactoryBase *beforeThisFactory)
 Will insert the factory before the beforeThisFactory. More...
 
void getAllTypeNamesFromRegistry (std::vector< ossimString > &typeList) const
 Will add all object types the factories can allocate. More...
 
ossimObjectcreateObjectFromRegistry (const ossimString &typeName) const
 This is the base object return for all objects in the system. More...
 
ossimObjectcreateObjectFromRegistry (const ossimKeywordlist &kwl, const char *prefix=0) const
 This is the base object return for all objects in the system. More...
 
ossimImageFileWritercreateNativeObjectFromRegistry (const ossimString &typeName) const
 This is a helper method that calls the createObject and makes sure that the returned object is of the NativeType base type this registry supports. More...
 
ossimImageFileWritercreateNativeObjectFromRegistry (const ossimKeywordlist &kwl, const char *prefix=0) const
 This is a helper method that calls the createObject and makes sure that the returned object is of the NativeType base type this registry supports. More...
 

Static Public Member Functions

static ossimImageWriterFactoryRegistryinstance ()
 

Protected Member Functions

 ossimImageWriterFactoryRegistry ()
 
 ossimImageWriterFactoryRegistry (const ossimImageWriterFactoryRegistry &)
 
void operator= (const ossimImageWriterFactoryRegistry &)
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 
- Protected Member Functions inherited from ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >
bool findFactory (ossimImageWriterFactoryBase *factory) const
 Utility to find a factory in the list. More...
 

Additional Inherited Members

- Public Types inherited from ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >
typedef std::vector< ossimImageWriterFactoryBase *> FactoryListType
 
typedef ossimImageWriterFactoryBase FactoryType
 
typedef ossimImageFileWriter NativeReturnType
 
- Protected Attributes inherited from ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >
std::mutex m_factoryListMutex
 
FactoryListType m_factoryList
 

Detailed Description

Definition at line 24 of file ossimImageWriterFactoryRegistry.h.

Constructor & Destructor Documentation

◆ ossimImageWriterFactoryRegistry() [1/2]

ossimImageWriterFactoryRegistry::ossimImageWriterFactoryRegistry ( )
protected

Definition at line 28 of file ossimImageWriterFactoryRegistry.cpp.

29 {
30 }

◆ ossimImageWriterFactoryRegistry() [2/2]

ossimImageWriterFactoryRegistry::ossimImageWriterFactoryRegistry ( const ossimImageWriterFactoryRegistry )
protected

Definition at line 309 of file ossimImageWriterFactoryRegistry.cpp.

310  :
312 {
313 }

Member Function Documentation

◆ createObject() [1/2]

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

Creates and object given a keyword list.

Implements ossimObjectFactory.

Definition at line 64 of file ossimImageWriterFactoryRegistry.cpp.

References ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::createObjectFromRegistry().

66 {
67  return createObjectFromRegistry(kwl, prefix);
68 }
ossimObject * createObjectFromRegistry(const ossimString &typeName) const
This is the base object return for all objects in the system.

◆ createObject() [2/2]

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

Creates an object given a type name.

Implements ossimObjectFactory.

Definition at line 70 of file ossimImageWriterFactoryRegistry.cpp.

References ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::createObjectFromRegistry().

71 {
72  return createObjectFromRegistry(typeName);
73 }
ossimObject * createObjectFromRegistry(const ossimString &typeName) const
This is the base object return for all objects in the system.

◆ createWriter() [1/3]

ossimImageFileWriter * ossimImageWriterFactoryRegistry::createWriter ( const ossimFilename filename) const

Definition at line 53 of file ossimImageWriterFactoryRegistry.cpp.

References createWriterFromExtension(), ossimString::downcase(), ossimFilename::ext(), and ossimImageFileWriter::setFilename().

Referenced by ossimDemTool::doOMG(), ossimPointCloudTool::execute(), and main().

54 {
56  if(writer)
57  {
58  writer->setFilename(filename);
59  }
60 
61  return writer;
62 }
ossimImageFileWriter * createWriterFromExtension(const ossimString &fileExtension) const
Pure virtual base class for image file writers.
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
virtual void setFilename(const ossimFilename &file)
ossimString ext() const

◆ createWriter() [2/3]

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

Definition at line 93 of file ossimImageWriterFactoryRegistry.cpp.

References createWriterFromExtension(), ossimFilename::ext(), ossimKeywordNames::FILENAME_KW, ossimKeywordlist::find(), ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::m_factoryList, ossimImageFileWriter::setFilename(), and ossimKeywordNames::TYPE_KW.

95 {
96  // let's see if we ned to return an object based on extension.
97  // this is specified by the type to be a generic
98  // ossimImageFileWriter
99  //
100  ossimString type = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
101 
102  if(type == "ossimImageFileWriter")
103  {
104  ossimFilename filename = kwl.find(prefix, ossimKeywordNames::FILENAME_KW);
105 
106  if((filename != "")&&
107  (filename.ext() != ""))
108  {
109  ossimImageFileWriter* writer = createWriterFromExtension(filename.ext());
110 
111  if(writer)
112  {
113  writer->setFilename(filename);
114  }
115  return writer;
116  }
117  }
118 
119  vector<ossimImageWriterFactoryBase*>::const_iterator factories;
120  ossimImageFileWriter *result = NULL;
121 
122  factories = m_factoryList.begin();
123  while(factories != m_factoryList.end())
124  {
125  result = (*factories)->createWriter(kwl, prefix);
126  if(result)
127  {
128  return result;
129  }
130  ++factories;
131  }
132 
133  return result;
134 }
ossimImageFileWriter * createWriterFromExtension(const ossimString &fileExtension) const
const char * find(const char *key) const
Pure virtual base class for image file writers.
static const char * TYPE_KW
virtual void setFilename(const ossimFilename &file)
ossimString ext() const
static const char * FILENAME_KW

◆ createWriter() [3/3]

ossimImageFileWriter * ossimImageWriterFactoryRegistry::createWriter ( const ossimString typeName) const

Definition at line 136 of file ossimImageWriterFactoryRegistry.cpp.

References ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::m_factoryList.

137 {
138  vector<ossimImageWriterFactoryBase*>::const_iterator factories;
139  ossimImageFileWriter *result = NULL;
140 
141  factories = m_factoryList.begin();
142  while(factories != m_factoryList.end())
143  {
144  result = (*factories)->createWriter(typeName);
145  if(result)
146  {
147  return result;
148  }
149  ++factories;
150  }
151 
152  return result;
153 }
Pure virtual base class for image file writers.

◆ createWriterFromExtension()

ossimImageFileWriter * ossimImageWriterFactoryRegistry::createWriterFromExtension ( const ossimString fileExtension) const

Definition at line 80 of file ossimImageWriterFactoryRegistry.cpp.

References getImageFileWritersBySuffix().

Referenced by createWriter().

81 {
82  ossimImageFileWriter *writer = NULL;
84  getImageFileWritersBySuffix(result, fileExtension);
85  if(!result.empty())
86  {
87  writer = result[0].release();
88  result.clear();
89  }
90  return writer;
91 }
virtual void getImageFileWritersBySuffix(ossimImageWriterFactoryBase::ImageFileWriterList &result, const ossimString &ext) const
Pure virtual base class for image file writers.
std::vector< ossimRefPtr< ossimImageFileWriter > > ImageFileWriterList

◆ getImageFileWritersByMimeType()

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

Definition at line 194 of file ossimImageWriterFactoryRegistry.cpp.

References ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::m_factoryList.

196 {
198  vector<ossimImageWriterFactoryBase*>::const_iterator iter = m_factoryList.begin();
199 
200  while(iter != m_factoryList.end())
201  {
202  result.clear();
203  (*iter)->getImageFileWritersByMimeType(tempResult, mimeType);
204 
205  // now append to the end of the typeList.
206  result.insert(result.end(),
207  tempResult.begin(),
208  tempResult.end());
209  ++iter;
210  }
211 }
std::vector< ossimRefPtr< ossimImageFileWriter > > ImageFileWriterList

◆ getImageFileWritersBySuffix()

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

Definition at line 174 of file ossimImageWriterFactoryRegistry.cpp.

References ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::m_factoryList.

Referenced by createWriterFromExtension().

176 {
178  vector<ossimImageWriterFactoryBase*>::const_iterator iter = m_factoryList.begin();
179 
180  while(iter != m_factoryList.end())
181  {
182  result.clear();
183  (*iter)->getImageFileWritersBySuffix(tempResult, ext);
184 
185  // now append to the end of the typeList.
186  result.insert(result.end(),
187  tempResult.begin(),
188  tempResult.end());
189  ++iter;
190  }
191 
192 }
std::vector< ossimRefPtr< ossimImageFileWriter > > ImageFileWriterList

◆ getImageTypeList()

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

getImageTypeList.

This is the actual image type name. So for example, ossimTiffWriter has several image types. Some of these include TIFF_TILED, TIFF_TILED_BAND_SEPARATE ... etc. The ossimGdalWriter may include GDAL_IMAGINE_HFA, GDAL_RGB_NITF, GDAL_JPEG20000, ... etc A writer should be able to be instantiated by this name as well as a class name

Definition at line 156 of file ossimImageWriterFactoryRegistry.cpp.

References ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::m_factoryList.

Referenced by printImageTypeList(), and printOutputTypes().

157 {
158  vector<ossimString> result;
159  vector<ossimImageWriterFactoryBase*>::const_iterator iter = m_factoryList.begin();
160 
161  while(iter != m_factoryList.end())
162  {
163  result.clear();
164  (*iter)->getImageTypeList(result);
165 
166  // now append to the end of the typeList.
167  typeList.insert(typeList.end(),
168  result.begin(),
169  result.end());
170  ++iter;
171  }
172 }

◆ getTypeNameList()

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

getTypeNameList.

This should return the class type of the object being used to perform the writting.

Implements ossimObjectFactory.

Definition at line 75 of file ossimImageWriterFactoryRegistry.cpp.

References ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::getAllTypeNamesFromRegistry().

76 {
78 }
void getAllTypeNamesFromRegistry(std::vector< ossimString > &typeList) const
Will add all object types the factories can allocate.

◆ instance()

ossimImageWriterFactoryRegistry * ossimImageWriterFactoryRegistry::instance ( )
static

Definition at line 32 of file ossimImageWriterFactoryRegistry.cpp.

References ossimImageWriterFactory::instance(), ossimObjectFactoryRegistry::instance(), and ossimFactoryListInterface< T, NativeType >::registerFactory().

Referenced by ossimDemTool::doOMG(), ossimPointCloudTool::execute(), ossimInit::initializeDefaultFactories(), ossimImageWriterFactory::instance(), main(), ossimImageWriterFactoryRegistryGetInstance(), ossimSharedLibraryFinalize(), ossimSharedLibraryInitialize(), printOutputTypes(), ossimInfo::printWriterProps(), and ossimInfo::printWriters().

33 {
35  static bool initInst = false;
36  if(!initInst)
37  {
40  initInst = true;
41  }
42 
43  return &inst;
44 // if(!theInstance)
45 // {
46 // theInstance = new ossimImageWriterFactoryRegistry;
47 // }
48 
49 // return theInstance;
50 }
static ossimImageWriterFactory * instance()
static ossimObjectFactoryRegistry * instance()
void registerFactory(T *factory, bool pushToFrontFlag=false)
Will register a factory to the factory list.

◆ operator=()

void ossimImageWriterFactoryRegistry::operator= ( const ossimImageWriterFactoryRegistry )
protected

Definition at line 315 of file ossimImageWriterFactoryRegistry.cpp.

316 {
317 }

◆ printImageTypeList()

std::ostream & ossimImageWriterFactoryRegistry::printImageTypeList ( std::ostream &  out) const

Prints list of writers from getImageTypeList.

Parameters
outStream to print to.
Returns
std::ostream&

Definition at line 213 of file ossimImageWriterFactoryRegistry.cpp.

References getImageTypeList().

Referenced by ossimInfo::printWriters().

215 {
216  std::vector<ossimString> outputType;
217 
218  this->getImageTypeList(outputType);
219  std::copy(outputType.begin(),
220  outputType.end(),
221  std::ostream_iterator<ossimString>(out, "\n"));
222  out << std::endl;
223  return out;
224 }
virtual void getImageTypeList(std::vector< ossimString > &imageTypeList) const
getImageTypeList.

◆ printWriterProps()

std::ostream & ossimImageWriterFactoryRegistry::printWriterProps ( std::ostream &  out) const

Prints list of writers from getImageTypeList.

Parameters
outStream to print to.
Returns
std::ostream&

Definition at line 226 of file ossimImageWriterFactoryRegistry.cpp.

References ossimRefPtr< T >::get(), ossimObject::getClassName(), ossimStringProperty::getConstraints(), ossimImageFileWriter::getImageTypeList(), ossimImageFileWriter::getProperty(), ossimImageFileWriter::getPropertyNames(), ossimFactoryListInterface< ossimImageWriterFactoryBase, ossimImageFileWriter >::m_factoryList, and ossimRefPtr< T >::valid().

Referenced by ossimInfo::printWriterProps().

227 {
228  // Loop through factories:
229  vector<ossimImageWriterFactoryBase*>::const_iterator factoryIter = m_factoryList.begin();
230  while( factoryIter != m_factoryList.end() )
231  {
232  out << "factory: " << (*factoryIter)->getClassName() << "\n\n";
233 
234  // Loop through writer classes in factory.
235  std::vector<ossimString> typeNames;
236  (*factoryIter)->getTypeNameList(typeNames);
237  std::vector<ossimString>::const_iterator typeNamesIter = typeNames.begin();
238  while (typeNamesIter != typeNames.end())
239  {
240  ossimRefPtr<ossimImageFileWriter> writer = (*factoryIter)->createWriter(*typeNamesIter);
241  if ( writer.valid() )
242  {
243  out << "writer:\n" << writer->getClassName() << "\n";
244 
245  // Loop through writer types, e.g. tiff_tiled_band_separate
246  std::vector<ossimString> imageTypeList;
247  writer->getImageTypeList(imageTypeList);
248  std::vector<ossimString>::const_iterator imageTypeListIter = imageTypeList.begin();
249  out << "\ntypes:\n";
250  while ( imageTypeListIter != imageTypeList.end() )
251  {
252  out << (*imageTypeListIter) << "\n";
253  ++imageTypeListIter;
254  }
255 
256  // Loop through writer properties:
257  std::vector<ossimString> propNames;
258  writer->getPropertyNames(propNames);
259  if ( propNames.size() )
260  {
261  out << "\nproperties:\n";
263  std::vector<ossimString>::const_iterator p = propNames.begin();
264  while ( p != propNames.end() )
265  {
266  out << " " << (*p) << "\n";
267  prop = writer->getProperty( *p );
268  if ( prop.valid() )
269  {
270  ossimStringProperty* stringProp =
271  dynamic_cast<ossimStringProperty*>(prop.get());
272  if ( stringProp )
273  {
274  if ( stringProp->getConstraints().size() )
275  {
276  out << " constraints:\n";
277  std::vector<ossimString>::const_iterator strPropIter =
278  stringProp->getConstraints().begin();
279  while( strPropIter != stringProp->getConstraints().end() )
280  {
281  out << " " << (*strPropIter) << "\n";
282  ++strPropIter;
283  }
284  }
285  }
286  }
287 
288  ++p;
289  }
290  out << "\n";
291  }
292  }
293  ++typeNamesIter;
294  }
295 
296  ++factoryIter;
297  }
298  return out;
299 }
bool valid() const
Definition: ossimRefPtr.h:75
virtual ossimString getClassName() const
Definition: ossimObject.cpp:64
const std::vector< ossimString > & getConstraints() const
virtual void getPropertyNames(std::vector< ossimString > &propertyNames) const
virtual void getImageTypeList(std::vector< ossimString > &imageTypeList) const =0
void getImageTypeList(std::vector<ossimString>& imageTypeList)const
virtual ossimRefPtr< ossimProperty > getProperty(const ossimString &name) const

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