Index: core/fxcrt/fx_extension.cpp |
diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp |
index 6bf61f1fb574a054e5136ee53ce44c9b130a380a..27f9971f6c239a132d25b4eef75306963c5d2106 100644 |
--- a/core/fxcrt/fx_extension.cpp |
+++ b/core/fxcrt/fx_extension.cpp |
@@ -21,6 +21,24 @@ |
#ifdef PDF_ENABLE_XFA |
+class CFX_CRTFileAccess : public IFX_FileAccess { |
+ public: |
+ CFX_CRTFileAccess(); |
+ ~CFX_CRTFileAccess() override; |
+ |
+ // IFX_FileAccess |
+ void Release() override; |
+ IFX_FileAccess* Retain() override; |
+ void GetPath(CFX_WideString& wsPath) override; |
+ IFX_SeekableStream* CreateFileStream(uint32_t dwModes) override; |
+ |
+ bool Init(const CFX_WideStringC& wsPath); |
+ |
+ protected: |
npm
2016/12/01 21:21:49
Can this be private?
Tom Sepez
2016/12/01 21:33:45
Done.
|
+ CFX_WideString m_path; |
+ uint32_t m_RefCount; |
+}; |
+ |
CFX_CRTFileAccess::CFX_CRTFileAccess() : m_RefCount(0) {} |
CFX_CRTFileAccess::~CFX_CRTFileAccess() {} |
@@ -51,11 +69,71 @@ bool CFX_CRTFileAccess::Init(const CFX_WideStringC& wsPath) { |
#endif // PDF_ENABLE_XFA |
+class CFX_CRTFileStream final : public IFX_SeekableStream { |
+ public: |
+ explicit CFX_CRTFileStream(std::unique_ptr<IFXCRT_FileAccess> pFA); |
+ ~CFX_CRTFileStream() override; |
+ |
+ // IFX_SeekableStream: |
+ IFX_SeekableStream* Retain() override; |
+ void Release() override; |
+ FX_FILESIZE GetSize() override; |
+ bool IsEOF() override; |
+ FX_FILESIZE GetPosition() override; |
+ bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; |
+ size_t ReadBlock(void* buffer, size_t size) override; |
+ bool WriteBlock(const void* buffer, FX_FILESIZE offset, size_t size) override; |
+ bool Flush() override; |
+ |
+ protected: |
npm
2016/12/01 21:21:49
Ditto
Tom Sepez
2016/12/01 21:33:45
Done.
|
+ std::unique_ptr<IFXCRT_FileAccess> m_pFile; |
+ uint32_t m_dwCount; |
+}; |
+ |
CFX_CRTFileStream::CFX_CRTFileStream(std::unique_ptr<IFXCRT_FileAccess> pFA) |
: m_pFile(std::move(pFA)), m_dwCount(1) {} |
CFX_CRTFileStream::~CFX_CRTFileStream() {} |
npm
2016/12/01 21:21:49
Can you place the other methods in CFX_CRTFileStre
Tom Sepez
2016/12/01 21:33:45
Ooops. Pasted in wrong place. fixed.
|
+#define FX_MEMSTREAM_BlockSize (64 * 1024) |
+#define FX_MEMSTREAM_Consecutive 0x01 |
+#define FX_MEMSTREAM_TakeOver 0x02 |
+ |
+class CFX_MemoryStream final : public IFX_MemoryStream { |
+ public: |
+ explicit CFX_MemoryStream(bool bConsecutive); |
+ CFX_MemoryStream(uint8_t* pBuffer, size_t nSize, bool bTakeOver); |
+ ~CFX_MemoryStream() override; |
+ |
+ // IFX_MemoryStream |
+ IFX_SeekableStream* Retain() override; |
+ void Release() override; |
+ FX_FILESIZE GetSize() override; |
+ bool IsEOF() override; |
+ FX_FILESIZE GetPosition() override; |
+ bool ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; |
+ size_t ReadBlock(void* buffer, size_t size) override; |
+ bool WriteBlock(const void* buffer, FX_FILESIZE offset, size_t size) override; |
+ bool Flush() override; |
+ bool IsConsecutive() const override; |
+ void EstimateSize(size_t nInitSize, size_t nGrowSize) override; |
+ uint8_t* GetBuffer() const override; |
+ void AttachBuffer(uint8_t* pBuffer, |
+ size_t nSize, |
+ bool bTakeOver = false) override; |
+ void DetachBuffer() override; |
+ |
+ protected: |
npm
2016/12/01 21:21:49
Ditto private?
Tom Sepez
2016/12/01 21:33:45
Done. Protected on a final class is always wrong.
|
+ CFX_ArrayTemplate<uint8_t*> m_Blocks; |
+ uint32_t m_dwCount; |
+ size_t m_nTotalSize; |
+ size_t m_nCurSize; |
+ size_t m_nCurPos; |
+ size_t m_nGrowSize; |
+ uint32_t m_dwFlags; |
+ bool ExpandBlocks(size_t size); |
+}; |
+ |
CFX_MemoryStream::CFX_MemoryStream(bool bConsecutive) |
: m_dwCount(1), |
m_nTotalSize(0), |