OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimMrSidWriterFactory.cpp
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: LGPL
4 //
5 // See LICENSE.txt file in the top level directory for more details.
6 //
7 // Author: Mingjie Su
8 //
9 // Description: Factory for OSSIM MrSID writers.
10 //----------------------------------------------------------------------------
11 // $Id: ossimMrSidWriterFactory.cpp 899 2010-05-17 21:00:26Z david.burken $
12 
13 #ifdef OSSIM_ENABLE_MRSID_WRITE
14 
16 #include <ossim/base/ossimRefPtr.h>
18 
20 #include "ossimMrSidWriter.h"
21 
22 ossimMrSidWriterFactory* ossimMrSidWriterFactory::theInstance = 0;
23 
24 RTTI_DEF1(ossimMrSidWriterFactory,
25  "ossimMrSidWriterFactory",
27 
28 ossimMrSidWriterFactory::~ossimMrSidWriterFactory()
29 {
30  theInstance = 0;
31 }
32 
33 ossimMrSidWriterFactory* ossimMrSidWriterFactory::instance()
34 {
35  if(!theInstance)
36  {
37  theInstance = new ossimMrSidWriterFactory;
38  }
39  return theInstance;
40 }
41 
42 ossimImageFileWriter* ossimMrSidWriterFactory::createWriterFromExtension(
43  const ossimString& fileExtension)const
44 {
45  ossimImageFileWriter* writer = 0;
46 
47  if(fileExtension == "sid")
48  {
49  writer = new ossimMrSidWriter;
50  }
51  return writer;
52 }
53 
55 ossimMrSidWriterFactory::createWriter(const ossimKeywordlist& kwl,
56  const char *prefix)const
57 {
59  const char* type = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
60  if (type)
61  {
62  writer = createWriter(ossimString(type));
63  if (writer.valid())
64  {
65  if (writer->loadState(kwl, prefix) == false)
66  {
67  writer = 0;
68  }
69  }
70  }
71  return writer.release();
72 }
73 
74 ossimImageFileWriter* ossimMrSidWriterFactory::createWriter(
75  const ossimString& typeName)const
76 {
78  if (typeName == "ossimMrSidWriter" || typeName == "ossim_mrsid")
79  {
80  writer = new ossimMrSidWriter;
81  }
82  return writer.release();
83 }
84 
86  const ossimKeywordlist& kwl, const char *prefix)const
87 {
88  return createWriter(kwl, prefix);
89 }
90 
92  const ossimString& typeName) const
93 {
94  return createWriter(typeName);
95 }
96 
97 void ossimMrSidWriterFactory::getExtensions(
98  std::vector<ossimString>& result)const
99 {
100  result.push_back("sid");
101 }
102 
103 void ossimMrSidWriterFactory::getTypeNameList(std::vector<ossimString>& typeList)const
104 {
105  getImageTypeList(typeList);
106 }
107 
108 //---
109 // Adds our writers to the list of writers...
110 //---
111 void ossimMrSidWriterFactory::getImageTypeList(std::vector<ossimString>& imageTypeList)const
112 {
113  ossimRefPtr<ossimImageFileWriter> writer = new ossimMrSidWriter;
114  writer->getImageTypeList(imageTypeList);
115 }
116 
117 void ossimMrSidWriterFactory::getImageFileWritersBySuffix(
119 {
120  ossimString testExt = ext.downcase();
121  if(testExt == "sid")
122  {
123  result.push_back(new ossimMrSidWriter);
124  }
125 }
126 
127 void ossimMrSidWriterFactory::getImageFileWritersByMimeType(
129 {
130  ossimString testMime = mimeType.downcase();
131  if(testMime == "image/sid")
132  {
133  result.push_back(new ossimMrSidWriter);
134  }
135 }
136 
137 ossimMrSidWriterFactory::ossimMrSidWriterFactory(){}
138 
139 ossimMrSidWriterFactory::ossimMrSidWriterFactory(const ossimMrSidWriterFactory&){}
140 
141 void ossimMrSidWriterFactory::operator=(const ossimMrSidWriterFactory&){}
142 
143 #endif /* #if OSSIM_ENABLE_MRSID_WRITE */
Represents serializable keyword/value map.
bool valid() const
Definition: ossimRefPtr.h:75
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 void getImageTypeList(std::vector< ossimString > &imageTypeList) const =0
void getImageTypeList(std::vector<ossimString>& imageTypeList)const
void push_back(char c)
Equivalent to insert(end(), c).
Definition: ossimString.h:905
ossimObject * createObject(const ossimString &objectType)
Definition: kwl.cpp:64
T * release()
Definition: ossimRefPtr.h:93
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
std::vector< ossimRefPtr< ossimImageFileWriter > > ImageFileWriterList
#define RTTI_DEF1(cls, name, b1)
Definition: ossimRtti.h:485