summaryrefslogtreecommitdiff
path: root/tiff/contrib/stream/tiffstream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tiff/contrib/stream/tiffstream.cpp')
-rw-r--r--tiff/contrib/stream/tiffstream.cpp238
1 files changed, 0 insertions, 238 deletions
diff --git a/tiff/contrib/stream/tiffstream.cpp b/tiff/contrib/stream/tiffstream.cpp
deleted file mode 100644
index ffff687..0000000
--- a/tiff/contrib/stream/tiffstream.cpp
+++ /dev/null
@@ -1,238 +0,0 @@
-// tiff stream interface class implementation
-
-#include "tiffstream.h"
-
-const char* TiffStream::m_name = "TiffStream";
-
-TiffStream::TiffStream()
-{
- m_tif = NULL;
-
-
- m_inStream = NULL;
- m_outStream = NULL;
- m_ioStream = NULL;
-
- m_streamLength = 0;
-
- m_this = reinterpret_cast<thandle_t>(this);
-};
-
-TiffStream::~TiffStream()
-{
- if(m_tif != NULL) TIFFClose(m_tif);
-}
-
-TIFF*
-TiffStream::makeFileStream(istream* str)
-{
- m_inStream = str;
- m_outStream = NULL;
- m_ioStream = NULL;
- m_streamLength = getSize(m_this);
-
- m_tif = TIFFClientOpen(m_name,
- "r",
- m_this,
- read,
- write,
- seek,
- close,
- size,
- map,
- unmap);
- return m_tif;
-}
-
-TIFF*
-TiffStream::makeFileStream(ostream* str)
-{
- m_inStream = NULL;
- m_outStream = str;
- m_ioStream = NULL;
- m_streamLength = getSize(m_this);
-
- m_tif = TIFFClientOpen(m_name,
- "w",
- m_this,
- read,
- write,
- seek,
- close,
- size,
- map,
- unmap);
- return m_tif;
-}
-
-TIFF*
-TiffStream::makeFileStream(iostream* str)
-{
- m_inStream = NULL;
- m_outStream = NULL;
- m_ioStream = str;
- m_streamLength = getSize(m_this);
-
- m_tif = TIFFClientOpen(m_name,
- "r+w",
- m_this,
- read,
- write,
- seek,
- close,
- size,
- map,
- unmap);
- return m_tif;
-}
-
-tsize_t
-TiffStream::read(thandle_t fd, tdata_t buf, tsize_t size)
-{
- istream* istr;
- TiffStream* ts = reinterpret_cast<TiffStream*>(fd);
- if(ts->m_inStream != NULL) {
- istr = ts->m_inStream;
- } else if(ts->m_ioStream != NULL) {
- istr = ts->m_ioStream;
- }
-
- int remain = ts->m_streamLength - ts->tell(fd);
- int actual = remain < size ? remain : size;
- istr->read(reinterpret_cast<char*>(buf), actual);
- return istr->gcount();
-}
-
-tsize_t
-TiffStream::write(thandle_t fd, tdata_t buf, tsize_t size)
-{
- TiffStream* ts = reinterpret_cast<TiffStream*>(fd);
- ostream* ostr;
- if(ts->m_outStream != NULL) {
- ostr = ts->m_outStream;
- } else if(ts->m_ioStream != NULL) {
- ostr = ts->m_ioStream;
- }
-
- streampos start = ostr->tellp();
- ostr->write(reinterpret_cast<const char*>(buf), size);
- return ostr->tellp() - start;
-}
-
-toff_t
-TiffStream::seek(thandle_t fd, toff_t offset, int origin)
-{
- TiffStream* ts = reinterpret_cast<TiffStream*>(fd);
- if(ts->seekInt(fd, offset, origin) == true) return offset;
- else return -1;
-}
-
-int
-TiffStream::close(thandle_t fd)
-{
- TiffStream* ts = reinterpret_cast<TiffStream*>(fd);
- if(ts->m_inStream != NULL) {
- ts->m_inStream = NULL;
- return 0;
- } else if(ts->m_outStream != NULL) {
- ts->m_outStream = NULL;
- return 0;
- } else if(ts->m_ioStream != NULL) {
- ts->m_ioStream = NULL;
- return 0;
- }
- return -1;
-}
-
-toff_t
-TiffStream::size(thandle_t fd)
-{
- TiffStream* ts = reinterpret_cast<TiffStream*>(fd);
- return ts->getSize(fd);
-}
-
-int
-TiffStream::map(thandle_t fd, tdata_t* phase, toff_t* psize)
-{
- return 0;
-}
-
-void
-TiffStream::unmap(thandle_t fd, tdata_t base, tsize_t size)
-{
-}
-
-unsigned int
-TiffStream::getSize(thandle_t fd)
-{
- if(!isOpen(fd)) return 0;
-
- unsigned int pos = tell(fd);
- seekInt(fd, 0, end);
- unsigned int size = tell(fd);
- seekInt(fd, pos, beg);
-
- return size;
-}
-
-unsigned int
-TiffStream::tell(thandle_t fd)
-{
- TiffStream* ts = reinterpret_cast<TiffStream*>(fd);
- if(ts->m_inStream != NULL) {
- return ts->m_inStream->tellg();
- } else if(ts->m_outStream != NULL) {
- return ts->m_outStream->tellp();
- } else if(ts->m_ioStream != NULL) {
- return ts->m_ioStream->tellg();
- }
- return 0;
-}
-
-bool
-TiffStream::seekInt(thandle_t fd, unsigned int offset, int origin)
-{
- if(!isOpen(fd)) return false;
-
- ios::seek_dir org;
- switch(origin) {
- case beg:
- org = ios::beg;
- break;
- case cur:
- org = ios::cur;
- break;
- case end:
- org = ios::end;
- break;
- }
-
- TiffStream* ts = reinterpret_cast<TiffStream*>(fd);
- if(ts->m_inStream != NULL) {
- ts->m_inStream->seekg(offset, org);
- return true;
- } else if(ts->m_outStream != NULL) {
- ts->m_outStream->seekp(offset, org);
- return true;
- } else if(ts->m_ioStream != NULL) {
- ts->m_ioStream->seekg(offset, org);
- ts->m_ioStream->seekp(offset, org);
- return true;
- }
- return false;
-}
-
-bool
-TiffStream::isOpen(thandle_t fd)
-{
- TiffStream* ts = reinterpret_cast<TiffStream*>(fd);
- return (ts->m_inStream != NULL ||
- ts->m_outStream != NULL ||
- ts->m_ioStream != NULL);
-}/*
- * Local Variables:
- * mode: c++
- * c-basic-offset: 8
- * fill-column: 78
- * End:
- */