1 //******************************************************************* 2 // Copyright (C) 2000 ImageLinks Inc. 3 // 4 // License: MIT 5 // 6 // See LICENSE.txt file in the top level directory for more details. 7 // 8 // Author: Frank Warmerdam (warmerda@home.com) 9 // 10 //******************************************************************* 11 // $Id: ossimImageWriterFactoryRegistry.h 22865 2014-08-06 11:17:03Z gpotts $ 12 13 #ifndef ossimImageWriterFactoryRegistry_HEADER 14 #define ossimImageWriterFactoryRegistry_HEADER 15 #include <ossim/base/ossimObjectFactory.h> 16 #include <ossim/imaging/ossimImageWriterFactoryBase.h> 17 #include <ossim/base/ossimFactoryListInterface.h> 18 #include <vector> 19 #include <iosfwd> 20 21 class ossimImageFileWriter; 22 class ossimKeywordlist; 23 24 class OSSIMDLLEXPORT ossimImageWriterFactoryRegistry : 25 public ossimObjectFactory, 26 public ossimFactoryListInterface<ossimImageWriterFactoryBase, ossimImageFileWriter> 27 { 28 public: 29 static ossimImageWriterFactoryRegistry* instance(); 30 31 ossimImageFileWriter *createWriter(const ossimFilename& filename)const; 32 ossimImageFileWriter *createWriterFromExtension(const ossimString& fileExtension)const; 33 ossimImageFileWriter *createWriter(const ossimKeywordlist &kwl, 34 const char *prefix=0)const; 35 ossimImageFileWriter* createWriter(const ossimString& typeName)const; 36 37 ossimObject* createObject(const ossimKeywordlist &kwl, 38 const char *prefix=0)const; 39 40 ossimObject* createObject(const ossimString& typeName)const; 41 42 /** 43 * getTypeNameList. This should return the class type of the object being 44 * used to perform the writting. 45 */ 46 virtual void getTypeNameList(std::vector<ossimString>& typeList)const; 47 48 /** 49 * getImageTypeList. This is the actual image type name. So for 50 * example, ossimTiffWriter has several image types. Some of these 51 * include TIFF_TILED, TIFF_TILED_BAND_SEPARATE ... etc. 52 * The ossimGdalWriter 53 * may include GDAL_IMAGINE_HFA, GDAL_RGB_NITF, GDAL_JPEG20000, ... etc 54 * A writer should be able to be instantiated by this name as well as a 55 * class name 56 */ 57 virtual void getImageTypeList(std::vector<ossimString>& imageTypeList)const; 58 59 virtual void getImageFileWritersBySuffix(ossimImageWriterFactoryBase::ImageFileWriterList& result, 60 const ossimString& ext)const; 61 virtual void getImageFileWritersByMimeType(ossimImageWriterFactoryBase::ImageFileWriterList& result, 62 const ossimString& mimeType)const; 63 /** 64 * @brief Prints list of writers from getImageTypeList. 65 * @param out Stream to print to. 66 * @return std::ostream& 67 */ 68 std::ostream& printImageTypeList(std::ostream& out)const; 69 70 /** 71 * @brief Prints list of writers from getImageTypeList. 72 * @param out Stream to print to. 73 * @return std::ostream& 74 */ 75 std::ostream& printWriterProps(std::ostream& out)const; 76 77 protected: 78 ossimImageWriterFactoryRegistry(); 79 ossimImageWriterFactoryRegistry(const ossimImageWriterFactoryRegistry&); 80 void operator=(const ossimImageWriterFactoryRegistry&); 81 82 //static ossimImageWriterFactoryRegistry* theInstance; 83 }; 84 85 extern "C" 86 { 87 OSSIMDLLEXPORT void* ossimImageWriterFactoryRegistryGetInstance(); 88 } 89 #endif 90