OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
TiffStreamAdaptor.h
Go to the documentation of this file.
1 #ifndef ossimTiffStreamAdaptor_HEADER
2 #define ossimTiffStreamAdaptor_HEADER
7 #include <tiffio.h>
8 
9 namespace ossim
10 {
32  class OSSIM_DLL TiffIStreamAdaptor
33  {
34  public:
35  TiffIStreamAdaptor()
36  {
37  }
38  TiffIStreamAdaptor(const ossimString& connectionString)
39  {
40  openStream(connectionString);
41  }
42  TiffIStreamAdaptor(std::shared_ptr<ossim::istream> inputStream,
43  const ossimString& connectionString="")
44  {
45  setStream(inputStream, connectionString);
46  }
47 
48  ~TiffIStreamAdaptor()
49  {
50  close();
51  }
52 
53  bool openStream(const ossimString& connectionString)
54  {
55  setStream(ossim::StreamFactoryRegistry::instance()->createIstream(connectionString));
56 
57  return (m_tiffStream != nullptr);
58  }
59 
60  void setStream(std::shared_ptr<ossim::istream> inputStream,
61  const ossimString& connectionString="")
62  {
63  m_tiffStream = inputStream;
64  m_connectionString = connectionString;
65  }
66 
67  const ossimString& getConnectionString()const{return m_connectionString;}
68 
69  std::shared_ptr<ossim::istream> getStream()
70  {
71  return m_tiffStream;
72  }
73 
74  void close()
75  {
76  m_tiffStream.reset();
77  }
78 
79  static tsize_t tiffRead(thandle_t st,tdata_t buffer,tsize_t size);
80  static tsize_t tiffWrite(thandle_t st,tdata_t buffer,tsize_t size);
81  static int tiffClose(thandle_t st);
82  static toff_t tiffSeek(thandle_t st,toff_t pos, int whence);
83  static toff_t tiffSize(thandle_t st);
84  static int tiffMap(thandle_t, tdata_t*, toff_t*);
85  static void tiffUnmap(thandle_t, tdata_t, toff_t);
86 
87  private:
88  std::shared_ptr<ossim::istream> m_tiffStream;
89  ossimString m_connectionString;
90  };
91 }
92 
93 #endif
This code was derived from https://gist.github.com/mshockwave.
Definition: Barrier.h:8
static StreamFactoryRegistry * instance()
yy_size_t size
#define OSSIM_DLL