Index: xfa/fxfa/app/xfa_ffapp.cpp |
diff --git a/xfa/fxfa/app/xfa_ffapp.cpp b/xfa/fxfa/app/xfa_ffapp.cpp |
index 797c3e72f0fbf2810bb4d53a663e8fa860700661..9c0411b731e1b7f3c941db991126f0cebdc58c2b 100644 |
--- a/xfa/fxfa/app/xfa_ffapp.cpp |
+++ b/xfa/fxfa/app/xfa_ffapp.cpp |
@@ -21,6 +21,22 @@ |
#include "xfa/fxfa/xfa_ffwidgethandler.h" |
#include "xfa/fxfa/xfa_fontmgr.h" |
+namespace { |
+ |
+class CXFA_FileRead : public IFX_SeekableReadStream { |
+ public: |
+ explicit CXFA_FileRead(const std::vector<CPDF_Stream*>& streams); |
+ ~CXFA_FileRead() override; |
+ |
+ // IFX_SeekableReadStream |
+ FX_FILESIZE GetSize() override; |
+ bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; |
+ void Release() override; |
+ |
+ private: |
+ CFX_ObjectArray<CPDF_StreamAcc> m_Data; |
+}; |
+ |
CXFA_FileRead::CXFA_FileRead(const std::vector<CPDF_Stream*>& streams) { |
for (CPDF_Stream* pStream : streams) { |
CPDF_StreamAcc& acc = m_Data.Add(); |
@@ -72,6 +88,13 @@ void CXFA_FileRead::Release() { |
delete this; |
} |
+} // namespace |
+ |
+IFX_SeekableReadStream* MakeSeekableReadStream( |
+ const std::vector<CPDF_Stream*>& streams) { |
+ return new CXFA_FileRead(streams); |
+} |
+ |
CXFA_FFApp::CXFA_FFApp(IXFA_AppProvider* pProvider) |
: m_pProvider(pProvider), |
m_pWidgetMgrDelegate(nullptr), |