001 #ifndef WPXSVSTREAM_H
002 #define WPXSVSTREAM_H
003
004 #include <sot/storage.hxx>
005 #include <com/sun/star/io/XInputStream.hpp>
006
007 #ifndef _COM_SUN_STAR_IO_XINPUTSTREAM_H_
008 #include <com/sun/star/io/XSeekable.hpp>
009 #endif
010
011
012 #if defined _MSC_VER
013 #pragma warning( push, 1 )
014 #endif
015 #include <libwpd/WPXStream.h>
016 #if defined _MSC_VER
017 #pragma warning( pop )
018 #endif
019
020 class WPXSvInputStream : public WPXInputStream
021 {
022 public:
023 WPXSvInputStream( ::com::sun::star::uno::Reference<
024 ::com::sun::star::io::XInputStream > xStream );
025 virtual ~WPXSvInputStream();
026
027 virtual bool isOLEStream();
028 virtual WPXInputStream * getDocumentOLEStream();
029 virtual WPXInputStream * getDocumentOLEStream(const char *name);
030
031 virtual const uint8_t *read(size_t numBytes, size_t &numBytesRead);
032 virtual int seek(long offset, WPX_SEEK_TYPE seekType);
033 virtual long tell();
034 virtual bool atEOS();
035
036 private:
037 SotStorageRef mxChildStorage;
038 SotStorageStreamRef mxChildStream;
039 ::com::sun::star::uno::Reference<
040 ::com::sun::star::io::XInputStream > mxStream;
041 ::com::sun::star::uno::Reference<
042 ::com::sun::star::io::XSeekable > mxSeekable;
043 ::com::sun::star::uno::Sequence< sal_Int8 > maData;
044 sal_Int64 mnLength;
045 };
046
047 #endif