OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimImageMetaDataWriterFactory.cpp
Go to the documentation of this file.
1 //*******************************************************************
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: Kenneth Melero
6 //
7 //*******************************************************************
8 // $Id: ossimImageMetaDataWriterFactory.cpp 17206 2010-04-25 23:20:40Z dburken $
9 
11 
18 
20 
22  "ossimImageMetaDataWriterFactory",
24 
27 
29 {
30  theInstance = this;
31 }
32 
34 {
35  theInstance = NULL;
36 }
37 
39 {
40  if(!theInstance)
41  {
43  }
44 
45  return theInstance;
46 }
47 
49  const ossimString& typeName) const
50 {
51  // Use the type name to instantiate the class.
52  ossimObject* result = (ossimObject*)NULL;
53 
55  {
56  result = new ossimEnviHeaderFileWriter;
57  }
58  if(STATIC_TYPE_NAME(ossimERSFileWriter) == typeName)
59  {
60  result = new ossimERSFileWriter;
61  }
62  else if(STATIC_TYPE_NAME(ossimFgdcFileWriter) == typeName)
63  {
64  result = new ossimFgdcFileWriter;
65  }
66  else if(STATIC_TYPE_NAME(ossimGeomFileWriter) == typeName)
67  {
68  result = new ossimGeomFileWriter;
69  }
70  else if(STATIC_TYPE_NAME(ossimReadmeFileWriter) == typeName)
71  {
72  result = new ossimReadmeFileWriter;
73  }
74  //---
75  // Special case for backwards compatibility. ossimJpegWorldFileWriter and
76  // ossimTiffWorldFileWriter same; hence, moved to ossimWorldFileWriter.
77  //---
78  else if( (STATIC_TYPE_NAME(ossimWorldFileWriter) == typeName) ||
79  (ossimString("ossimJpegWorldFileWriter") == typeName) ||
80  (ossimString("ossimTiffWorldFileWriter") == typeName) )
81  {
82  result = new ossimWorldFileWriter;
83  }
84 
85  return result;
86 }
87 
89  const ossimKeywordlist& kwl, const char* prefix)const
90 {
91  //---
92  // Check the type keyword found in kwl. Use the create by class name
93  // above and then call load state.
94  //---
95  ossimObject* result = (ossimObject*)NULL;
96 
97  const char* type = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
98 
99  if(type)
100  {
101  result = createObject(ossimString(type));
102  if(result)
103  {
104  result->loadState(kwl, prefix);
105  }
106  }
107 
108  return result;
109 }
110 
113 {
115 
116  writer = new ossimEnviHeaderFileWriter;
117  if ( (writer->getClassName() == type) ||
118  (writer->hasMetadataType(type)) )
119  {
120  return writer;
121  }
122 
123  writer = new ossimERSFileWriter;
124  if ( (writer->getClassName() == type) ||
125  (writer->hasMetadataType(type)) )
126  {
127  return writer;
128  }
129 
130  writer = new ossimFgdcFileWriter;
131  if ( (writer->getClassName() == type) ||
132  (writer->hasMetadataType(type)) )
133  {
134  return writer;
135  }
136 
137  writer = new ossimGeomFileWriter;
138  if ( (writer->getClassName() == type) ||
139  (writer->hasMetadataType(type)) )
140  {
141  return writer;
142  }
143 
144  writer = new ossimReadmeFileWriter;
145  if ( (writer->getClassName() == type) ||
146  (writer->hasMetadataType(type)) )
147  {
148  return writer;
149  }
150 
151  //---
152  // Special case for backwards compatibility. ossimJpegWorldFileWriter and
153  // ossimTiffWorldFileWriter same; hence, moved to ossimWorldFileWriter.
154  //---
155  writer = new ossimWorldFileWriter;
156  if ( (writer->getClassName() == type) ||
157  (writer->hasMetadataType(type)) ||
158  (ossimString("ossimJpegWorldFileWriter") == type) ||
159  (ossimString("ossimTiffWorldFileWriter") == type) )
160  {
161  return writer;
162  }
163 
164  // Not in factory.
165  writer = NULL;
166  return writer;
167 }
168 
170  std::vector<ossimString>& typeList) const
171 {
172  // add each object's RTTI name here
173  typeList.push_back(STATIC_TYPE_NAME(ossimEnviHeaderFileWriter));
174  typeList.push_back(STATIC_TYPE_NAME(ossimERSFileWriter));
175  typeList.push_back(STATIC_TYPE_NAME(ossimFgdcFileWriter));
176  typeList.push_back(STATIC_TYPE_NAME(ossimGeomFileWriter));
177  typeList.push_back(STATIC_TYPE_NAME(ossimReadmeFileWriter));
178  typeList.push_back(STATIC_TYPE_NAME(ossimWorldFileWriter));
179 }
180 
182  std::vector<ossimString>& metadatatypeList) const
183 {
185 
186  writer = new ossimEnviHeaderFileWriter;
187  writer->getMetadatatypeList(metadatatypeList);
188 
189  writer = new ossimERSFileWriter;
190  writer->getMetadatatypeList(metadatatypeList);
191 
192  writer = new ossimFgdcFileWriter;
193  writer->getMetadatatypeList(metadatatypeList);
194 
195  writer = new ossimGeomFileWriter;
196  writer->getMetadatatypeList(metadatatypeList);
197 
198  writer = new ossimReadmeFileWriter;
199  writer->getMetadatatypeList(metadatatypeList);
200 
201  writer = new ossimWorldFileWriter;
202  writer->getMetadatatypeList(metadatatypeList);
203 }
204 
206  const ossimImageMetaDataWriterFactory& /* rhs */)
207 {
208 }
209 
212  const ossimImageMetaDataWriterFactory& /* rhs */)
213 {
214  return *this;
215 }
Represents serializable keyword/value map.
static ossimImageMetaDataWriterFactory * instance()
virtual void getMetadatatypeList(std::vector< ossimString > &metadatatypeList) const =0
void getMetadatatypeList(std::vector<ossimString>& metadatatypeList)const
const char * find(const char *key) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Class to write out meta data in a Federal Geographic Data Committe (FGDC) format. ...
ossimWorldFileWriter
virtual ossimString getClassName() const
Definition: ossimObject.cpp:64
static const char * TYPE_KW
#define STATIC_TYPE_NAME(T)
Definition: ossimRtti.h:325
virtual void getMetadatatypeList(std::vector< ossimString > &metadatatypeList) const
Satisfies pure virtual from ossimImageMetaDataWriterFactoryBase.
Class for writing a "ERS" style header.
virtual ossimObject * createObject(const ossimString &typeName) const
virtual void getTypeNameList(std::vector< ossimString > &typeList) const
This should return the type name of all objects in all factories.
static ossimImageMetaDataWriterFactory * theInstance
virtual ossimRefPtr< ossimMetadataFileWriter > createWriter(const ossimString &type) const
Creates a writer from either a class name or a string representing the meta data type like "tiff_worl...
ossimReadmeFileWriter
RTTI_DEF1(ossimImageMetaDataWriterFactory, "ossimImageMetaDataWriterFactory", ossimImageMetaDataWriterFactoryBase)
const ossimImageMetaDataWriterFactory & operator=(const ossimImageMetaDataWriterFactory &rhs)
virtual bool hasMetadataType(const ossimString &metadataType) const =0
bool hasMetadataType(const ossimString& metadataType) const
Class for writing a "ENVI" style header.
ossimGeomFileWriter