1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2016 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef FPDFSDK_FPDFXFA_CPDFXFA_DOCENVIRONMENT_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FPDFSDK_FPDFXFA_CPDFXFA_DOCENVIRONMENT_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/retain_ptr.h" 11*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr.h" 12*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdfview.h" 13*3ac0a46fSAndroid Build Coastguard Worker #include "xfa/fxfa/cxfa_ffdoc.h" 14*3ac0a46fSAndroid Build Coastguard Worker 15*3ac0a46fSAndroid Build Coastguard Worker class CFX_XMLDocument; 16*3ac0a46fSAndroid Build Coastguard Worker class CPDFXFA_Context; 17*3ac0a46fSAndroid Build Coastguard Worker class IJS_Runtime; 18*3ac0a46fSAndroid Build Coastguard Worker 19*3ac0a46fSAndroid Build Coastguard Worker class CPDFXFA_DocEnvironment final : public CXFA_FFDoc::CallbackIface { 20*3ac0a46fSAndroid Build Coastguard Worker public: 21*3ac0a46fSAndroid Build Coastguard Worker explicit CPDFXFA_DocEnvironment(CPDFXFA_Context*); 22*3ac0a46fSAndroid Build Coastguard Worker ~CPDFXFA_DocEnvironment() override; 23*3ac0a46fSAndroid Build Coastguard Worker 24*3ac0a46fSAndroid Build Coastguard Worker // CFXA_FFDoc::CallbackIface: 25*3ac0a46fSAndroid Build Coastguard Worker void SetChangeMark(CXFA_FFDoc* hDoc) override; 26*3ac0a46fSAndroid Build Coastguard Worker void InvalidateRect(CXFA_FFPageView* pPageView, const CFX_RectF& rt) override; 27*3ac0a46fSAndroid Build Coastguard Worker void DisplayCaret(CXFA_FFWidget* hWidget, 28*3ac0a46fSAndroid Build Coastguard Worker bool bVisible, 29*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF* pRtAnchor) override; 30*3ac0a46fSAndroid Build Coastguard Worker bool GetPopupPos(CXFA_FFWidget* hWidget, 31*3ac0a46fSAndroid Build Coastguard Worker float fMinPopup, 32*3ac0a46fSAndroid Build Coastguard Worker float fMaxPopup, 33*3ac0a46fSAndroid Build Coastguard Worker const CFX_RectF& rtAnchor, 34*3ac0a46fSAndroid Build Coastguard Worker CFX_RectF* pPopupRect) override; 35*3ac0a46fSAndroid Build Coastguard Worker bool PopupMenu(CXFA_FFWidget* hWidget, const CFX_PointF& ptPopup) override; 36*3ac0a46fSAndroid Build Coastguard Worker void OnPageViewEvent(CXFA_FFPageView* pPageView, 37*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFDoc::PageViewEvent eEvent) override; 38*3ac0a46fSAndroid Build Coastguard Worker void WidgetPostAdd(CXFA_FFWidget* hWidget) override; 39*3ac0a46fSAndroid Build Coastguard Worker void WidgetPreRemove(CXFA_FFWidget* hWidget) override; 40*3ac0a46fSAndroid Build Coastguard Worker int32_t CountPages(const CXFA_FFDoc* hDoc) const override; 41*3ac0a46fSAndroid Build Coastguard Worker int32_t GetCurrentPage(const CXFA_FFDoc* hDoc) const override; 42*3ac0a46fSAndroid Build Coastguard Worker void SetCurrentPage(CXFA_FFDoc* hDoc, int32_t iCurPage) override; 43*3ac0a46fSAndroid Build Coastguard Worker bool IsCalculationsEnabled(const CXFA_FFDoc* hDoc) const override; 44*3ac0a46fSAndroid Build Coastguard Worker void SetCalculationsEnabled(CXFA_FFDoc* hDoc, bool bEnabled) override; 45*3ac0a46fSAndroid Build Coastguard Worker WideString GetTitle(const CXFA_FFDoc* hDoc) const override; 46*3ac0a46fSAndroid Build Coastguard Worker void SetTitle(CXFA_FFDoc* hDoc, const WideString& wsTitle) override; 47*3ac0a46fSAndroid Build Coastguard Worker void ExportData(CXFA_FFDoc* hDoc, 48*3ac0a46fSAndroid Build Coastguard Worker const WideString& wsFilePath, 49*3ac0a46fSAndroid Build Coastguard Worker bool bXDP) override; 50*3ac0a46fSAndroid Build Coastguard Worker void GotoURL(CXFA_FFDoc* hDoc, const WideString& bsURL) override; 51*3ac0a46fSAndroid Build Coastguard Worker bool IsValidationsEnabled(const CXFA_FFDoc* hDoc) const override; 52*3ac0a46fSAndroid Build Coastguard Worker void SetValidationsEnabled(CXFA_FFDoc* hDoc, bool bEnabled) override; 53*3ac0a46fSAndroid Build Coastguard Worker void SetFocusWidget(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget) override; 54*3ac0a46fSAndroid Build Coastguard Worker void Print(CXFA_FFDoc* hDoc, 55*3ac0a46fSAndroid Build Coastguard Worker int32_t nStartPage, 56*3ac0a46fSAndroid Build Coastguard Worker int32_t nEndPage, 57*3ac0a46fSAndroid Build Coastguard Worker Mask<XFA_PrintOpt> dwOptions) override; 58*3ac0a46fSAndroid Build Coastguard Worker FX_ARGB GetHighlightColor(const CXFA_FFDoc* hDoc) const override; 59*3ac0a46fSAndroid Build Coastguard Worker IJS_Runtime* GetIJSRuntime(const CXFA_FFDoc* hDoc) const override; 60*3ac0a46fSAndroid Build Coastguard Worker CFX_XMLDocument* GetXMLDoc() const override; 61*3ac0a46fSAndroid Build Coastguard Worker RetainPtr<IFX_SeekableReadStream> OpenLinkedFile( 62*3ac0a46fSAndroid Build Coastguard Worker CXFA_FFDoc* hDoc, 63*3ac0a46fSAndroid Build Coastguard Worker const WideString& wsLink) override; 64*3ac0a46fSAndroid Build Coastguard Worker 65*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED 66*3ac0a46fSAndroid Build Coastguard Worker bool Submit(CXFA_FFDoc* hDoc, CXFA_Submit* submit) override; 67*3ac0a46fSAndroid Build Coastguard Worker #endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED 68*3ac0a46fSAndroid Build Coastguard Worker 69*3ac0a46fSAndroid Build Coastguard Worker private: 70*3ac0a46fSAndroid Build Coastguard Worker #ifdef PDF_XFA_ELEMENT_SUBMIT_ENABLED 71*3ac0a46fSAndroid Build Coastguard Worker bool MailToInfo(WideString& csURL, 72*3ac0a46fSAndroid Build Coastguard Worker WideString& csToAddress, 73*3ac0a46fSAndroid Build Coastguard Worker WideString& csCCAddress, 74*3ac0a46fSAndroid Build Coastguard Worker WideString& csBCCAddress, 75*3ac0a46fSAndroid Build Coastguard Worker WideString& csSubject, 76*3ac0a46fSAndroid Build Coastguard Worker WideString& csMsg); 77*3ac0a46fSAndroid Build Coastguard Worker bool ExportSubmitFile(FPDF_FILEHANDLER* ppFileHandler, 78*3ac0a46fSAndroid Build Coastguard Worker int fileType, 79*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD encodeType, 80*3ac0a46fSAndroid Build Coastguard Worker FPDF_DWORD flag); 81*3ac0a46fSAndroid Build Coastguard Worker void ToXFAContentFlags(WideString csSrcContent, FPDF_DWORD& flag); 82*3ac0a46fSAndroid Build Coastguard Worker bool OnBeforeNotifySubmit(); 83*3ac0a46fSAndroid Build Coastguard Worker void OnAfterNotifySubmit(); 84*3ac0a46fSAndroid Build Coastguard Worker bool SubmitInternal(CXFA_FFDoc* hDoc, CXFA_Submit* submit); 85*3ac0a46fSAndroid Build Coastguard Worker #endif // PDF_XFA_ELEMENT_SUBMIT_ENABLED 86*3ac0a46fSAndroid Build Coastguard Worker 87*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<CPDFXFA_Context> const m_pContext; 88*3ac0a46fSAndroid Build Coastguard Worker }; 89*3ac0a46fSAndroid Build Coastguard Worker 90*3ac0a46fSAndroid Build Coastguard Worker #endif // FPDFSDK_FPDFXFA_CPDFXFA_DOCENVIRONMENT_H_ 91