1 // Copyright 2014 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef XFA_FXFA_FXFA_H_ 8 #define XFA_FXFA_FXFA_H_ 9 10 #include <vector> 11 12 #include "core/fxcrt/retain_ptr.h" 13 #include "xfa/fxfa/cxfa_widgetacc.h" 14 #include "xfa/fxfa/fxfa_basic.h" 15 16 class CXFA_FFPageView; 17 class CXFA_Submit; 18 class CXFA_WidgetAcc; 19 class IFWL_AdapterTimerMgr; 20 class IFX_SeekableReadStream; 21 22 #define XFA_MBICON_Error 0 23 #define XFA_MBICON_Warning 1 24 #define XFA_MBICON_Question 2 25 #define XFA_MBICON_Status 3 26 #define XFA_MB_OK 0 27 #define XFA_MB_OKCancel 1 28 #define XFA_MB_YesNo 2 29 #define XFA_MB_YesNoCancel 3 30 #define XFA_IDOK 1 31 #define XFA_IDCancel 2 32 #define XFA_IDNo 3 33 #define XFA_IDYes 4 34 35 // Note, values must match fpdf_formfill.h FORMTYPE_* flags. 36 enum class FormType { 37 kNone = 0, 38 kAcroForm = 1, 39 kXFAFull = 2, 40 kXFAForeground = 3, 41 }; 42 43 #define XFA_PARSESTATUS_StatusErr -3 44 #define XFA_PARSESTATUS_StreamErr -2 45 #define XFA_PARSESTATUS_SyntaxErr -1 46 #define XFA_PARSESTATUS_Ready 0 47 #define XFA_PARSESTATUS_Done 100 48 49 #define XFA_PRINTOPT_ShowDialog 0x00000001 50 #define XFA_PRINTOPT_CanCancel 0x00000002 51 #define XFA_PRINTOPT_ShrinkPage 0x00000004 52 #define XFA_PRINTOPT_AsImage 0x00000008 53 #define XFA_PRINTOPT_ReverseOrder 0x00000010 54 #define XFA_PRINTOPT_PrintAnnot 0x00000020 55 #define XFA_PAGEVIEWEVENT_PostAdded 1 56 #define XFA_PAGEVIEWEVENT_PostRemoved 3 57 #define XFA_PAGEVIEWEVENT_StopLayout 4 58 59 #define XFA_EVENTERROR_Success 1 60 #define XFA_EVENTERROR_Error -1 61 #define XFA_EVENTERROR_NotExist 0 62 #define XFA_EVENTERROR_Disabled 2 63 64 #define XFA_TRAVERSEWAY_Tranvalse 0x0001 65 #define XFA_TRAVERSEWAY_Form 0x0002 66 67 enum XFA_WidgetStatus { 68 XFA_WidgetStatus_None = 0, 69 70 XFA_WidgetStatus_Access = 1 << 0, 71 XFA_WidgetStatus_ButtonDown = 1 << 1, 72 XFA_WidgetStatus_Disabled = 1 << 2, 73 XFA_WidgetStatus_Focused = 1 << 3, 74 XFA_WidgetStatus_Highlight = 1 << 4, 75 XFA_WidgetStatus_Printable = 1 << 5, 76 XFA_WidgetStatus_RectCached = 1 << 6, 77 XFA_WidgetStatus_TextEditValueChanged = 1 << 7, 78 XFA_WidgetStatus_Viewable = 1 << 8, 79 XFA_WidgetStatus_Visible = 1 << 9 80 }; 81 82 enum XFA_WIDGETTYPE { 83 XFA_WIDGETTYPE_Barcode, 84 XFA_WIDGETTYPE_PushButton, 85 XFA_WIDGETTYPE_CheckButton, 86 XFA_WIDGETTYPE_RadioButton, 87 XFA_WIDGETTYPE_DatetimeEdit, 88 XFA_WIDGETTYPE_DecimalField, 89 XFA_WIDGETTYPE_NumericField, 90 XFA_WIDGETTYPE_Signature, 91 XFA_WIDGETTYPE_TextEdit, 92 XFA_WIDGETTYPE_DropdownList, 93 XFA_WIDGETTYPE_ListBox, 94 XFA_WIDGETTYPE_ImageField, 95 XFA_WIDGETTYPE_PasswordEdit, 96 XFA_WIDGETTYPE_Arc, 97 XFA_WIDGETTYPE_Rectangle, 98 XFA_WIDGETTYPE_Image, 99 XFA_WIDGETTYPE_Line, 100 XFA_WIDGETTYPE_Text, 101 XFA_WIDGETTYPE_ExcludeGroup, 102 XFA_WIDGETTYPE_Subform, 103 XFA_WIDGETTYPE_Unknown, 104 }; 105 106 // Probably should be called IXFA_AppDelegate. 107 class IXFA_AppProvider { 108 public: 109 virtual ~IXFA_AppProvider() {} 110 111 /** 112 * Returns the language of the running host application. Such as zh_CN 113 */ 114 virtual WideString GetLanguage() = 0; 115 116 /** 117 * Returns the platform of the machine running the script. Such as WIN 118 */ 119 virtual WideString GetPlatform() = 0; 120 121 /** 122 * Get application name, such as Phantom. 123 */ 124 virtual WideString GetAppName() = 0; 125 126 /** 127 * Get application message box title. 128 */ 129 virtual WideString GetAppTitle() const = 0; 130 131 /** 132 * Causes the system to play a sound. 133 * @param[in] dwType The system code for the appropriate sound.0 (Error)1 134 * (Warning)2 (Question)3 (Status)4 (Default) 135 */ 136 virtual void Beep(uint32_t dwType) = 0; 137 138 /** 139 * Displays a message box. 140 * @param[in] wsMessage - Message string to display in box. 141 * @param[in] wsTitle - Title string for box. 142 * @param[in] dwIconType - Icon type, refer to XFA_MBICON. 143 * @param[in] dwButtonType - Button type, refer to XFA_MESSAGEBUTTON. 144 * @return A valid integer representing the value of the button pressed by the 145 * user, refer to XFA_ID. 146 */ 147 virtual int32_t MsgBox(const WideString& wsMessage, 148 const WideString& wsTitle = L"", 149 uint32_t dwIconType = 0, 150 uint32_t dwButtonType = 0) = 0; 151 152 /** 153 * Get a response from the user. 154 * @param[in] wsQuestion - Message string to display in box. 155 * @param[in] wsTitle - Title string for box. 156 * @param[in] wsDefaultAnswer - Initial contents for answer. 157 * @param[in] bMask - Mask the user input with asterisks when true, 158 * @return A string containing the user's response. 159 */ 160 virtual WideString Response(const WideString& wsQuestion, 161 const WideString& wsTitle = L"", 162 const WideString& wsDefaultAnswer = L"", 163 bool bMask = true) = 0; 164 165 /** 166 * Download something from somewhere. 167 * @param[in] wsURL - http, ftp, such as 168 * "http://www.w3.org/TR/REC-xml-names/". 169 */ 170 virtual RetainPtr<IFX_SeekableReadStream> DownloadURL( 171 const WideString& wsURL) = 0; 172 173 /** 174 * POST data to the given url. 175 * @param[in] wsURL the URL being uploaded. 176 * @param[in] wsData the data being uploaded. 177 * @param[in] wsContentType the content type of data including text/html, 178 * text/xml, text/plain, multipart/form-data, 179 * application/x-www-form-urlencoded, 180 * application/octet-stream, any valid MIME type. 181 * @param[in] wsEncode the encode of data including UTF-8, UTF-16, 182 * ISO8859-1, any recognized [IANA]character encoding 183 * @param[in] wsHeader any additional HTTP headers to be included in the 184 * post. 185 * @param[out] wsResponse decoded response from server. 186 * @return true Server permitted the post request, false otherwise. 187 */ 188 virtual bool PostRequestURL(const WideString& wsURL, 189 const WideString& wsData, 190 const WideString& wsContentType, 191 const WideString& wsEncode, 192 const WideString& wsHeader, 193 WideString& wsResponse) = 0; 194 195 /** 196 * PUT data to the given url. 197 * @param[in] wsURL the URL being uploaded. 198 * @param[in] wsData the data being uploaded. 199 * @param[in] wsEncode the encode of data including UTF-8, UTF-16, 200 * ISO8859-1, any recognized [IANA]character encoding 201 * @return true Server permitted the post request, false otherwise. 202 */ 203 virtual bool PutRequestURL(const WideString& wsURL, 204 const WideString& wsData, 205 const WideString& wsEncode) = 0; 206 207 virtual IFWL_AdapterTimerMgr* GetTimerMgr() = 0; 208 }; 209 210 class IXFA_DocEnvironment { 211 public: 212 virtual ~IXFA_DocEnvironment() {} 213 214 virtual void SetChangeMark(CXFA_FFDoc* hDoc) = 0; 215 virtual void InvalidateRect(CXFA_FFPageView* pPageView, 216 const CFX_RectF& rt) = 0; 217 virtual void DisplayCaret(CXFA_FFWidget* hWidget, 218 bool bVisible, 219 const CFX_RectF* pRtAnchor) = 0; 220 virtual bool GetPopupPos(CXFA_FFWidget* hWidget, 221 float fMinPopup, 222 float fMaxPopup, 223 const CFX_RectF& rtAnchor, 224 CFX_RectF& rtPopup) = 0; 225 virtual bool PopupMenu(CXFA_FFWidget* hWidget, CFX_PointF ptPopup) = 0; 226 virtual void PageViewEvent(CXFA_FFPageView* pPageView, uint32_t dwFlags) = 0; 227 virtual void WidgetPostAdd(CXFA_FFWidget* hWidget, 228 CXFA_WidgetAcc* pWidgetAcc) = 0; 229 virtual void WidgetPreRemove(CXFA_FFWidget* hWidget, 230 CXFA_WidgetAcc* pWidgetAcc) = 0; 231 232 virtual int32_t CountPages(CXFA_FFDoc* hDoc) = 0; 233 virtual int32_t GetCurrentPage(CXFA_FFDoc* hDoc) = 0; 234 virtual void SetCurrentPage(CXFA_FFDoc* hDoc, int32_t iCurPage) = 0; 235 virtual bool IsCalculationsEnabled(CXFA_FFDoc* hDoc) = 0; 236 virtual void SetCalculationsEnabled(CXFA_FFDoc* hDoc, bool bEnabled) = 0; 237 virtual void GetTitle(CXFA_FFDoc* hDoc, WideString& wsTitle) = 0; 238 virtual void SetTitle(CXFA_FFDoc* hDoc, const WideString& wsTitle) = 0; 239 virtual void ExportData(CXFA_FFDoc* hDoc, 240 const WideString& wsFilePath, 241 bool bXDP) = 0; 242 virtual void GotoURL(CXFA_FFDoc* hDoc, const WideString& bsURL) = 0; 243 virtual bool IsValidationsEnabled(CXFA_FFDoc* hDoc) = 0; 244 virtual void SetValidationsEnabled(CXFA_FFDoc* hDoc, bool bEnabled) = 0; 245 virtual void SetFocusWidget(CXFA_FFDoc* hDoc, CXFA_FFWidget* hWidget) = 0; 246 virtual void Print(CXFA_FFDoc* hDoc, 247 int32_t nStartPage, 248 int32_t nEndPage, 249 uint32_t dwOptions) = 0; 250 virtual FX_ARGB GetHighlightColor(CXFA_FFDoc* hDoc) = 0; 251 252 virtual bool Submit(CXFA_FFDoc* hDoc, CXFA_Submit* submit) = 0; 253 virtual bool GetGlobalProperty(CXFA_FFDoc* hDoc, 254 const ByteStringView& szPropName, 255 CFXJSE_Value* pValue) = 0; 256 virtual bool SetGlobalProperty(CXFA_FFDoc* hDoc, 257 const ByteStringView& szPropName, 258 CFXJSE_Value* pValue) = 0; 259 virtual RetainPtr<IFX_SeekableReadStream> OpenLinkedFile( 260 CXFA_FFDoc* hDoc, 261 const WideString& wsLink) = 0; 262 }; 263 264 class IXFA_WidgetIterator { 265 public: 266 virtual ~IXFA_WidgetIterator() {} 267 268 virtual void Reset() = 0; 269 virtual CXFA_FFWidget* MoveToFirst() = 0; 270 virtual CXFA_FFWidget* MoveToLast() = 0; 271 virtual CXFA_FFWidget* MoveToNext() = 0; 272 virtual CXFA_FFWidget* MoveToPrevious() = 0; 273 virtual CXFA_FFWidget* GetCurrentWidget() = 0; 274 virtual bool SetCurrentWidget(CXFA_FFWidget* hWidget) = 0; 275 }; 276 277 #endif // XFA_FXFA_FXFA_H_ 278