Blame contrib/stream/tiffstream.h

Packit 7838c8
// tiff stream interface class definition
Packit 7838c8
Packit 7838c8
#ifndef _TIFF_STREAM_H_
Packit 7838c8
#define _TIFF_STREAM_H_
Packit 7838c8
Packit 7838c8
#include <iostream.h>
Packit 7838c8
Packit 7838c8
#include "tiffio.h"
Packit 7838c8
Packit 7838c8
class TiffStream {
Packit 7838c8
Packit 7838c8
public:
Packit 7838c8
    // ctor/dtor
Packit 7838c8
    TiffStream();
Packit 7838c8
	~TiffStream();
Packit 7838c8
Packit 7838c8
public:
Packit 7838c8
    enum SeekDir {
Packit 7838c8
	    beg,
Packit 7838c8
		cur,
Packit 7838c8
		end,
Packit 7838c8
    };
Packit 7838c8
Packit 7838c8
public:
Packit 7838c8
    // factory methods
Packit 7838c8
    TIFF* makeFileStream(iostream* str);
Packit 7838c8
	TIFF* makeFileStream(istream* str);
Packit 7838c8
	TIFF* makeFileStream(ostream* str);
Packit 7838c8
Packit 7838c8
public:
Packit 7838c8
    // tiff client methods
Packit 7838c8
	static tsize_t read(thandle_t fd, tdata_t buf, tsize_t size);
Packit 7838c8
	static tsize_t write(thandle_t fd, tdata_t buf, tsize_t size);
Packit 7838c8
	static toff_t seek(thandle_t fd, toff_t offset, int origin);
Packit 7838c8
	static toff_t size(thandle_t fd);
Packit 7838c8
	static int close(thandle_t fd);
Packit 7838c8
	static int map(thandle_t fd, tdata_t* phase, toff_t* psize);
Packit 7838c8
	static void unmap(thandle_t fd, tdata_t base, tsize_t size);
Packit 7838c8
Packit 7838c8
public:
Packit 7838c8
    // query method
Packit 7838c8
	TIFF* getTiffHandle() const { return m_tif; }
Packit 7838c8
	unsigned int getStreamLength() { return m_streamLength; }
Packit 7838c8
Packit 7838c8
private:
Packit 7838c8
	// internal methods
Packit 7838c8
    unsigned int getSize(thandle_t fd);
Packit 7838c8
	unsigned int tell(thandle_t fd);
Packit 7838c8
	bool seekInt(thandle_t fd, unsigned int offset, int origin);
Packit 7838c8
	bool isOpen(thandle_t fd);
Packit 7838c8
Packit 7838c8
private:
Packit 7838c8
	thandle_t m_this;
Packit 7838c8
	TIFF* m_tif;
Packit 7838c8
	static const char* m_name;
Packit 7838c8
	istream* m_inStream;
Packit 7838c8
	ostream* m_outStream;
Packit 7838c8
	iostream* m_ioStream;
Packit 7838c8
	int m_streamLength;
Packit 7838c8
	
Packit 7838c8
};
Packit 7838c8
Packit 7838c8
#endif // _TIFF_STREAM_H_
Packit 7838c8
/*
Packit 7838c8
 * Local Variables:
Packit 7838c8
 * mode: c++
Packit 7838c8
 * c-basic-offset: 8
Packit 7838c8
 * fill-column: 78
Packit 7838c8
 * End:
Packit 7838c8
 */