1 // tiff stream interface class definition 2 3 #ifndef _TIFF_STREAM_H_ 4 #define _TIFF_STREAM_H_ 5 6 #include <iostream.h> 7 8 #include "tiffio.h" 9 10 class TiffStream { 11 12 public: 13 // ctor/dtor 14 TiffStream(); 15 ~TiffStream(); 16 17 public: 18 enum SeekDir { 19 beg, 20 cur, 21 end, 22 }; 23 24 public: 25 // factory methods 26 TIFF* makeFileStream(iostream* str); 27 TIFF* makeFileStream(istream* str); 28 TIFF* makeFileStream(ostream* str); 29 30 public: 31 // tiff client methods 32 static tsize_t read(thandle_t fd, tdata_t buf, tsize_t size); 33 static tsize_t write(thandle_t fd, tdata_t buf, tsize_t size); 34 static toff_t seek(thandle_t fd, toff_t offset, int origin); 35 static toff_t size(thandle_t fd); 36 static int close(thandle_t fd); 37 static int map(thandle_t fd, tdata_t* phase, toff_t* psize); 38 static void unmap(thandle_t fd, tdata_t base, tsize_t size); 39 40 public: 41 // query method getTiffHandle()42 TIFF* getTiffHandle() const { return m_tif; } getStreamLength()43 unsigned int getStreamLength() { return m_streamLength; } 44 45 private: 46 // internal methods 47 unsigned int getSize(thandle_t fd); 48 unsigned int tell(thandle_t fd); 49 bool seekInt(thandle_t fd, unsigned int offset, int origin); 50 bool isOpen(thandle_t fd); 51 52 private: 53 thandle_t m_this; 54 TIFF* m_tif; 55 static const char* m_name; 56 istream* m_inStream; 57 ostream* m_outStream; 58 iostream* m_ioStream; 59 int m_streamLength; 60 61 }; 62 63 #endif // _TIFF_STREAM_H_ 64 /* 65 * Local Variables: 66 * mode: c++ 67 * c-basic-offset: 8 68 * fill-column: 78 69 * End: 70 */ 71