OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimKakaduJpipHandlerFactory.cpp
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: See top level LICENSE.txt file
4 //
5 // Author: Garrett Potts
6 //
7 // Description: Factory for OSSIM JPIP reader using kakadu library.
8 //----------------------------------------------------------------------------
9 // $Id$
10 
12 #include "ossimKakaduJpipHandler.h"
15 #include <ossim/base/ossimUrl.h>
16 #include <ossim/base/ossimRefPtr.h>
17 #include <ossim/base/ossimString.h>
18 #include <ossim/base/ossimTrace.h>
20 
21 static const ossimTrace traceDebug( ossimString("ossimKakaduJpipHandlerFactory:debug") );
22 
23 class ossimImageHandler;
24 
26  "ossimKakaduJpipHandlerFactory",
28 
30 {
31 }
32 
34 {
36  return &inst;
37 }
38 
40  bool openOverview)const
41 {
42  static const char* M = "ossimKakaduJpipHandlerFactory::open(filename) -- ";
43  if(traceDebug())
44  {
45  ossimNotify(ossimNotifyLevel_DEBUG)<<M<<"Entered with filename <"<<fileName<<">\n" ;
46  }
47 
49 
50  if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG)<<M<< "Trying ossimKakaduJpipHandler...";
51  reader = new ossimKakaduJpipHandler();
53  if(!reader->open(fileName))
54  {
55  reader = 0;
56  }
57 
58  if (traceDebug())
59  {
60  if (reader.valid())
61  ossimNotify(ossimNotifyLevel_DEBUG)<<M<< " SUCCESS" << std::endl;
62  else
63  ossimNotify(ossimNotifyLevel_DEBUG)<<M<< " Open FAILED" << std::endl;
64  }
65 
66  return reader.release();
67 }
68 
70  const char* prefix)const
71 {
72  if(traceDebug())
73  {
75  << "ossimKakaduJpipHandlerFactory::open(kwl, prefix) DEBUG: entered..."
76  << std::endl;
77  }
79  const char* lookup = kwl.find(prefix, ossimKeywordNames::TYPE_KW);
80  const char* filenameLookup = kwl.find(prefix, ossimKeywordNames::FILENAME_KW);
81  const char* urlLookup = kwl.find(prefix, "url");
82 
84  // first check if url is present in keywordlist
85  if(urlLookup)
86  {
87  if(traceDebug())
88  {
90  << "URL lookup"
91  << std::endl;
92  }
93 
94  if(lookup)
95  {
96  obj = createObject(ossimString(lookup));
97  reader = dynamic_cast<ossimImageHandler*> (obj.get());
98  obj = 0;
99  if(reader.valid())
100  {
101  if(reader->loadState(kwl, prefix) == false)
102  {
103  reader = 0;
104  }
105  }
106  }
107  if(!reader.valid())
108  {
109  if(ossimUrl(urlLookup).getProtocol().downcase().contains("jpip"))
110  {
111  reader = new ossimKakaduJpipHandler();
112  if(reader->loadState(kwl, prefix) == false)
113  {
114  reader = 0;
115  }
116  }
117  }
118  }
119  else if(filenameLookup)
120  {
121  ossimFilename local(filenameLookup);
122 
123 
124  // check if the filename is a jpip url
125  if(!ossimFilename(filenameLookup).exists()&&
126  ossimUrl(filenameLookup).getProtocol().downcase().contains("jpip"))
127  {
128  reader = open(ossimFilename(filenameLookup));
129  }
130  else if(local.exists()&&(local.ext().downcase()=="jpip"))
131  {
132  // do local file keywordlist
133  //
134  ossimKeywordlist tempKwl;
135  tempKwl.add(kwl, prefix, true);
136  if(tempKwl.addFile(ossimFilename(filenameLookup)))
137  {
138  if(tempKwl.find("url"))
139  {
140  reader = open(tempKwl);
141  }
142  }
143  }
144  }
145  else if(lookup)
146  {
147  obj = createObject(ossimString(lookup));
148  reader = dynamic_cast<ossimImageHandler*> (obj.get());
149  obj = 0;
150  if(reader.valid())
151  {
152  if(reader->loadState(kwl, prefix) == false)
153  {
154  reader = 0;
155  }
156  }
157  }
158  if(traceDebug())
159  {
161  << "ossimKakaduJpipHandlerFactory::open(kwl, prefix) DEBUG: leaving..."
162  << std::endl;
163  }
164 
165  return reader.release();
166 }
167 
169 {
170  ossimRefPtr<ossimObject> result = 0;
171 
173  {
174  result = new ossimKakaduJpipHandler();
175  }
176 
177  return result.release();
178 }
179 
181  const ossimKeywordlist& kwl,
182  const char* prefix)const
183 {
184  return this->open(kwl, prefix);
185 }
186 
188  std::vector<ossimString>& typeList)const
189 {
190  typeList.push_back(STATIC_TYPE_NAME(ossimKakaduJpipHandler));
191 }
192 
195 {
196  extensionList.push_back("jp2");
197  extensionList.push_back("jpip");
198 }
199 
201  const ossimString& ext)const
202 {
203  ossimString testExt = ext.downcase();
204  if((testExt == "jp2")||(testExt=="jp2"))
205  {
206  result.push_back(new ossimKakaduJpipHandler());
207  }
208 }
209 
216  const ossimString& mimeType)const
217 {
218 }
219 
220 
222 
224 
virtual bool open()=0
Pure virtual open.
RTTI_DEF1(ossimKakaduJpipHandlerFactory, "ossimKakaduJpipHandlerFactory", ossimImageHandlerFactoryBase)
void setOpenOverviewFlag(bool flag)
Sets theOpenOverviewFlag.
ossimKakaduJpipHandlerFactory()
Method to weed out extensions that this plugin knows it does not support.
void operator=(const ossimKakaduJpipHandlerFactory &)
hidden from use copy constructor
Represents serializable keyword/value map.
bool addFile(const char *file)
bool valid() const
Definition: ossimRefPtr.h:75
const char * find(const char *key) const
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
Method to the load (recreate) the state of an object from a keyword list.
bool contains(char aChar) const
Definition: ossimString.h:58
virtual ossimRefPtr< ossimImageHandler > openOverview(const ossimFilename &file) const
Open overview that takes a file name.
virtual void getImageHandlersBySuffix(ossimImageHandlerFactoryBase::ImageHandlerList &result, const ossimString &ext) const
Will add to the result list any handler that supports the passed in extensions.
static const char * TYPE_KW
virtual bool openOverview()
Searches for an overview.
static ossimKakaduJpipHandlerFactory * instance()
static method to return instance (the only one) of this class.
#define STATIC_TYPE_NAME(T)
Definition: ossimRtti.h:325
void push_back(char c)
Equivalent to insert(end(), c).
Definition: ossimString.h:905
void add(const char *prefix, const ossimKeywordlist &kwl, bool overwrite=true)
bool exists() const
const ossimString & getProtocol() const
Definition: ossimUrl.h:17
virtual void getTypeNameList(std::vector< ossimString > &typeList) const
Adds ossimKakaduWriter to the typeList.
T * release()
Definition: ossimRefPtr.h:93
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
Factory for J2K image reader.
This class defines an abstract Handler which all image handlers(loaders) should derive from...
virtual ossimImageHandler * open(const ossimFilename &fileName, bool openOverview=true) const
open that takes a file name.
virtual void getSupportedExtensions(ossimImageHandlerFactoryBase::UniqueStringList &extensionList) const
Method to add supported extension to the list, like "jp2".
ossimString ext() const
std::vector< ossimRefPtr< ossimImageHandler > > ImageHandlerList
virtual ossimObject * createObject(const ossimString &typeName) const
createObject that takes a class name (ossimKakaduReader)
virtual void getImageHandlersByMimeType(ossimImageHandlerFactoryBase::ImageHandlerList &result, const ossimString &mimeType) const
Will add to the result list and handler that supports the passed in mime type.
static const char * FILENAME_KW
virtual ~ossimKakaduJpipHandlerFactory()
virtual destructor
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)