00001 #ifndef DLIMAGEFACTORY_H 00002 #define DLIMAGEFACTORY_H 00003 00004 #include "DLImage.h" 00005 #include "DLBaseImage.h" 00006 #include "DLException.h" 00007 #include "DLSingletonDestroyer.h" 00008 #include <vector> 00009 #include <map> 00010 #include <string> 00011 using namespace std; 00012 00013 00016 struct dlLtstr 00017 { 00018 bool operator()(const string& s1, const string& s2) const 00019 { 00020 return s1 < s2; 00021 } 00022 }; 00023 00061 class DLImageFactory 00062 { 00066 template <class SINGLETON> friend class DLSingletonDestroyer; 00067 private: 00068 00070 static DLImageFactory *iFactory; 00073 static DLSingletonDestroyer<DLImageFactory> _destroyer; 00074 00076 vector <DLBaseImage*> imageFormats; 00077 00079 map < string, DLBaseImage*, dlLtstr > imageExtensionMap; 00080 private: 00081 00087 DLImageFactory(void){}; 00088 00092 virtual ~DLImageFactory(void); 00093 00094 public: 00095 00104 DLImage dlLoadImageAtPage(const char* filename, int pageNumber) ; 00105 00116 DLImage dlLoadImageAtPage(const void* pMemLoc, int nSize, int pageNumber) ; 00117 00135 DLImage dlLoadImage(const char* filename, DLBaseImage* imageType = NULL); 00136 00153 DLImage dlLoadImage(const void* pMemLoc,const int nSize, DLBaseImage* imageType); 00154 00166 void dlSaveImage(const DLImage& image, const char* filename, DLBaseImage* imageType = NULL); 00167 00178 void* dlSaveImageToMem(const DLImage& image, int& nSize, DLBaseImage* imageType); 00179 00184 void dlShowAllRegistered(); 00185 00191 vector <DLBaseImage*> dlGetRegisteredImageObjects() const {return this->imageFormats;}; 00192 00201 static void dlRegisterImageType(DLBaseImage* image); 00202 00209 int dlGetTotalPages(void* pMemLoc, int nSize); 00210 00216 int dlGetTotalPages(const char* filename); 00217 00226 DLBaseImage* dlIdentifyImageType(const void* pMemLoc,const int nSize) ; 00227 00235 DLBaseImage* dlIdentifyImageType(const char* filename) ; 00236 00241 static DLImageFactory* dlGetInstance(); 00242 00243 }; 00244 00245 00246 #endif // DLImageFactory_H