OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimKakaduWriterFactory.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: David Burken
8 //
9 // Description: Factory for OSSIM Kakadu writers.
10 //----------------------------------------------------------------------------
11 // $Id: ossimKakaduWriterFactory.cpp 23089 2015-01-21 21:01:22Z dburken $
12 
14 #include "ossimKakaduJp2Writer.h"
15 #include "ossimKakaduNitfWriter.h"
17 #include <ossim/base/ossimRefPtr.h>
19 
21  "ossimKakaduWriterFactory",
23 
25 {
26 }
27 
29 {
30  static ossimKakaduWriterFactory inst;
31  return &inst;
32 }
33 
35  const ossimString& fileExtension)const
36 {
37  ossimImageFileWriter* writer = 0;
38 
39 #if 0 /* Can't use as we don't know if the user wants a compressed nitf. */
40  if( (fileExtension == "ntf") || (fileExtension == "nitf") )
41  {
42  writer = new ossimKakaduNitfWriter;
43  }
44 #endif
45 
46  if(fileExtension == "jp2")
47  {
48  writer = new ossimKakaduJp2Writer;
49  }
50 
51  return writer;
52 }
53 
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 
75  const ossimString& typeName)const
76 {
78  if ( (typeName == "ossim_kakadu_nitf_j2k") ||
79  ( typeName == "ossimKakaduNitfWriter") )
80  {
81  writer = new ossimKakaduNitfWriter;
82  }
83  else if ( (typeName == "ossim_kakadu_jp2") ||
84  (typeName == "ossimKakaduJp2Writer") )
85  {
86  writer = new ossimKakaduJp2Writer;
87  }
88  else
89  {
90  // See if the type name is supported by the writer.
91 
92  //---
93  // Note: Will not do ossimKakaduNitfWriter here as user may want a
94  // non-licensed solution.
95  //---
96 
97  writer = new ossimKakaduJp2Writer;
98  if ( writer->hasImageType(typeName) == false )
99  {
100  writer = 0;
101  }
102  }
103  return writer.release();
104 }
105 
107  const ossimKeywordlist& kwl, const char *prefix)const
108 {
109  return createWriter(kwl, prefix);
110 }
111 
113  const ossimString& typeName) const
114 {
115  return createWriter(typeName);
116 }
117 
119  std::vector<ossimString>& result)const
120 {
121  result.push_back("jp2");
122  result.push_back("ntf");
123 }
124 
125 void ossimKakaduWriterFactory::getTypeNameList(std::vector<ossimString>& typeList)const
126 {
127  typeList.push_back(ossimString("ossimKakaduNitfWriter"));
128  typeList.push_back(ossimString("ossimKakaduJp2Writer"));
129 }
130 
131 //---
132 // Adds our writers to the list of writers...
133 //---
134 void ossimKakaduWriterFactory::getImageTypeList(std::vector<ossimString>& imageTypeList)const
135 {
136  imageTypeList.push_back( ossimString("ossim_kakadu_nitf_j2k") );
137  imageTypeList.push_back( ossimString("ossim_kakadu_jp2") );
138 }
139 
142  const ossimString& ext) const
143 {
144  ossimString testExt = ext.downcase();
145  if(testExt == "jp2")
146  {
147  result.push_back(new ossimKakaduJp2Writer);
148  }
149  else if(testExt == "ntf")
150  {
151  result.push_back(new ossimKakaduNitfWriter);
152  }
153 }
154 
156  const ossimString& mimeType)const
157 {
158  if(mimeType == "image/jp2")
159  {
160  result.push_back(new ossimKakaduJp2Writer);
161  }
162 }
163 
165 
167 
169 
170 
171 
172 
static ossimKakaduWriterFactory * instance()
static method to return instance (the only one) of this class.
virtual ossimObject * createObject(const ossimKeywordlist &kwl, const char *prefix=0) const
Creates and object given a keyword list.
virtual ~ossimKakaduWriterFactory()
virtual destructor
Represents serializable keyword/value map.
void operator=(const ossimKakaduWriterFactory &)
hidden from use copy constructor
bool valid() const
Definition: ossimRefPtr.h:75
const char * find(const char *key) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
virtual void getTypeNameList(std::vector< ossimString > &typeList) const
Adds "ossimKakaduWriter" to list.
virtual void getImageTypeList(std::vector< ossimString > &imageTypeList) const
Adds "ossim_kakada_nitf_j2k" to writer list.
Pure virtual base class for image file writers.
static const char * TYPE_KW
virtual void getExtensions(std::vector< ossimString > &extList) const
Adds "ntf" to list.
void push_back(char c)
Equivalent to insert(end(), c).
Definition: ossimString.h:905
virtual void getImageFileWritersByMimeType(ossimImageWriterFactoryBase::ImageFileWriterList &result, const ossimString &mimeType) const
virtual ossimImageFileWriter * createWriter(const ossimKeywordlist &kwl, const char *prefix=0) const
Create that takes a keyword list and prefix.
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
virtual ossimImageFileWriter * createWriterFromExtension(const ossimString &fileExtension) const
Creates a writer from extension like "ntf".
std::vector< ossimRefPtr< ossimImageFileWriter > > ImageFileWriterList
Factory for Kakadu based image writers.
ossimKakaduWriterFactory()
hidden from use default constructor
RTTI_DEF1(ossimKakaduWriterFactory, "ossimKakaduWriterFactory", ossimImageWriterFactoryBase)
virtual void getImageFileWritersBySuffix(ossimImageWriterFactoryBase::ImageFileWriterList &result, const ossimString &ext) const