| Index: fpdfsdk/fpdfview.cpp
|
| diff --git a/fpdfsdk/fpdfview.cpp b/fpdfsdk/fpdfview.cpp
|
| index 449433ed9003e9703f35b448494f456af8ec39e9..f0c269a3121866327ae17561c15cf36dd83c70d2 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;
|
|
|
|
|