DLTIFFImage.h

Go to the documentation of this file.
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 };//end class
00235 
00236 static DLTIFFImage * dlTiffProcessor = DLTIFFImage::createImageReader();
00237 
00238 #endif //_DLTIFFIMAGE_H_

DOCLIB is being developed under contract by a collaboration between:
The Laboratory for Language and Media Processing
Unviersity of Maryland, College Park
and
Booz | Allen | Hamilton

All Rights Reserved, 2003-2007