diff options
author | tsepez <tsepez@chromium.org> | 2016-12-02 09:48:30 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-12-02 09:48:30 -0800 |
commit | fa89a203151c3ea524fc4dfd7167e2a3baf332fa (patch) | |
tree | 87d019b2cc20c09176be5eaaf96a38c591aab20f /fpdfsdk/fpdfview.cpp | |
parent | d7ecb5f272de6cdd88ecef4c7b4d0dbee4355610 (diff) | |
download | pdfium-fa89a203151c3ea524fc4dfd7167e2a3baf332fa.tar.xz |
Make concrete stream classes private to .cpp, part 4.
This one is more complicated because we were using stack-based
instances of what should have been a Release()-only type.
Review-Url: https://codereview.chromium.org/2549573003
Diffstat (limited to 'fpdfsdk/fpdfview.cpp')
-rw-r--r-- | fpdfsdk/fpdfview.cpp | 109 |
1 files changed, 69 insertions, 40 deletions
diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp index 449433ed90..f0c269a312 100644 --- a/fpdfsdk/fpdfview.cpp +++ b/fpdfsdk/fpdfview.cpp @@ -158,51 +158,30 @@ bool CPDF_CustomAccess::ReadBlock(void* buffer, reinterpret_cast<uint8_t*>(buffer), size); } -} // namespace - -UnderlyingDocumentType* UnderlyingFromFPDFDocument(FPDF_DOCUMENT doc) { - return static_cast<UnderlyingDocumentType*>(doc); -} - -FPDF_DOCUMENT FPDFDocumentFromUnderlying(UnderlyingDocumentType* doc) { - return static_cast<FPDF_DOCUMENT>(doc); -} - -UnderlyingPageType* UnderlyingFromFPDFPage(FPDF_PAGE page) { - return static_cast<UnderlyingPageType*>(page); -} - -CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc) { #ifdef PDF_ENABLE_XFA - return doc ? UnderlyingFromFPDFDocument(doc)->GetPDFDoc() : nullptr; -#else // PDF_ENABLE_XFA - return UnderlyingFromFPDFDocument(doc); -#endif // PDF_ENABLE_XFA -} +class CFPDF_FileStream : public IFX_SeekableStream { + public: + explicit CFPDF_FileStream(FPDF_FILEHANDLER* pFS); + ~CFPDF_FileStream() override {} -FPDF_DOCUMENT FPDFDocumentFromCPDFDocument(CPDF_Document* doc) { -#ifdef PDF_ENABLE_XFA - return doc ? FPDFDocumentFromUnderlying( - new CPDFXFA_Context(pdfium::WrapUnique(doc))) - : nullptr; -#else // PDF_ENABLE_XFA - return FPDFDocumentFromUnderlying(doc); -#endif // PDF_ENABLE_XFA -} + // 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; -CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page) { -#ifdef PDF_ENABLE_XFA - return page ? UnderlyingFromFPDFPage(page)->GetPDFPage() : nullptr; -#else // PDF_ENABLE_XFA - return UnderlyingFromFPDFPage(page); -#endif // PDF_ENABLE_XFA -} + void SetPosition(FX_FILESIZE pos) { m_nCurPos = pos; } -CFX_DIBitmap* CFXBitmapFromFPDFBitmap(FPDF_BITMAP bitmap) { - return static_cast<CFX_DIBitmap*>(bitmap); -} + protected: + FPDF_FILEHANDLER* m_pFS; + FX_FILESIZE m_nCurPos; +}; -#ifdef PDF_ENABLE_XFA CFPDF_FileStream::CFPDF_FileStream(FPDF_FILEHANDLER* pFS) { m_pFS = pFS; m_nCurPos = 0; @@ -287,10 +266,60 @@ bool CFPDF_FileStream::Flush() { } #endif // PDF_ENABLE_XFA +} // namespace + +UnderlyingDocumentType* UnderlyingFromFPDFDocument(FPDF_DOCUMENT doc) { + return static_cast<UnderlyingDocumentType*>(doc); +} + +FPDF_DOCUMENT FPDFDocumentFromUnderlying(UnderlyingDocumentType* doc) { + return static_cast<FPDF_DOCUMENT>(doc); +} + +UnderlyingPageType* UnderlyingFromFPDFPage(FPDF_PAGE page) { + return static_cast<UnderlyingPageType*>(page); +} + +CPDF_Document* CPDFDocumentFromFPDFDocument(FPDF_DOCUMENT doc) { +#ifdef PDF_ENABLE_XFA + return doc ? UnderlyingFromFPDFDocument(doc)->GetPDFDoc() : nullptr; +#else // PDF_ENABLE_XFA + return UnderlyingFromFPDFDocument(doc); +#endif // PDF_ENABLE_XFA +} + +FPDF_DOCUMENT FPDFDocumentFromCPDFDocument(CPDF_Document* doc) { +#ifdef PDF_ENABLE_XFA + return doc ? FPDFDocumentFromUnderlying( + new CPDFXFA_Context(pdfium::WrapUnique(doc))) + : nullptr; +#else // PDF_ENABLE_XFA + return FPDFDocumentFromUnderlying(doc); +#endif // PDF_ENABLE_XFA +} + +CPDF_Page* CPDFPageFromFPDFPage(FPDF_PAGE page) { +#ifdef PDF_ENABLE_XFA + return page ? UnderlyingFromFPDFPage(page)->GetPDFPage() : nullptr; +#else // PDF_ENABLE_XFA + return UnderlyingFromFPDFPage(page); +#endif // PDF_ENABLE_XFA +} + +CFX_DIBitmap* CFXBitmapFromFPDFBitmap(FPDF_BITMAP bitmap) { + return static_cast<CFX_DIBitmap*>(bitmap); +} + IFX_SeekableReadStream* MakeSeekableReadStream(FPDF_FILEACCESS* pFileAccess) { return new CPDF_CustomAccess(pFileAccess); } +#ifdef PDF_ENABLE_XFA +IFX_SeekableStream* MakeSeekableStream(FPDF_FILEHANDLER* pFilehandler) { + return new CFPDF_FileStream(pFilehandler); +} +#endif // PDF_ENABLE_XFA + // 0 bit: FPDF_POLICY_MACHINETIME_ACCESS static uint32_t foxit_sandbox_policy = 0xFFFFFFFF; |