OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimJpeg12ReaderFactory.cpp
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: See top level LICENSE.txt file
4 //
5 // Author: David Burken
6 //
7 // Description: Factory for OSSIM NITF 12 bit jpeg reader using jpeg library.
8 //----------------------------------------------------------------------------
9 // $Id$
10 
12 #include "ossimJpeg12NitfReader.h"
15 #include <ossim/base/ossimRefPtr.h>
16 #include <ossim/base/ossimString.h>
17 #include <ossim/base/ossimTrace.h>
19 
20 static const ossimTrace traceDebug( ossimString("ossimJpeg12ReaderFactory:debug") );
21 
22 class ossimImageHandler;
23 
25  "ossimJpeg12ReaderFactory",
27 
29 {
30 }
31 
33 {
34  static ossimJpeg12ReaderFactory inst;
35  return &inst;
36 }
37 
39  bool openOverview)const
40 {
41  static const char* M = "ossimJpeg12ReaderFactory::open(filename) -- ";
42  if(traceDebug())
43  ossimNotify(ossimNotifyLevel_DEBUG)<<M<<"Entered with filename <"<<fileName<<">" ;
44 
46  while (true)
47  {
48  if (hasExcludedExtension(fileName)) break;
49 
50  if (traceDebug()) ossimNotify(ossimNotifyLevel_DEBUG)<<M<< "Trying ossimJpeg12NitfReader...";
51  reader = new ossimJpeg12NitfReader;
53  if(reader->open(fileName)) break;
54 
55  reader = 0;
56  break;
57  }
58 
59  if (traceDebug())
60  {
61  if (reader.valid())
62  ossimNotify(ossimNotifyLevel_DEBUG)<<M<< " SUCCESS" << std::endl;
63  else
64  ossimNotify(ossimNotifyLevel_DEBUG)<<M<< " Open FAILED" << std::endl;
65  }
66 
67  return reader.release();
68 }
69 
71  const char* prefix)const
72 {
73  if(traceDebug())
74  {
76  << "ossimJpeg12ReaderFactory::open(kwl, prefix) DEBUG: entered..."
77  << std::endl;
78  }
79 
81 
82  // To save time check the file name first.
83  const char* lookup = kwl.find(prefix, ossimKeywordNames::FILENAME_KW);
84  if (!lookup)
85  {
86  // Deprecated...
87  lookup = kwl.find(prefix, ossimKeywordNames::IMAGE_FILE_KW);
88  }
89 
90  if (lookup)
91  {
92  ossimFilename f = lookup;
93  if ( hasExcludedExtension(f) == false )
94  {
95  reader = new ossimJpeg12NitfReader;
96  if(reader->loadState(kwl, prefix) == false)
97  {
98  reader = 0;
99  }
100  }
101  }
102 
103  if(traceDebug())
104  {
106  << "ossimJpeg12ReaderFactory::open(kwl, prefix) DEBUG: leaving..."
107  << std::endl;
108  }
109 
110  return reader.release();
111 }
112 
114  const ossimString& typeName)const
115 {
116  ossimRefPtr<ossimObject> result = 0;
117  if(typeName == "ossimJpeg12NitfReader")
118  {
119  result = new ossimJpeg12NitfReader;
120  }
121  return result.release();
122 }
123 
125  const ossimKeywordlist& kwl,
126  const char* prefix)const
127 {
128  return this->open(kwl, prefix);
129 }
130 
132  std::vector<ossimString>& typeList)const
133 {
134  typeList.push_back(ossimString("ossimJpeg12NitfReader"));
135 }
136 
138  ossimImageHandlerFactoryBase::UniqueStringList& /* extensionList */ )const
139 {
140  /* Nothing to do here. */
141 }
142 
144  const ossimFilename& file) const
145 {
146  bool result = false;
147  ossimString ext = file.ext().downcase();
148  if ( (ext == "tif") ||
149  (ext == "tiff") ||
150  (ext == "jpg") ||
151  (ext == "jpeg") ||
152  (ext == "png") )
153  {
154  result = true;
155  }
156  return result;
157 }
158 
164  const ossimString& ext)const
165 {
166  ossimString testExt = ext.downcase();
167  if( (testExt == "ntf") || (testExt == "nitf") )
168  {
169  result.push_back(new ossimJpeg12NitfReader);
170  }
171 }
172 
178  const ossimString& mimeType)const
179 {
180  ossimString test(mimeType.begin(), mimeType.begin()+6);
181  if(test == "image/")
182  {
183  ossimString mimeTypeTest(mimeType.begin() + 6, mimeType.end());
184  if(mimeTypeTest == "nitf")
185  {
186  result.push_back(new ossimJpeg12NitfReader);
187  }
188  }
189 }
190 
191 
193 
195 
static ossimJpeg12ReaderFactory * instance()
static method to return instance (the only one) of this class.
virtual bool open()=0
Pure virtual open.
void setOpenOverviewFlag(bool flag)
Sets theOpenOverviewFlag.
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)
Method to the load (recreate) the state of an object from a keyword list.
virtual void getSupportedExtensions(ossimImageHandlerFactoryBase::UniqueStringList &extensionList) const
Method to add supported extension to the list, like "jp2".
virtual ossimRefPtr< ossimImageHandler > openOverview(const ossimFilename &file) const
Open overview that takes a file name.
RTTI_DEF1(ossimJpeg12ReaderFactory, "ossimJpeg12ReaderFactory", ossimImageHandlerFactoryBase)
ossimJpeg12NitfReader class for reading NITF images with 12 bit jpeg compressed blocks using libjpeg-...
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.
std::string::iterator end()
Definition: ossimString.h:423
virtual bool openOverview()
Searches for an overview.
bool hasExcludedExtension(const ossimFilename &file) const
Method to weed out extensions that this plugin knows it does not support.
void push_back(char c)
Equivalent to insert(end(), c).
Definition: ossimString.h:905
virtual void getTypeNameList(std::vector< ossimString > &typeList) const
Adds ossimJpeg12Writer to the typeList.
virtual ~ossimJpeg12ReaderFactory()
virtual destructor
std::string::iterator begin()
Definition: ossimString.h:420
void operator=(const ossimJpeg12ReaderFactory &)
hidden from use copy constructor
T * release()
Definition: ossimRefPtr.h:93
static ossimString downcase(const ossimString &aString)
Definition: ossimString.cpp:48
virtual ossimImageHandler * open(const ossimFilename &fileName, bool openOverview=true) const
open 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.
This class defines an abstract Handler which all image handlers(loaders) should derive from...
ossimString ext() const
std::vector< ossimRefPtr< ossimImageHandler > > ImageHandlerList
virtual ossimObject * createObject(const ossimString &typeName) const
createObject that takes a class name (ossimJpeg12Reader)
static const char * IMAGE_FILE_KW
static const char * FILENAME_KW
Factory for image reader.
ossimJpeg12ReaderFactory()
hidden from use default constructor
OSSIMDLLEXPORT std::ostream & ossimNotify(ossimNotifyLevel level=ossimNotifyLevel_WARN)