blob: 559035cba1a67e4ad473737b2d4daedf5569f4f0 [file] [log] [blame]
// 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_FXFA_H_
#define XFA_FXFA_FXFA_H_
#include <vector>
#include "core/fxcrt/cfx_retain_ptr.h"
#include "xfa/fxfa/cxfa_widgetacc.h"
#include "xfa/fxfa/fxfa_basic.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_DocEnvironment;
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
// Note, values match fpdf_formfill.h DOCTYPE_* flags.
enum class XFA_DocType { PDF = 0, Dynamic = 1, Static = 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_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() {}
/**
* Returns the language of the running host application. Such as zh_CN
*/
virtual CFX_WideString GetLanguage() = 0;
/**
* Returns the platform of the machine running the script. Such as WIN
*/
virtual CFX_WideString GetPlatform() = 0;
/**
* Get application name, such as Phantom.
*/
virtual CFX_WideString GetAppName() = 0;
/**
* Get application message box title.
*/
virtual CFX_WideString GetAppTitle() const = 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"",
bool bMask = true) = 0;
/**
* Download something from somewhere.
* @param[in] wsURL - http, ftp, such as
* "http://www.w3.org/TR/REC-xml-names/".
*/
virtual CFX_RetainPtr<IFX_SeekableReadStream> 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 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 bool PutRequestURL(const CFX_WideString& wsURL,
const CFX_WideString& wsData,
const CFX_WideString& wsEncode) = 0;
virtual IFWL_AdapterTimerMgr* GetTimerMgr() = 0;
};
class IXFA_DocEnvironment {
public:
virtual ~IXFA_DocEnvironment() {}
virtual void SetChangeMark(CXFA_FFDoc* hDoc) = 0;
virtual void InvalidateRect(CXFA_FFPageView* pPageView,
const CFX_RectF& rt) = 0;
virtual void DisplayCaret(CXFA_FFWidget* hWidget,
bool bVisible,
const CFX_RectF* pRtAnchor) = 0;
virtual bool GetPopupPos(CXFA_FFWidget* hWidget,
float fMinPopup,
float fMaxPopup,
const CFX_RectF& rtAnchor,
CFX_RectF& rtPopup) = 0;
virtual bool PopupMenu(CXFA_FFWidget* hWidget, CFX_PointF ptPopup) = 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 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 bool IsCalculationsEnabled(CXFA_FFDoc* hDoc) = 0;
virtual void SetCalculationsEnabled(CXFA_FFDoc* hDoc, 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,
bool bXDP) = 0;
virtual void GotoURL(CXFA_FFDoc* hDoc, const CFX_WideString& bsURL) = 0;
virtual bool IsValidationsEnabled(CXFA_FFDoc* hDoc) = 0;
virtual void SetValidationsEnabled(CXFA_FFDoc* hDoc, 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 FX_ARGB GetHighlightColor(CXFA_FFDoc* hDoc) = 0;
virtual bool SubmitData(CXFA_FFDoc* hDoc, CXFA_Submit submit) = 0;
virtual bool GetGlobalProperty(CXFA_FFDoc* hDoc,
const CFX_ByteStringC& szPropName,
CFXJSE_Value* pValue) = 0;
virtual bool SetGlobalProperty(CXFA_FFDoc* hDoc,
const CFX_ByteStringC& szPropName,
CFXJSE_Value* pValue) = 0;
virtual CFX_RetainPtr<IFX_SeekableReadStream> 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 bool SetCurrentWidget(CXFA_FFWidget* hWidget) = 0;
};
#endif // XFA_FXFA_FXFA_H_