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
ossimImageWriterFactory Class Reference

#include <ossimImageWriterFactory.h>

Inheritance diagram for ossimImageWriterFactory:
ossimImageWriterFactoryBase ossimObjectFactory ossimObject ossimReferenced

Public Member Functions

virtual ~ossimImageWriterFactory ()
 
ossimImageFileWritercreateWriterFromExtension (const ossimString &fileExtension) const
 
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
 
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 ossimImageWriterFactoryinstance ()
 

Protected Member Functions

 ossimImageWriterFactory ()
 
ossimImageFileWritercreateFromMimeType (const ossimString &mimeType) const
 
bool isImageTypeName (const ossimString &name) const
 
- Protected Member Functions inherited from ossimReferenced
virtual ~ossimReferenced ()
 

Static Protected Attributes

static ossimImageWriterFactorytheInstance = (ossimImageWriterFactory*)NULL
 

Additional Inherited Members

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

Detailed Description

Definition at line 20 of file ossimImageWriterFactory.h.

Constructor & Destructor Documentation

◆ ~ossimImageWriterFactory()

ossimImageWriterFactory::~ossimImageWriterFactory ( )
virtual

Definition at line 39 of file ossimImageWriterFactory.cpp.

References theInstance.

◆ ossimImageWriterFactory()

ossimImageWriterFactory::ossimImageWriterFactory ( )
inlineprotected

Definition at line 55 of file ossimImageWriterFactory.h.

Referenced by instance().

55 {}

Member Function Documentation

◆ createFromMimeType()

ossimImageFileWriter * ossimImageWriterFactory::createFromMimeType ( const ossimString mimeType) const
protected

Definition at line 250 of file ossimImageWriterFactory.cpp.

References ossimImageFileWriter::setOutputImageType().

Referenced by createWriter().

252 {
253  if((mimeType == "image/jpeg")||
254  (mimeType == "image/jpg"))
255  {
256  ossimJpegWriter* writer = new ossimJpegWriter;
257  writer->setOutputImageType("jpeg");
258  return writer;
259  }
260  else if((mimeType == "image/tiff")||
261  (mimeType == "image/tif")||
262  (mimeType == "image/gtif")||
263  (mimeType == "image/gtiff"))
264  {
265  ossimTiffWriter* writer = new ossimTiffWriter;
266  writer->setOutputImageType("tiff_tiled_band_separate");
267  return writer;
268  }
269  else if((mimeType == "image/nitf") ||
270  (mimeType == "image/ntf"))
271  {
272  ossimNitfWriter* writer = new ossimNitfWriter;
273  writer->setOutputImageType("nitf_block_band_separate");
274  return writer;
275  }
276  else if((mimeType == "image/ras"))
277  {
279  writer->setOutputImageType("general_raster_bsq");
280  return writer;
281  }
282  else if((mimeType == "application/pdf")||
283  (mimeType == "image/pdf"))
284  {
285  ossimPdfWriter* writer = new ossimPdfWriter;
286  writer->setOutputImageType("ossim_pdf");
287  return writer;
288  }
289  return 0;
290 }
virtual void setOutputImageType(ossim_int32 type)
References:

◆ createObject() [1/2]

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

Creates and object given a keyword list.

Implements ossimObjectFactory.

Definition at line 292 of file ossimImageWriterFactory.cpp.

References createWriter().

294 {
295  return createWriter(kwl, prefix);
296 }
virtual ossimImageFileWriter * createWriter(const ossimKeywordlist &kwl, const char *prefix=0) const

◆ createObject() [2/2]

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

Creates an object given a type name.

Implements ossimObjectFactory.

Definition at line 298 of file ossimImageWriterFactory.cpp.

References createWriter().

299 {
300  return createWriter(typeName);
301 }
virtual ossimImageFileWriter * createWriter(const ossimKeywordlist &kwl, const char *prefix=0) const

◆ createWriter() [1/2]

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

Implements ossimImageWriterFactoryBase.

Definition at line 89 of file ossimImageWriterFactory.cpp.

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

Referenced by createObject().

91 {
92  ossimString type = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
94 
95  if(type != "")
96  {
97  result = createWriter(type);
98  if (result)
99  {
100  if (result->hasImageType(type))
101  {
102  ossimKeywordlist kwl2(kwl);
103  kwl2.add(prefix,
105  type,
106  true);
107 
108  result->loadState(kwl2, prefix);
109  }
110  else
111  {
112  result->loadState(kwl, prefix);
113  }
114  }
115  }
116 
117  return result;
118 }
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 * ossimImageWriterFactory::createWriter ( const ossimString typeName) const
virtual

Implements ossimImageWriterFactoryBase.

Definition at line 121 of file ossimImageWriterFactory.cpp.

References createFromMimeType(), ossimString::downcase(), ossimObject::getClassName(), ossimImageFileWriter::hasImageType(), ossimRefPtr< T >::release(), ossimImageFileWriter::setOutputImageType(), STATIC_TYPE_NAME, and ossimRefPtr< T >::valid().

122 {
123  ossimString mimeType = typeName;
124  mimeType = mimeType.downcase();
125 
126  // Check for tiff writer.
128 
129  if(writer.valid())
130  {
131  return writer.release();
132  }
133 
134  // Check for generic ossim writer.
135  writer = new ossimWriter;
136  if ( writer->getClassName() == typeName )
137  {
138  return writer.release();
139  }
140  else
141  {
142  // See if the type name is supported by the writer.
143  if ( writer->hasImageType(typeName) )
144  {
145  writer->setOutputImageType(typeName);
146  return writer.release();
147  }
148  }
149 
150  writer = new ossimTiffWriter;
151  if (STATIC_TYPE_NAME(ossimTiffWriter) == typeName )
152  {
153  return writer.release();
154  }
155  else
156  {
157  // See if the type name is supported by the writer.
158  if ( writer->hasImageType(typeName) )
159  {
160  writer->setOutputImageType(typeName);
161  return writer.release();
162  }
163  }
164 
165  // Check for jpeg writer.
166  writer = new ossimJpegWriter;
167  if ( writer->getClassName() == typeName )
168  {
169  return writer.release();
170  }
171  else
172  {
173  // See if the type name is supported by the writer.
174  if ( writer->hasImageType(typeName) )
175  {
176  writer->setOutputImageType(typeName);
177  return writer.release();
178  }
179  }
180 
181  // Check for general raster writer.
182  writer = new ossimGeneralRasterWriter;
183  if ( writer->getClassName() == typeName )
184  {
185  return writer.release();
186  }
187  else
188  {
189  // See if the type name is supported by the writer.
190  if ( writer->hasImageType(typeName) )
191  {
192  writer->setOutputImageType(typeName);
193  return writer.release();
194  }
195  }
196 
197  // Check for nitf writer.
198  writer = new ossimNitfWriter;
199  if ( writer->getClassName() == typeName )
200  {
201  return writer.release();
202  }
203  else
204  {
205  // See if the type name is supported by the writer.
206  if ( writer->hasImageType(typeName) )
207  {
208  writer->setOutputImageType(typeName);
209  return writer.release();
210  }
211  }
212 
213  // Check for nitf writer.
214  writer = new ossimNitf20Writer;
215  if ( writer->getClassName() == typeName )
216  {
217  return writer.release();
218  }
219  else
220  {
221  // See if the type name is supported by the writer.
222  if ( writer->hasImageType(typeName) )
223  {
224  writer->setOutputImageType(typeName);
225  return writer.release();
226  }
227  }
228 
229  // Check for pdf writer.
230  writer = new ossimPdfWriter;
231  if ( writer->getClassName() == typeName )
232  {
233  return writer.release();
234  }
235  else
236  {
237  // See if the type name is supported by the writer.
238  if ( writer->hasImageType(typeName) )
239  {
240  writer->setOutputImageType(typeName);
241  return writer.release();
242  }
243  }
244 
245  writer = 0; // Not a nitf writer.
246 
247  return writer.release(); // Return a null writer.
248 }
ossimWriter - Generic image writer.
Definition: ossimWriter.h:28
virtual void setOutputImageType(ossim_int32 type)
bool valid() const
Definition: ossimRefPtr.h:75
virtual ossimString getClassName() const
Definition: ossimObject.cpp:64
References:
#define STATIC_TYPE_NAME(T)
Definition: ossimRtti.h:325
T * release()
Definition: ossimRefPtr.h:93
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
virtual bool hasImageType(const ossimString &imageType) const
bool hasImageType(const ossimString& imageType) const
ossimImageFileWriter * createFromMimeType(const ossimString &mimeType) const

◆ createWriterFromExtension()

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

Definition at line 44 of file ossimImageWriterFactory.cpp.

References ossimString::downcase(), OSSIM_GENERAL_RASTER_BIL, OSSIM_GENERAL_RASTER_BIP, and ossimImageFileWriter::setOutputImageType().

46 {
47  ossimImageFileWriter* result = 0;
48 
49  ossimString ext = fileExtension;
50  ext.downcase();
51 
52  if( (ext == "tif")|| (ext == "tiff") )
53  {
54  result = new ossimTiffWriter;
55  }
56  else if( (ext == "jpg")|| (ext == "jpeg") )
57  {
58  result = new ossimJpegWriter;
59  }
60  else if( (ext == "ras") || (ext == "bsq") )
61  {
62  // Default is OSSIM_GENERAL_RASTER_BSQ
63  result = new ossimGeneralRasterWriter;
64  }
65  else if(ext == "bil")
66  {
67  result = new ossimGeneralRasterWriter;
69  }
70  else if(ext == "bip")
71  {
72  result = new ossimGeneralRasterWriter;
74  }
75  else if((ext == "ntf")||
76  (ext == "nitf"))
77  {
78  result = new ossimNitfWriter;
79  }
80  else if( ext == "pdf" )
81  {
82  result = new ossimPdfWriter;
83  }
84 
85  return result;
86 }
virtual void setOutputImageType(ossim_int32 type)
Pure virtual base class for image file writers.
References:
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48

◆ getExtensions()

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

Implements ossimImageWriterFactoryBase.

Definition at line 303 of file ossimImageWriterFactory.cpp.

304 {
305  result.push_back("ras");
306  result.push_back("bsq");
307  result.push_back("bil");
308  result.push_back("bip");
309  result.push_back("tif");
310  result.push_back("jpg");
311  result.push_back("ntf");
312  result.push_back("pdf");
313 }

◆ getImageFileWritersByMimeType()

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

Reimplemented from ossimImageWriterFactoryBase.

Definition at line 352 of file ossimImageWriterFactory.cpp.

References ossimString::begin(), ossimString::downcase(), ossimString::end(), and getImageFileWritersBySuffix().

354 {
355  ossimString testExt = mimeType.downcase();
356  testExt = ossimString(testExt.begin()+6, testExt.end());
357 
358  getImageFileWritersBySuffix(result, testExt);
359 }
std::string::iterator end()
Definition: ossimString.h:423
virtual void getImageFileWritersBySuffix(ossimImageWriterFactoryBase::ImageFileWriterList &result, const ossimString &ext) const
std::string::iterator begin()
Definition: ossimString.h:420
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48

◆ getImageFileWritersBySuffix()

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

Reimplemented from ossimImageWriterFactoryBase.

Definition at line 326 of file ossimImageWriterFactory.cpp.

References ossimString::downcase(), and ossimString::push_back().

Referenced by getImageFileWritersByMimeType().

328 {
329  ossimString testExt = ext.downcase();
330  if(testExt == "tiff" || testExt == "tif")
331  {
332  result.push_back(new ossimTiffWriter);
333  }
334  else if(testExt == "ntf" || testExt == "nitf")
335  {
336  result.push_back(new ossimNitfWriter);
337  }
338  else if(testExt == "jpg" || testExt == "jpeg")
339  {
340  result.push_back(new ossimJpegWriter);
341  }
342  else if(testExt == "ras" || testExt == "bsq" || testExt == "bil" || testExt == "bip")
343  {
344  result.push_back(new ossimGeneralRasterWriter);
345  }
346  else if( testExt == "pdf" )
347  {
348  result.push_back( new ossimPdfWriter );
349  }
350 }
References:
void push_back(char c)
Equivalent to insert(end(), c).
Definition: ossimString.h:905
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48

◆ getImageTypeList()

void ossimImageWriterFactory::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

Implements ossimImageWriterFactoryBase.

Definition at line 361 of file ossimImageWriterFactory.cpp.

References ossimImageFileWriter::getImageTypeList().

362 {
363  // Add the tiff writer types.
365  writer->getImageTypeList(imageTypeList);
366 
367  // Add the jpeg writer types.
368  writer = new ossimJpegWriter;
369  writer->getImageTypeList(imageTypeList);
370 
371  // Add the general raster writer types.
372  writer = new ossimGeneralRasterWriter;
373  writer->getImageTypeList(imageTypeList);
374 
375  // Add the nitf writer types.
376  writer = new ossimNitfWriter;
377  writer->getImageTypeList(imageTypeList);
378 
379  // Add the nitf writer types.
380  writer = new ossimNitf20Writer;
381  writer->getImageTypeList(imageTypeList);
382 
383  // Add the pdf writer types.
384  writer = new ossimPdfWriter;
385  writer->getImageTypeList(imageTypeList);
386 
387  // Add the generic ossim writer types.
388  writer = new ossimWriter;
389  writer->getImageTypeList(imageTypeList);
390 
391  writer = 0;
392 }
ossimWriter - Generic image writer.
Definition: ossimWriter.h:28
References:
virtual void getImageTypeList(std::vector< ossimString > &imageTypeList) const =0
void getImageTypeList(std::vector<ossimString>& imageTypeList)const

◆ getTypeNameList()

void ossimImageWriterFactory::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 315 of file ossimImageWriterFactory.cpp.

References STATIC_TYPE_NAME.

316 {
317  typeList.push_back(STATIC_TYPE_NAME(ossimTiffWriter));
318  typeList.push_back(STATIC_TYPE_NAME(ossimJpegWriter));
319  typeList.push_back(STATIC_TYPE_NAME(ossimGeneralRasterWriter));
320  typeList.push_back(STATIC_TYPE_NAME(ossimNitfWriter));
321  typeList.push_back(STATIC_TYPE_NAME(ossimNitf20Writer));
322  typeList.push_back(STATIC_TYPE_NAME(ossimPdfWriter));
323  typeList.push_back(ossimString("ossimWriter"));
324 }
References:
#define STATIC_TYPE_NAME(T)
Definition: ossimRtti.h:325

◆ instance()

ossimImageWriterFactory * ossimImageWriterFactory::instance ( )
static

Definition at line 28 of file ossimImageWriterFactory.cpp.

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

Referenced by ossimImageWriterFactoryRegistry::instance().

29 {
30  if(!theInstance)
31  {
34  }
35 
36  return theInstance;
37 }
static ossimImageWriterFactoryRegistry * instance()
void registerFactory(T *factory, bool pushToFrontFlag=false)
Will register a factory to the factory list.
static ossimImageWriterFactory * theInstance

◆ isImageTypeName()

bool ossimImageWriterFactory::isImageTypeName ( const ossimString name) const
protected

Member Data Documentation

◆ theInstance

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

Definition at line 57 of file ossimImageWriterFactory.h.

Referenced by instance(), and ~ossimImageWriterFactory().


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