Index: fpdfsdk/include/fsdk_define.h |
diff --git a/fpdfsdk/include/fsdk_define.h b/fpdfsdk/include/fsdk_define.h |
index 980411c27b5e8f48d87e9d83f5e10e1a45e54430..4dfe5c284008806cb800a9dab2c21a1f505a2bbc 100644 |
--- a/fpdfsdk/include/fsdk_define.h |
+++ b/fpdfsdk/include/fsdk_define.h |
@@ -7,16 +7,31 @@ |
#ifndef FPDFSDK_INCLUDE_FSDK_DEFINE_H_ |
#define FPDFSDK_INCLUDE_FSDK_DEFINE_H_ |
+#ifndef PDF_ENABLE_XFA |
#include "core/include/fpdfapi/fpdfapi.h" |
+#else |
+#include "../../xfa/include/fwl/adapter/fwl_adaptertimermgr.h" |
+#include "../../xfa/include/fxbarcode/BC_BarCode.h" |
+#include "../../xfa/include/fxfa/fxfa.h" |
+#include "../../xfa/include/fxgraphics/fx_graphics.h" |
+#include "../../xfa/include/fxjse/fxjse.h" |
+#endif |
#include "core/include/fpdfapi/fpdf_module.h" |
#include "core/include/fpdfapi/fpdf_pageobj.h" |
#include "core/include/fpdfapi/fpdf_parser.h" |
#include "core/include/fpdfapi/fpdf_render.h" |
#include "core/include/fpdfapi/fpdf_serial.h" |
+#ifdef PDF_ENABLE_XFA |
+#include "core/include/fpdfapi/fpdfapi.h" |
+#endif |
#include "core/include/fpdfdoc/fpdf_doc.h" |
#include "core/include/fpdfdoc/fpdf_vt.h" |
#include "core/include/fxge/fx_ge.h" |
#include "core/include/fxge/fx_ge_win32.h" |
+#ifdef PDF_ENABLE_XFA |
+#include "fpdfsdk/include/fpdfxfa/fpdfxfa_doc.h" |
+#include "fpdfsdk/include/fpdfxfa/fpdfxfa_page.h" |
+#endif |
#include "public/fpdfview.h" |
#ifdef _WIN32 |
@@ -48,15 +63,54 @@ class CPDF_CustomAccess final : public IFX_FileRead { |
void Release() override { delete this; } |
FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size) override; |
+#ifdef PDF_ENABLE_XFA |
+ virtual CFX_ByteString GetFullPath() { return ""; } |
+ virtual FX_BOOL GetByte(FX_DWORD pos, uint8_t& ch); |
+ virtual FX_BOOL GetBlock(FX_DWORD pos, uint8_t* pBuf, FX_DWORD size); |
+ |
+#endif |
private: |
FPDF_FILEACCESS m_FileAccess; |
+#ifdef PDF_ENABLE_XFA |
+ uint8_t m_Buffer[512]; |
+ FX_DWORD m_BufferOffset; |
+}; |
+ |
+class CFPDF_FileStream : public IFX_FileStream { |
+ public: |
+ CFPDF_FileStream(FPDF_FILEHANDLER* pFS); |
+ virtual ~CFPDF_FileStream() {} |
+ |
+ virtual IFX_FileStream* Retain(); |
+ virtual void Release(); |
+ |
+ virtual FX_FILESIZE GetSize(); |
+ virtual FX_BOOL IsEOF(); |
+ virtual FX_FILESIZE GetPosition() { return m_nCurPos; } |
+ virtual void SetPosition(FX_FILESIZE pos) { m_nCurPos = pos; } |
+ virtual FX_BOOL ReadBlock(void* buffer, FX_FILESIZE offset, size_t size); |
+ virtual size_t ReadBlock(void* buffer, size_t size); |
+ virtual FX_BOOL WriteBlock(const void* buffer, |
+ FX_FILESIZE offset, |
+ size_t size); |
+ virtual FX_BOOL Flush(); |
+ |
+ protected: |
+ FPDF_FILEHANDLER* m_pFS; |
+ FX_FILESIZE m_nCurPos; |
+#endif |
}; |
// Object types for public FPDF_ types; these correspond to next layer down |
// from fpdfsdk. For master, these are CPDF_ types, but for XFA, these are |
// CPDFXFA_ types. |
+#ifndef PDF_ENABLE_XFA |
using UnderlyingDocumentType = CPDF_Document; |
using UnderlyingPageType = CPDF_Page; |
+#else |
+using UnderlyingDocumentType = CPDFXFA_Document; |
+using UnderlyingPageType = CPDFXFA_Page; |
+#endif |
// Conversions to/from underlying types. |
UnderlyingDocumentType* UnderlyingFromFPDFDocument(FPDF_DOCUMENT doc); |