// Copyright 2014 PDFium Authors. All rights reserved.
|
// Use of this source code is governed by a BSD-style license that can be
|
// found in the LICENSE file.
|
|
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
#ifndef XFA_FXFA_INCLUDE_FXFA_H_
|
#define XFA_FXFA_INCLUDE_FXFA_H_
|
|
#include <vector>
|
|
#include "xfa/fxfa/include/fxfa_basic.h"
|
#include "xfa/fxfa/include/fxfa_widget.h"
|
|
class CFGAS_GEFont;
|
class CFX_Graphics;
|
class CPDF_Document;
|
class CXFA_FFPageView;
|
class CXFA_Node;
|
class CXFA_NodeList;
|
class CXFA_WidgetAcc;
|
class IFWL_AdapterTimerMgr;
|
class IXFA_AppProvider;
|
class IXFA_DocProvider;
|
class IXFA_WidgetAccIterator;
|
class IXFA_WidgetIterator;
|
|
#define XFA_MBICON_Error 0
|
#define XFA_MBICON_Warning 1
|
#define XFA_MBICON_Question 2
|
#define XFA_MBICON_Status 3
|
#define XFA_MB_OK 0
|
#define XFA_MB_OKCancel 1
|
#define XFA_MB_YesNo 2
|
#define XFA_MB_YesNoCancel 3
|
#define XFA_IDOK 1
|
#define XFA_IDCancel 2
|
#define XFA_IDNo 3
|
#define XFA_IDYes 4
|
#define XFA_IDS_ValidateFailed 1
|
#define XFA_IDS_CalcOverride 2
|
#define XFA_IDS_ModifyField 3
|
#define XFA_IDS_NotModifyField 4
|
#define XFA_IDS_AppName 5
|
#define XFA_IDS_Unable_TO_SET 8
|
#define XFA_IDS_INVAlID_PROP_SET 13
|
#define XFA_IDS_NOT_DEFAUL_VALUE 14
|
#define XFA_IDS_UNABLE_SET_LANGUAGE 15
|
#define XFA_IDS_UNABLE_SET_NUMPAGES 16
|
#define XFA_IDS_UNABLE_SET_PLATFORM 17
|
#define XFA_IDS_UNABLE_SET_VARIATION 19
|
#define XFA_IDS_UNABLE_SET_VERSION 20
|
#define XFA_IDS_UNABLE_SET_READY 21
|
#define XFA_IDS_COMPILER_ERROR 35
|
#define XFA_IDS_DIVIDE_ZERO 44
|
#define XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT 61
|
#define XFA_IDS_INDEX_OUT_OF_BOUNDS 64
|
#define XFA_IDS_INCORRECT_NUMBER_OF_METHOD 65
|
#define XFA_IDS_ARGUMENT_MISMATCH 66
|
#define XFA_IDS_NOT_HAVE_PROPERTY 70
|
#define XFA_IDS_VIOLATE_BOUNDARY 72
|
#define XFA_IDS_SERVER_DENY 73
|
#define XFA_IDS_StringWeekDay_Sun 74
|
#define XFA_IDS_StringWeekDay_Mon 75
|
#define XFA_IDS_StringWeekDay_Tue 76
|
#define XFA_IDS_StringWeekDay_Wed 77
|
#define XFA_IDS_StringWeekDay_Thu 78
|
#define XFA_IDS_StringWeekDay_Fri 79
|
#define XFA_IDS_StringWeekDay_Sat 80
|
#define XFA_IDS_StringMonth_Jan 81
|
#define XFA_IDS_StringMonth_Feb 82
|
#define XFA_IDS_StringMonth_March 83
|
#define XFA_IDS_StringMonth_April 84
|
#define XFA_IDS_StringMonth_May 85
|
#define XFA_IDS_StringMonth_June 86
|
#define XFA_IDS_StringMonth_July 87
|
#define XFA_IDS_StringMonth_Aug 88
|
#define XFA_IDS_StringMonth_Sept 89
|
#define XFA_IDS_StringMonth_Oct 90
|
#define XFA_IDS_StringMonth_Nov 91
|
#define XFA_IDS_StringMonth_Dec 92
|
#define XFA_IDS_String_Today 93
|
#define XFA_IDS_ValidateLimit 94
|
#define XFA_IDS_ValidateNullWarning 95
|
#define XFA_IDS_ValidateNullError 96
|
#define XFA_IDS_ValidateWarning 97
|
#define XFA_IDS_ValidateError 98
|
#define XFA_IDS_ValidateNumberError 99
|
|
#define XFA_DOCVIEW_View 0x00000000
|
#define XFA_DOCVIEW_MasterPage 0x00000001
|
#define XFA_DOCVIEW_Design 0x00000002
|
#define XFA_DOCTYPE_Dynamic 0
|
#define XFA_DOCTYPE_Static 1
|
#define XFA_DOCTYPE_XDP 2
|
#define XFA_PARSESTATUS_StatusErr -3
|
#define XFA_PARSESTATUS_StreamErr -2
|
#define XFA_PARSESTATUS_SyntaxErr -1
|
#define XFA_PARSESTATUS_Ready 0
|
#define XFA_PARSESTATUS_Done 100
|
#define XFA_VALIDATE_preSubmit 1
|
#define XFA_VALIDATE_prePrint 2
|
#define XFA_VALIDATE_preExecute 3
|
#define XFA_VALIDATE_preSave 4
|
|
#define XFA_INVALIDATE_AllPages 0x00000000
|
#define XFA_INVALIDATE_CurrentPage 0x00000001
|
#define XFA_PRINTOPT_ShowDialog 0x00000001
|
#define XFA_PRINTOPT_CanCancel 0x00000002
|
#define XFA_PRINTOPT_ShrinkPage 0x00000004
|
#define XFA_PRINTOPT_AsImage 0x00000008
|
#define XFA_PRINTOPT_ReverseOrder 0x00000010
|
#define XFA_PRINTOPT_PrintAnnot 0x00000020
|
#define XFA_PAGEVIEWEVENT_PostAdded 1
|
#define XFA_PAGEVIEWEVENT_PostRemoved 3
|
#define XFA_PAGEVIEWEVENT_StopLayout 4
|
|
#define XFA_EVENTERROR_Success 1
|
#define XFA_EVENTERROR_Error -1
|
#define XFA_EVENTERROR_NotExist 0
|
#define XFA_EVENTERROR_Disabled 2
|
|
#define XFA_RENDERSTATUS_Ready 1
|
#define XFA_RENDERSTATUS_ToBeContinued 2
|
#define XFA_RENDERSTATUS_Done 3
|
#define XFA_RENDERSTATUS_Failed -1
|
|
#define XFA_TRAVERSEWAY_Tranvalse 0x0001
|
#define XFA_TRAVERSEWAY_Form 0x0002
|
|
enum XFA_WidgetStatus {
|
XFA_WidgetStatus_None = 0,
|
|
XFA_WidgetStatus_Access = 1 << 0,
|
XFA_WidgetStatus_ButtonDown = 1 << 1,
|
XFA_WidgetStatus_Disabled = 1 << 2,
|
XFA_WidgetStatus_Focused = 1 << 3,
|
XFA_WidgetStatus_Highlight = 1 << 4,
|
XFA_WidgetStatus_Printable = 1 << 5,
|
XFA_WidgetStatus_RectCached = 1 << 6,
|
XFA_WidgetStatus_TextEditValueChanged = 1 << 7,
|
XFA_WidgetStatus_Viewable = 1 << 8,
|
XFA_WidgetStatus_Visible = 1 << 9
|
};
|
|
enum XFA_WIDGETORDER {
|
XFA_WIDGETORDER_PreOrder,
|
};
|
|
enum XFA_WIDGETTYPE {
|
XFA_WIDGETTYPE_Barcode,
|
XFA_WIDGETTYPE_PushButton,
|
XFA_WIDGETTYPE_CheckButton,
|
XFA_WIDGETTYPE_RadioButton,
|
XFA_WIDGETTYPE_DatetimeEdit,
|
XFA_WIDGETTYPE_DecimalField,
|
XFA_WIDGETTYPE_NumericField,
|
XFA_WIDGETTYPE_Signature,
|
XFA_WIDGETTYPE_TextEdit,
|
XFA_WIDGETTYPE_DropdownList,
|
XFA_WIDGETTYPE_ListBox,
|
XFA_WIDGETTYPE_ImageField,
|
XFA_WIDGETTYPE_PasswordEdit,
|
XFA_WIDGETTYPE_Arc,
|
XFA_WIDGETTYPE_Rectangle,
|
XFA_WIDGETTYPE_Image,
|
XFA_WIDGETTYPE_Line,
|
XFA_WIDGETTYPE_Text,
|
XFA_WIDGETTYPE_ExcludeGroup,
|
XFA_WIDGETTYPE_Subform,
|
XFA_WIDGETTYPE_Unknown,
|
};
|
|
// Probably should be called IXFA_AppDelegate.
|
class IXFA_AppProvider {
|
public:
|
virtual ~IXFA_AppProvider() {}
|
|
/**
|
* Specifies the name of the client application in which a form currently
|
* exists. Such as Exchange-Pro.
|
*/
|
virtual void SetAppType(const CFX_WideStringC& wsAppType) = 0;
|
virtual void GetAppType(CFX_WideString& wsAppType) = 0;
|
virtual void SetFoxitAppType(const CFX_WideStringC& wsFoxitAppType) = 0;
|
virtual void GetFoxitAppType(CFX_WideString& wsFoxitAppType) = 0;
|
|
/**
|
* Returns the language of the running host application. Such as zh_CN
|
*/
|
virtual void GetLanguage(CFX_WideString& wsLanguage) = 0;
|
|
/**
|
* Returns the platform of the machine running the script. Such as WIN
|
*/
|
virtual void GetPlatform(CFX_WideString& wsPlatform) = 0;
|
|
/**
|
* Indicates the packaging of the application that is running the script. Such
|
* as Full
|
*/
|
virtual void GetVariation(CFX_WideString& wsVariation) = 0;
|
|
/**
|
* Indicates the version number of the current application. Such as 9
|
*/
|
virtual void GetVersion(CFX_WideString& wsVersion) = 0;
|
virtual void GetFoxitVersion(CFX_WideString& wsFoxitVersion) = 0;
|
|
/**
|
* Get application name, such as Phantom.
|
*/
|
virtual void GetAppName(CFX_WideString& wsName) = 0;
|
virtual void GetFoxitAppName(CFX_WideString& wsFoxitName) = 0;
|
|
/**
|
* Causes the system to play a sound.
|
* @param[in] dwType The system code for the appropriate sound.0 (Error)1
|
* (Warning)2 (Question)3 (Status)4 (Default)
|
*/
|
virtual void Beep(uint32_t dwType) = 0;
|
|
/**
|
* Displays a message box.
|
* @param[in] wsMessage - Message string to display in box.
|
* @param[in] wsTitle - Title string for box.
|
* @param[in] dwIconType - Icon type, refer to XFA_MBICON.
|
* @param[in] dwButtonType - Button type, refer to XFA_MESSAGEBUTTON.
|
* @return A valid integer representing the value of the button pressed by the
|
* user, refer to XFA_ID.
|
*/
|
virtual int32_t MsgBox(const CFX_WideString& wsMessage,
|
const CFX_WideString& wsTitle = L"",
|
uint32_t dwIconType = 0,
|
uint32_t dwButtonType = 0) = 0;
|
|
/**
|
* Get a response from the user.
|
* @param[in] wsQuestion - Message string to display in box.
|
* @param[in] wsTitle - Title string for box.
|
* @param[in] wsDefaultAnswer - Initial contents for answer.
|
* @param[in] bMask - Mask the user input with asterisks when true,
|
* @return A string containing the user's response.
|
*/
|
virtual CFX_WideString Response(const CFX_WideString& wsQuestion,
|
const CFX_WideString& wsTitle = L"",
|
const CFX_WideString& wsDefaultAnswer = L"",
|
FX_BOOL bMask = TRUE) = 0;
|
|
virtual int32_t GetDocumentCountInBatch() = 0;
|
virtual int32_t GetCurDocumentInBatch() = 0;
|
|
/**
|
* Download something from somewhere.
|
* @param[in] wsURL - http, ftp, such as
|
* "http://www.w3.org/TR/REC-xml-names/".
|
*/
|
virtual IFX_FileRead* DownloadURL(const CFX_WideString& wsURL) = 0;
|
|
/**
|
* POST data to the given url.
|
* @param[in] wsURL the URL being uploaded.
|
* @param[in] wsData the data being uploaded.
|
* @param[in] wsContentType the content type of data including text/html,
|
* text/xml, text/plain, multipart/form-data,
|
* application/x-www-form-urlencoded,
|
* application/octet-stream, any valid MIME type.
|
* @param[in] wsEncode the encode of data including UTF-8, UTF-16,
|
* ISO8859-1, any recognized [IANA]character encoding
|
* @param[in] wsHeader any additional HTTP headers to be included in the
|
* post.
|
* @param[out] wsResponse decoded response from server.
|
* @return TRUE Server permitted the post request, FALSE otherwise.
|
*/
|
virtual FX_BOOL PostRequestURL(const CFX_WideString& wsURL,
|
const CFX_WideString& wsData,
|
const CFX_WideString& wsContentType,
|
const CFX_WideString& wsEncode,
|
const CFX_WideString& wsHeader,
|
CFX_WideString& wsResponse) = 0;
|
|
/**
|
* PUT data to the given url.
|
* @param[in] wsURL the URL being uploaded.
|
* @param[in] wsData the data being uploaded.
|
* @param[in] wsEncode the encode of data including UTF-8, UTF-16,
|
* ISO8859-1, any recognized [IANA]character encoding
|
* @return TRUE Server permitted the post request, FALSE otherwise.
|
*/
|
virtual FX_BOOL PutRequestURL(const CFX_WideString& wsURL,
|
const CFX_WideString& wsData,
|
const CFX_WideString& wsEncode) = 0;
|
|
virtual void LoadString(int32_t iStringID, CFX_WideString& wsString) = 0;
|
virtual IFWL_AdapterTimerMgr* GetTimerMgr() = 0;
|
};
|
|
class IXFA_DocProvider {
|
public:
|
virtual ~IXFA_DocProvider() {}
|
|
virtual void SetChangeMark(CXFA_FFDoc* hDoc) = 0;
|
virtual void InvalidateRect(CXFA_FFPageView* pPageView,
|
const CFX_RectF& rt,
|
uint32_t dwFlags = 0) = 0;
|
virtual void DisplayCaret(CXFA_FFWidget* hWidget,
|
FX_BOOL bVisible,
|
const CFX_RectF* pRtAnchor) = 0;
|
virtual FX_BOOL GetPopupPos(CXFA_FFWidget* hWidget,
|
FX_FLOAT fMinPopup,
|
FX_FLOAT fMaxPopup,
|
const CFX_RectF& rtAnchor,
|
CFX_RectF& rtPopup) = 0;
|
virtual FX_BOOL PopupMenu(CXFA_FFWidget* hWidget,
|
CFX_PointF ptPopup,
|
const CFX_RectF* pRectExclude = nullptr) = 0;
|
virtual void PageViewEvent(CXFA_FFPageView* pPageView, uint32_t dwFlags) = 0;
|
virtual void WidgetPostAdd(CXFA_FFWidget* hWidget,
|
CXFA_WidgetAcc* pWidgetData) = 0;
|
virtual void WidgetPreRemove(CXFA_FFWidget* hWidget,
|
CXFA_WidgetAcc* pWidgetData) = 0;
|
virtual FX_BOOL RenderCustomWidget(CXFA_FFWidget* hWidget,
|
CFX_Graphics* pGS,
|
CFX_Matrix* pMatrix,
|
const CFX_RectF& rtUI) = 0;
|
|
virtual int32_t CountPages(CXFA_FFDoc* hDoc) = 0;
|
virtual int32_t GetCurrentPage(CXFA_FFDoc* hDoc) = 0;
|
virtual void SetCurrentPage(CXFA_FFDoc* hDoc, int32_t iCurPage) = 0;
|
virtual FX_BOOL IsCalculationsEnabled(CXFA_FFDoc* hDoc) = 0;
|
virtual void SetCalculationsEnabled(CXFA_FFDoc* hDoc, FX_BOOL bEnabled) = 0;
|
virtual void GetTitle(CXFA_FFDoc* hDoc, CFX_WideString& wsTitle) = 0;
|
virtual void SetTitle(CXFA_FFDoc* hDoc, const CFX_WideString& wsTitle) = 0;
|
virtual void ExportData(CXFA_FFDoc* hDoc,
|
const CFX_WideString& wsFilePath,
|
FX_BOOL bXDP = TRUE) = 0;
|
virtual void ImportData(CXFA_FFDoc* hDoc,
|
const CFX_WideString& wsFilePath) = 0;
|
virtual void GotoURL(CXFA_FFDoc* hDoc,
|
const CFX_WideString& bsURL,
|
FX_BOOL bAppend = TRUE) = 0;
|
virtual FX_BOOL IsValidationsEnabled(CXFA_FFDoc* hDoc) = 0;
|
virtual void SetValidationsEnabled(CXFA_FFDoc* hDoc, FX_BOOL bEnabled) = 0;
|
virtual void SetFocusWidget(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget) = 0;
|
virtual void Print(CXFA_FFDoc* hDoc,
|
int32_t nStartPage,
|
int32_t nEndPage,
|
uint32_t dwOptions) = 0;
|
virtual int32_t AbsPageCountInBatch(CXFA_FFDoc* hDoc) = 0;
|
virtual int32_t AbsPageInBatch(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget) = 0;
|
virtual int32_t SheetCountInBatch(CXFA_FFDoc* hDoc) = 0;
|
virtual int32_t SheetInBatch(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget) = 0;
|
virtual int32_t Verify(CXFA_FFDoc* hDoc,
|
CXFA_Node* pSigNode,
|
FX_BOOL bUsed = TRUE) = 0;
|
virtual FX_BOOL Sign(CXFA_FFDoc* hDoc,
|
CXFA_NodeList* pNodeList,
|
const CFX_WideStringC& wsExpression,
|
const CFX_WideStringC& wsXMLIdent,
|
const CFX_WideStringC& wsValue = FX_WSTRC(L"open"),
|
FX_BOOL bUsed = TRUE) = 0;
|
virtual CXFA_NodeList* Enumerate(CXFA_FFDoc* hDoc) = 0;
|
virtual FX_BOOL Clear(CXFA_FFDoc* hDoc,
|
CXFA_Node* pSigNode,
|
FX_BOOL bCleared = TRUE) = 0;
|
virtual void GetURL(CXFA_FFDoc* hDoc, CFX_WideString& wsDocURL) = 0;
|
virtual FX_ARGB GetHighlightColor(CXFA_FFDoc* hDoc) = 0;
|
|
virtual FX_BOOL SubmitData(CXFA_FFDoc* hDoc, CXFA_Submit submit) = 0;
|
virtual FX_BOOL CheckWord(CXFA_FFDoc* hDoc, const CFX_ByteStringC& sWord) = 0;
|
virtual FX_BOOL GetSuggestWords(CXFA_FFDoc* hDoc,
|
const CFX_ByteStringC& sWord,
|
std::vector<CFX_ByteString>& sSuggest) = 0;
|
virtual FX_BOOL GetPDFScriptObject(CXFA_FFDoc* hDoc,
|
const CFX_ByteStringC& utf8Name,
|
CFXJSE_Value* pValue) = 0;
|
virtual FX_BOOL GetGlobalProperty(CXFA_FFDoc* hDoc,
|
const CFX_ByteStringC& szPropName,
|
CFXJSE_Value* pValue) = 0;
|
virtual FX_BOOL SetGlobalProperty(CXFA_FFDoc* hDoc,
|
const CFX_ByteStringC& szPropName,
|
CFXJSE_Value* pValue) = 0;
|
virtual CPDF_Document* OpenPDF(CXFA_FFDoc* hDoc,
|
IFX_FileRead* pFile,
|
FX_BOOL bTakeOverFile) = 0;
|
virtual IFX_FileRead* OpenLinkedFile(CXFA_FFDoc* hDoc,
|
const CFX_WideString& wsLink) = 0;
|
};
|
|
class IXFA_WidgetIterator {
|
public:
|
virtual ~IXFA_WidgetIterator() {}
|
|
virtual void Reset() = 0;
|
virtual CXFA_FFWidget* MoveToFirst() = 0;
|
virtual CXFA_FFWidget* MoveToLast() = 0;
|
virtual CXFA_FFWidget* MoveToNext() = 0;
|
virtual CXFA_FFWidget* MoveToPrevious() = 0;
|
virtual CXFA_FFWidget* GetCurrentWidget() = 0;
|
virtual FX_BOOL SetCurrentWidget(CXFA_FFWidget* hWidget) = 0;
|
};
|
|
#endif // XFA_FXFA_INCLUDE_FXFA_H_
|