00001 #ifndef _DLTIFFIMAGE_H_
00002 #define _DLTIFFIMAGE_H_
00003
00004 #include "DLImage.h"
00005 #include "DLBaseImage.h"
00006 #include "DLConst.h"
00007 #include "DLIOStream.h"
00008 #include "DLLogger.h"
00009 #include "DLSingletonDestroyer.h"
00010 #include <cstdarg>
00011
00012 typedef struct tiff TIFF;
00013
00014 void dlTIFFError ( char const *module, char const *fmt, va_list ap);
00015 void dlTIFFWarning ( char const *module, char const *fmt, va_list ap);
00016
00017
00028 class DLTIFFImage : public DLBaseImage
00029 {
00033 template <class SINGLETON> friend class DLSingletonDestroyer;
00034 private:
00038 DLTIFFImage();
00039
00045 DLImage dlLoadImage(TIFF* image, int pageNumber = 1);
00046
00048 static DLTIFFImage* tiffImageReader;
00051 static DLSingletonDestroyer<DLTIFFImage> _destroyer;
00052
00053 bool dlWangTIFFCheck(const void* pMemLoc, int nSize);
00054 bool dlWangTIFFCheck(const char* filename);
00055
00056 static DL_BYTE * dlFlipDataForMinIsWhite( const DLImage &dlimage );
00057
00058 protected:
00059
00060 public:
00064 virtual ~DLTIFFImage();
00065
00069 static DLTIFFImage * createImageReader();
00070
00077 void dlLoadImage(const char* filename, DLImage &dlimage);
00078
00084 DLImage dlLoadImage(const char* filename);
00085
00093 void dlLoadImage(const void* pMemLoc, int nSize, DLImage &dlimage);
00094
00101 DLImage dlLoadImage(const void* pMemLoc, int nSize);
00102
00113 static void dlSaveImage(TIFF* image, const DLImage& dlimage, int TIFF_COMPRESSION_TYPE,
00114 bool MIN_IS_WHITE = true);
00115
00121 void dlSaveImage(const char* filename, const DLImage& dlimage);
00122
00147 static void dlSaveImage(const char* filename, const DLImage& dlimage, int TIFF_COMPRESSION_TYPE,
00148 bool MIN_IS_WHITE = true);
00149
00170 static void* dlSaveImageToMem(int& nSize, const DLImage &dlimage, int TIFF_COMPRESSION_TYPE,
00171 bool MIN_IS_WHITE = true);
00172
00179 void* dlSaveImageToMem( int& nSize, const DLImage& dlimage);
00180
00188 DLImage dlLoadImageAtPage(const char* filename, int pageNumber);
00189
00198 DLImage dlLoadImageAtPage(const void* pMemLoc, int nSize, int pageNumber);
00199
00206 int dlGetTotalPages(void* pMemLoc, int nSize);
00207
00215 int dlGetTotalPages(const char* filename);
00216
00223 bool dlSupportImageFile(const char* filename);
00224
00232 bool dlSupportImageBuffer(const void* pMemLoc, int size);
00233
00234 };
00235
00236 static DLTIFFImage * dlTiffProcessor = DLTIFFImage::createImageReader();
00237
00238 #endif //_DLTIFFIMAGE_H_