Replace XFA_HWIDGET with IXFA_Widget*
[pdfium.git] / xfa / include / fxfa / fxfa.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef FXFA_H_\r
8 #define FXFA_H_\r
9 \r
10 class IFDE_XMLElement;\r
11 class CXFA_Node;\r
12 class CXFA_NodeList;\r
13 class CXFA_WidgetAcc;\r
14 class IFWL_AdapterTimerMgr;\r
15 class IFX_Font;\r
16 class CFX_Graphics;\r
17 class IXFA_AppProvider;\r
18 class IXFA_App;\r
19 class IXFA_FontMgr;\r
20 class IXFA_DocProvider;\r
21 class IXFA_DocHandler;\r
22 class IXFA_DocView;\r
23 class IXFA_PageViewRender;\r
24 class IXFA_PageView;\r
25 class IXFA_WidgetHandler;\r
26 class IXFA_WidgetIterator;\r
27 class IXFA_MenuHandler;\r
28 class IXFA_ChecksumContext;\r
29 class IXFA_WidgetAccIterator;\r
30 \r
31 class IXFA_Doc {\r
32 public:\r
33     virtual ~IXFA_Doc() { }\r
34 protected:\r
35     IXFA_Doc() { }\r
36 };\r
37 \r
38
39 class IXFA_Widget {\r
40 public:\r
41     virtual ~IXFA_Widget() { }\r
42 protected:\r
43     IXFA_Widget() { }\r
44 };\r
45 \r
46
47 #include "fxfa_basic.h"\r
48 #include "fxfa_widget.h"\r
49 #define XFA_MBICON_Error        0\r
50 #define XFA_MBICON_Warning      1\r
51 #define XFA_MBICON_Question     2\r
52 #define XFA_MBICON_Status       3\r
53 #define XFA_MB_OK                       0\r
54 #define XFA_MB_OKCancel         1\r
55 #define XFA_MB_YesNo            2\r
56 #define XFA_MB_YesNoCancel      3\r
57 #define XFA_IDOK                        1\r
58 #define XFA_IDCancel            2\r
59 #define XFA_IDNo                        3\r
60 #define XFA_IDYes                       4\r
61 #define XFA_IDS_ValidateFailed                                  1\r
62 #define XFA_IDS_CalcOverride                                    2\r
63 #define XFA_IDS_ModifyField                                             3\r
64 #define XFA_IDS_NotModifyField                                  4\r
65 #define XFA_IDS_AppName                                                 5\r
66 #define XFA_IDS_ImageFilter                                             6\r
67 #define XFA_IDS_UNKNOW_CATCHED                                  7\r
68 #define XFA_IDS_Unable_TO_SET                                   8\r
69 #define XFA_IDS_VALUE_EXCALMATORY                               9\r
70 #define XFA_IDS_INVALID_ENUM_VALUE                              10\r
71 #define XFA_IDS_UNSUPPORT_METHOD                                11\r
72 #define XFA_IDS_UNSUPPORT_PROP                                  12\r
73 #define XFA_IDS_INVAlID_PROP_SET                                13\r
74 #define XFA_IDS_NOT_DEFAUL_VALUE                                14\r
75 #define XFA_IDS_UNABLE_SET_LANGUAGE                             15\r
76 #define XFA_IDS_UNABLE_SET_NUMPAGES                             16\r
77 #define XFA_IDS_UNABLE_SET_PLATFORM                             17\r
78 #define XFA_IDS_UNABLE_SET_VALIDATIONENABLE             18\r
79 #define XFA_IDS_UNABLE_SET_VARIATION                    19\r
80 #define XFA_IDS_UNABLE_SET_VERSION                              20\r
81 #define XFA_IDS_UNABLE_SET_READY                                21\r
82 #define XFA_IDS_NUMBER_OF_OCCUR                                 22\r
83 #define XFA_IDS_UNABLE_SET_CLASS_NAME                   23\r
84 #define XFA_IDS_UNABLE_SET_LENGTH_VALUE                 24\r
85 #define XFA_IDS_UNSUPPORT_CHAR                              25\r
86 #define XFA_IDS_BAD_SUFFIX                                              26\r
87 #define XFA_IDS_EXPECTED_IDENT                                  27\r
88 #define XFA_IDS_EXPECTED_STRING                                 28\r
89 #define XFA_IDS_INVALIDATE_CHAR                                 29\r
90 #define XFA_IDS_REDEFINITION                                    30\r
91 #define XFA_IDS_INVALIDATE_TOKEN                                31\r
92 #define XFA_IDS_INVALIDATE_EXPRESSION                   32\r
93 #define XFA_IDS_UNDEFINE_IDENTIFIER                             33\r
94 #define XFA_IDS_INVALIDATE_LEFTVALUE                    34\r
95 #define XFA_IDS_COMPILER_ERROR                                  35\r
96 #define XFA_IDS_CANNOT_MODIFY_VALUE                             36\r
97 #define XFA_IDS_ERROR_PARAMETERS                                37\r
98 #define XFA_IDS_EXPECT_ENDIF                                    38\r
99 #define XFA_IDS_UNEXPECTED_EXPRESSION                   39\r
100 #define XFA_IDS_CONDITION_IS_NULL                               40\r
101 #define XFA_IDS_ILLEGALBREAK                                    41\r
102 #define XFA_IDS_ILLEGALCONTINUE                                 42\r
103 #define XFA_IDS_EXPECTED_OPERATOR                               43\r
104 #define XFA_IDS_DIVIDE_ZERO                                             44\r
105 #define XFA_IDS_CANNOT_COVERT_OBJECT                    45\r
106 #define XFA_IDS_NOT_FOUND_CONTAINER                             46\r
107 #define XFA_IDS_NOT_FOUND_PROPERTY                              47\r
108 #define XFA_IDS_NOT_FOUND_METHOD                                48\r
109 #define XFA_IDS_NOT_FOUND_CONST                                 49\r
110 #define XFA_IDS_NOT_ASSIGN_OBJECT                               50\r
111 #define XFA_IDS_IVALIDATE_INSTRUCTION                   51\r
112 #define XFA_IDS_EXPECT_NUMBER                                   52\r
113 #define XFA_IDS_VALIDATE_OUT_ARRAY                              53\r
114 #define XFA_IDS_CANNOT_ASSIGN_IDENT                             54\r
115 #define XFA_IDS_NOT_FOUNT_FUNCTION                              55\r
116 #define XFA_IDS_NOT_ARRAY                                               56\r
117 #define XFA_IDS_OUT_ARRAY                                               57\r
118 #define XFA_IDS_NOT_SUPPORT_CALC                                58\r
119 #define XFA_IDS_ARGUMENT_NOT_ARRAY                              59\r
120 #define XFA_IDS_ARGUMENT_EXPECT_CONTAINER               60\r
121 #define XFA_IDS_ACCESS_PROPERTY_IN_NOT_OBJECT   61\r
122 #define XFA_IDS_FUNCTION_IS_BUILDIN                             62\r
123 #define XFA_IDS_ERROR_MSG                                               63\r
124 #define XFA_IDS_INDEX_OUT_OF_BOUNDS                             64\r
125 #define XFA_IDS_INCORRECT_NUMBER_OF_METHOD              65\r
126 #define XFA_IDS_ARGUMENT_MISMATCH                               66\r
127 #define XFA_IDS_INVALID_ENUMERATE                               67\r
128 #define XFA_IDS_INVALID_APPEND                                  68\r
129 #define XFA_IDS_SOM_EXPECTED_LIST                               69\r
130 #define XFA_IDS_NOT_HAVE_PROPERTY                               70\r
131 #define XFA_IDS_INVALID_NODE_TYPE                               71\r
132 #define XFA_IDS_VIOLATE_BOUNDARY                                72\r
133 #define XFA_IDS_SERVER_DENY                                             73\r
134 #define XFA_IDS_StringWeekDay_Sun                               74\r
135 #define XFA_IDS_StringWeekDay_Mon                               75\r
136 #define XFA_IDS_StringWeekDay_Tue                               76\r
137 #define XFA_IDS_StringWeekDay_Wed                               77\r
138 #define XFA_IDS_StringWeekDay_Thu                               78\r
139 #define XFA_IDS_StringWeekDay_Fri                               79\r
140 #define XFA_IDS_StringWeekDay_Sat                               80\r
141 #define XFA_IDS_StringMonth_Jan                                 81\r
142 #define XFA_IDS_StringMonth_Feb                                 82\r
143 #define XFA_IDS_StringMonth_March                               83\r
144 #define XFA_IDS_StringMonth_April                               84\r
145 #define XFA_IDS_StringMonth_May                                 85\r
146 #define XFA_IDS_StringMonth_June                                86\r
147 #define XFA_IDS_StringMonth_July                                87\r
148 #define XFA_IDS_StringMonth_Aug                                 88\r
149 #define XFA_IDS_StringMonth_Sept                                89\r
150 #define XFA_IDS_StringMonth_Oct                                 90\r
151 #define XFA_IDS_StringMonth_Nov                                 91\r
152 #define XFA_IDS_StringMonth_Dec                                 92\r
153 #define XFA_IDS_String_Today                                    93\r
154 #define XFA_IDS_ValidateLimit                                   94\r
155 #define XFA_IDS_ValidateNullWarning                             95\r
156 #define XFA_IDS_ValidateNullError                               96\r
157 #define XFA_IDS_ValidateWarning                                 97\r
158 #define XFA_IDS_ValidateError                                   98\r
159 #define XFA_IDS_ValidateNumberError                             99\r
160 \r
161 // Probably should be called IXFA_AppDelegate.\r
162 class IXFA_AppProvider\r
163 {\r
164 public:\r
165     virtual ~IXFA_AppProvider() { }\r
166 \r
167     /**\r
168      * Specifies the name of the client application in which a form currently exists. Such as Exchange-Pro.\r
169      */\r
170     virtual void SetAppType(const CFX_WideStringC& wsAppType) = 0;\r
171     virtual void GetAppType(CFX_WideString &wsAppType) = 0;\r
172     virtual void SetFoxitAppType(const CFX_WideStringC& wsFoxitAppType) { }\r
173     virtual void GetFoxitAppType(CFX_WideString &wsFoxitAppType) {\r
174         wsFoxitAppType.Empty();\r
175     }\r
176 \r
177     /**\r
178      * Returns the language of the running host application. Such as zh_CN\r
179      */\r
180     virtual void GetLanguage(CFX_WideString &wsLanguage) = 0;\r
181 \r
182     /**\r
183      * Returns the platform of the machine running the script. Such as WIN\r
184      */\r
185     virtual void GetPlatform(CFX_WideString &wsPlatform) = 0;\r
186 \r
187     /**\r
188      * Indicates the packaging of the application that is running the script. Such as Full\r
189      */\r
190     virtual void GetVariation(CFX_WideString &wsVariation) = 0;\r
191 \r
192     /**\r
193      * Indicates the version number of the current application. Such as 9\r
194      */\r
195     virtual void GetVersion(CFX_WideString &wsVersion) = 0;\r
196     virtual void GetFoxitVersion(CFX_WideString &wsFoxitVersion) {\r
197         wsFoxitVersion.Empty();\r
198     }\r
199 \r
200     /**\r
201      * Get application name, such as Phantom.\r
202      */\r
203     virtual void GetAppName(CFX_WideString& wsName) = 0;\r
204     virtual void GetFoxitAppName(CFX_WideString& wsFoxitName) {\r
205         wsFoxitName.Empty();\r
206     }\r
207 \r
208     /**\r
209      * Causes the system to play a sound.\r
210      * @param[in] dwType The system code for the appropriate sound.0 (Error)1 (Warning)2 (Question)3 (Status)4 (Default)\r
211      */\r
212     virtual void Beep(FX_DWORD dwType) = 0;\r
213 \r
214     /**\r
215      * Displays a message box.\r
216      * @param[in] dwIconType    Icon type, refer to XFA_MBICON.\r
217      * @param[in] dwButtonType  Button type, refer to XFA_MESSAGEBUTTON.\r
218      * @return A valid integer representing the value of the button pressed by the user, refer to XFA_ID.\r
219      */\r
220     virtual FX_INT32 MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle = FX_WSTRC(L""),\r
221                             FX_DWORD dwIconType = 0, FX_DWORD dwButtonType = 0) = 0;\r
222 \r
223     /**\r
224      * Get a response from the user.\r
225      * @param[in] bMark - Mask the user input with * (asterisks) when true,\r
226      */\r
227     virtual void Response(CFX_WideString &wsAnswer, FX_WSTR wsQuestion, FX_WSTR wsTitle = FX_WSTRC(L""),\r
228                           FX_WSTR wsDefaultAnswer = FX_WSTRC(L""), FX_BOOL bMark = TRUE) = 0;\r
229 \r
230     virtual FX_INT32 GetDocumentCountInBatch() = 0;\r
231     virtual FX_INT32 GetCurDocumentInBatch() = 0;\r
232 \r
233     /**\r
234      * Download something from somewhere.\r
235      * @param[in] wsURL - http, ftp, such as "http://www.w3.org/TR/REC-xml-names/".\r
236      */\r
237     virtual IFX_FileRead* DownloadURL(FX_WSTR wsURL) = 0;\r
238 \r
239     /**\r
240      * POST data to the given url.\r
241      * @param[in] wsURL         the URL being uploaded.\r
242      * @param[in] wsData        the data being uploaded.\r
243      * @param[in] wsContentType the content type of data including text/html, text/xml, text/plain, multipart/form-data,\r
244      *                          application/x-www-form-urlencoded, application/octet-stream, any valid MIME type.\r
245      * @param[in] wsEncode      the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding\r
246      * @param[in] wsHeader      any additional HTTP headers to be included in the post.\r
247      * @param[out] wsResponse   decoded response from server.\r
248      * @return TRUE Server permitted the post request, FALSE otherwise.\r
249      */\r
250     virtual FX_BOOL PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType,\r
251                                    FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse) = 0;\r
252 \r
253     /**\r
254      * PUT data to the given url.\r
255      * @param[in] wsURL         the URL being uploaded.\r
256      * @param[in] wsData            the data being uploaded.\r
257      * @param[in] wsEncode      the encode of data including UTF-8, UTF-16, ISO8859-1, any recognized [IANA]character encoding\r
258      * @return TRUE Server permitted the post request, FALSE otherwise.\r
259      */\r
260     virtual FX_BOOL     PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode) = 0;\r
261 \r
262     virtual void LoadString(FX_INT32 iStringID, CFX_WideString &wsString) = 0;\r
263     virtual FX_BOOL ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen = TRUE) = 0;\r
264     virtual IFWL_AdapterTimerMgr* GetTimerMgr() = 0;\r
265 };\r
266 class IXFA_FontMgr\r
267 {\r
268 public:\r
269     static IXFA_FontMgr* CreateDefault();\r
270     virtual ~IXFA_FontMgr();\r
271 \r
272     virtual IFX_Font*   GetFont(IXFA_Doc* hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF) = 0;\r
273     virtual IFX_Font*   GetDefaultFont(IXFA_Doc* hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF) = 0;\r
274 };\r
275 class IXFA_App\r
276 {\r
277 public:\r
278     static IXFA_App* Create(IXFA_AppProvider* pProvider);\r
279     virtual ~IXFA_App();\r
280 \r
281     virtual IXFA_DocHandler*    GetDocHandler() = 0;\r
282     virtual IXFA_Doc*                   CreateDoc(IXFA_DocProvider* pProvider, IFX_FileRead* pStream, FX_BOOL bTakeOverFile = TRUE) = 0;\r
283     virtual IXFA_Doc*                   CreateDoc(IXFA_DocProvider* pProvider, CPDF_Document* pPDFDoc) = 0;\r
284     virtual     IXFA_AppProvider*       GetAppProvider() = 0;\r
285     virtual void                                SetDefaultFontMgr(IXFA_FontMgr* pFontMgr) = 0;\r
286     virtual IXFA_MenuHandler*   GetMenuHandler() = 0;\r
287 };\r
288 class IXFA_MenuHandler\r
289 {\r
290 public:\r
291     virtual ~IXFA_MenuHandler() { }\r
292 \r
293     virtual FX_BOOL             CanCopy(IXFA_Widget* hWidget) = 0;\r
294     virtual FX_BOOL             CanCut(IXFA_Widget* hWidget) = 0;\r
295     virtual FX_BOOL             CanPaste(IXFA_Widget* hWidget) = 0;\r
296     virtual FX_BOOL             CanSelectAll(IXFA_Widget* hWidget) = 0;\r
297     virtual FX_BOOL             CanDelete(IXFA_Widget* hWidget) = 0;\r
298     virtual FX_BOOL             CanDeSelect(IXFA_Widget* hWidget) = 0;\r
299     virtual FX_BOOL             Copy(IXFA_Widget* hWidget, CFX_WideString &wsText) = 0;\r
300     virtual FX_BOOL             Cut(IXFA_Widget* hWidget, CFX_WideString &wsText) = 0;\r
301     virtual FX_BOOL             Paste(IXFA_Widget* hWidget, const CFX_WideString &wsText) = 0;\r
302     virtual FX_BOOL             SelectAll(IXFA_Widget* hWidget) = 0;\r
303     virtual FX_BOOL             Delete(IXFA_Widget* hWidget) = 0;\r
304     virtual FX_BOOL             DeSelect(IXFA_Widget* hWidget) = 0;\r
305     virtual FX_BOOL             CanUndo(IXFA_Widget* hWidget) = 0;\r
306     virtual FX_BOOL             CanRedo(IXFA_Widget* hWidget) = 0;\r
307     virtual FX_BOOL             Undo(IXFA_Widget* hWidget) = 0;\r
308     virtual FX_BOOL             Redo(IXFA_Widget* hWidget) = 0;\r
309     virtual FX_BOOL             GetSuggestWords(IXFA_Widget* hWidget, CFX_PointF pointf, CFX_ByteStringArray &sSuggest) = 0;\r
310     virtual FX_BOOL             ReplaceSpellCheckWord(IXFA_Widget* hWidget, CFX_PointF pointf, FX_BSTR bsReplace) = 0;\r
311 };\r
312 #define XFA_INVALIDATE_AllPages         0x00000000\r
313 #define XFA_INVALIDATE_CurrentPage      0x00000001\r
314 #define XFA_PRINTOPT_ShowDialog         0x00000001\r
315 #define XFA_PRINTOPT_CanCancel          0x00000002\r
316 #define XFA_PRINTOPT_ShrinkPage         0x00000004\r
317 #define XFA_PRINTOPT_AsImage            0x00000008\r
318 #define XFA_PRINTOPT_ReverseOrder       0x00000010\r
319 #define XFA_PRINTOPT_PrintAnnot         0x00000020\r
320 #define  XFA_PAGEVIEWEVENT_PostAdded            1\r
321 #define  XFA_PAGEVIEWEVENT_PostRemoved          3\r
322 #define  XFA_WIDGETEVENT_PostAdded                      2\r
323 #define  XFA_WIDGETEVENT_PreRemoved                     3\r
324 #define  XFA_WIDGETEVENT_PostContentChanged     6\r
325 #define  XFA_WIDGETEVENT_ListItemRemoved        7\r
326 #define  XFA_WIDGETEVENT_ListItemAdded          8\r
327 #define  XFA_WIDGETEVENT_AccessChanged          9\r
328 class IXFA_DocProvider\r
329 {\r
330 public:\r
331     virtual ~IXFA_DocProvider() { }\r
332 \r
333     virtual void                SetChangeMark(IXFA_Doc* hDoc) = 0;\r
334     virtual void                InvalidateRect(IXFA_PageView* pPageView, const CFX_RectF& rt, FX_DWORD dwFlags = 0) = 0;\r
335     virtual void                DisplayCaret(IXFA_Widget* hWidget, FX_BOOL bVisible, const CFX_RectF* pRtAnchor) = 0;\r
336     virtual FX_BOOL             GetPopupPos(IXFA_Widget* hWidget, FX_FLOAT fMinPopup, FX_FLOAT fMaxPopup,\r
337                                     const CFX_RectF &rtAnchor, CFX_RectF &rtPopup) = 0;\r
338     virtual FX_BOOL             PopupMenu(IXFA_Widget* hWidget, CFX_PointF ptPopup, const CFX_RectF* pRectExclude = NULL) = 0;\r
339     virtual void                PageViewEvent(IXFA_PageView* pPageView, FX_DWORD dwFlags) = 0;\r
340     virtual void                WidgetEvent(IXFA_Widget* hWidget, CXFA_WidgetAcc* pWidgetData, FX_DWORD dwEvent, FX_LPVOID pParam = NULL, FX_LPVOID pAdditional = NULL) = 0;\r
341     virtual FX_BOOL             RenderCustomWidget(IXFA_Widget* hWidget, CFX_Graphics* pGS, CFX_Matrix* pMatrix, const CFX_RectF& rtUI)\r
342     {\r
343         return FALSE;\r
344     }\r
345     virtual     FX_INT32        CountPages(IXFA_Doc* hDoc) = 0;\r
346     virtual     FX_INT32        GetCurrentPage(IXFA_Doc* hDoc) = 0;\r
347     virtual void                SetCurrentPage(IXFA_Doc* hDoc, FX_INT32 iCurPage) = 0;\r
348     virtual FX_BOOL             IsCalculationsEnabled(IXFA_Doc* hDoc) = 0;\r
349     virtual void                SetCalculationsEnabled(IXFA_Doc* hDoc, FX_BOOL bEnabled) = 0;\r
350     virtual void                GetTitle(IXFA_Doc* hDoc, CFX_WideString &wsTitle) = 0;\r
351     virtual void                SetTitle(IXFA_Doc* hDoc, FX_WSTR wsTitle) = 0;\r
352     virtual void                ExportData(IXFA_Doc* hDoc, FX_WSTR wsFilePath, FX_BOOL bXDP = TRUE) = 0;\r
353     virtual void                ImportData(IXFA_Doc* hDoc, FX_WSTR wsFilePath) = 0;\r
354     virtual void                GotoURL(IXFA_Doc* hDoc, FX_WSTR bsURL, FX_BOOL bAppend = TRUE) = 0;\r
355     virtual FX_BOOL             IsValidationsEnabled(IXFA_Doc* hDoc) = 0;\r
356     virtual void                SetValidationsEnabled(IXFA_Doc* hDoc, FX_BOOL bEnabled) = 0;\r
357     virtual void                SetFocusWidget(IXFA_Doc* hDoc, IXFA_Widget* hWidget) = 0;\r
358     virtual void                Print(IXFA_Doc* hDoc, FX_INT32 nStartPage, FX_INT32 nEndPage, FX_DWORD dwOptions) = 0;\r
359     virtual FX_INT32                    AbsPageCountInBatch(IXFA_Doc* hDoc) = 0;\r
360     virtual FX_INT32                    AbsPageInBatch(IXFA_Doc* hDoc, IXFA_Widget* hWidget) = 0;\r
361     virtual FX_INT32                    SheetCountInBatch(IXFA_Doc* hDoc) = 0;\r
362     virtual FX_INT32                    SheetInBatch(IXFA_Doc* hDoc, IXFA_Widget* hWidget) = 0;\r
363     virtual FX_INT32                    Verify(IXFA_Doc* hDoc, CXFA_Node* pSigNode, FX_BOOL bUsed = TRUE)\r
364     {\r
365         return 0;\r
366     }\r
367     virtual FX_BOOL                             Sign(IXFA_Doc* hDoc, CXFA_NodeList* pNodeList, FX_WSTR wsExpression, FX_WSTR wsXMLIdent, FX_WSTR wsValue = FX_WSTRC(L"open"), FX_BOOL bUsed = TRUE)\r
368     {\r
369         return 0;\r
370     }\r
371     virtual CXFA_NodeList*              Enumerate(IXFA_Doc* hDoc)\r
372     {\r
373         return 0;\r
374     }\r
375     virtual FX_BOOL                             Clear(IXFA_Doc* hDoc, CXFA_Node* pSigNode, FX_BOOL bCleared = TRUE)\r
376     {\r
377         return 0;\r
378     }\r
379     virtual void                GetURL(IXFA_Doc* hDoc, CFX_WideString &wsDocURL) = 0;\r
380     virtual FX_ARGB             GetHighlightColor(IXFA_Doc* hDoc) = 0;\r
381     virtual void                AddDoRecord(IXFA_Widget* hWidget) = 0;\r
382 \r
383     virtual FX_BOOL             SubmitData(IXFA_Doc* hDoc, CXFA_Submit submit) = 0;\r
384     virtual FX_BOOL             CheckWord(IXFA_Doc* hDoc, FX_BSTR sWord) = 0;\r
385     virtual FX_BOOL             GetSuggestWords(IXFA_Doc* hDoc, FX_BSTR sWord, CFX_ByteStringArray& sSuggest) = 0;\r
386     virtual FX_BOOL             GetPDFScriptObject(IXFA_Doc* hDoc, FX_BSTR utf8Name, FXJSE_HVALUE hValue) = 0;\r
387     virtual FX_BOOL             GetGlobalProperty(IXFA_Doc* hDoc, FX_BSTR szPropName, FXJSE_HVALUE hValue) = 0;\r
388     virtual FX_BOOL             SetGlobalProperty(IXFA_Doc* hDoc, FX_BSTR szPropName, FXJSE_HVALUE hValue) = 0;\r
389     virtual CPDF_Document*  OpenPDF(IXFA_Doc* hDoc, IFX_FileRead* pFile, FX_BOOL bTakeOverFile) = 0;\r
390     virtual IFX_FileRead*       OpenLinkedFile(IXFA_Doc* hDoc, const CFX_WideString& wsLink) = 0;\r
391 };\r
392 #define XFA_DOCVIEW_View                0x00000000\r
393 #define XFA_DOCVIEW_MasterPage  0x00000001\r
394 #define XFA_DOCVIEW_Design              0x00000002\r
395 #define XFA_DOCTYPE_Dynamic             0\r
396 #define XFA_DOCTYPE_Static              1\r
397 #define XFA_DOCTYPE_XDP                 2\r
398 #define XFA_PARSESTATUS_StatusErr       -3\r
399 #define XFA_PARSESTATUS_StreamErr       -2\r
400 #define XFA_PARSESTATUS_SyntaxErr       -1\r
401 #define XFA_PARSESTATUS_Ready           0\r
402 #define XFA_PARSESTATUS_Done            100\r
403 class IXFA_DocHandler\r
404 {\r
405 public:\r
406     virtual ~IXFA_DocHandler() { }\r
407 \r
408     virtual void                                ReleaseDoc(IXFA_Doc* hDoc) = 0;\r
409     virtual IXFA_DocProvider*   GetDocProvider(IXFA_Doc* hDoc) = 0;\r
410 \r
411     virtual FX_DWORD                    GetDocType(IXFA_Doc* hDoc) = 0;\r
412     virtual     FX_INT32                        StartLoad(IXFA_Doc* hDoc) = 0;\r
413     virtual FX_INT32                    DoLoad(IXFA_Doc* hDoc, IFX_Pause *pPause = NULL) = 0;\r
414     virtual void                                StopLoad(IXFA_Doc* hDoc) = 0;\r
415 \r
416     virtual IXFA_DocView*               CreateDocView(IXFA_Doc* hDoc, FX_DWORD dwView = 0) = 0;\r
417 \r
418     virtual FX_INT32                    CountPackages(IXFA_Doc* hDoc) = 0;\r
419     virtual     void                            GetPackageName(IXFA_Doc* hDoc, FX_INT32 iPackage, CFX_WideStringC &wsPackage) = 0;\r
420 \r
421     virtual FX_BOOL                             SavePackage(IXFA_Doc* hDoc, FX_WSTR wsPackage, IFX_FileWrite* pFile, IXFA_ChecksumContext *pCSContext = NULL) = 0;\r
422     virtual FX_BOOL                             CloseDoc(IXFA_Doc* hDoc) = 0;\r
423 \r
424     virtual FX_BOOL                             ImportData(IXFA_Doc* hDoc, IFX_FileRead* pStream, FX_BOOL bXDP = TRUE) = 0;\r
425     virtual     void                            SetJSERuntime(IXFA_Doc* hDoc, FXJSE_HRUNTIME hRuntime) = 0;\r
426     virtual FXJSE_HVALUE                GetXFAScriptObject(IXFA_Doc* hDoc) = 0;\r
427     virtual XFA_ATTRIBUTEENUM   GetRestoreState(IXFA_Doc* hDoc) = 0;\r
428     virtual FX_BOOL                             RunDocScript(IXFA_Doc* hDoc, XFA_SCRIPTTYPE eScriptType, FX_WSTR wsScript, FXJSE_HVALUE hRetValue, FXJSE_HVALUE hThisObject) = 0;\r
429 };\r
430 enum XFA_EVENTTYPE {\r
431     XFA_EVENT_Click,\r
432     XFA_EVENT_Change,\r
433     XFA_EVENT_DocClose,\r
434     XFA_EVENT_DocReady,\r
435     XFA_EVENT_Enter,\r
436     XFA_EVENT_Exit,\r
437     XFA_EVENT_Full,\r
438     XFA_EVENT_IndexChange,\r
439     XFA_EVENT_Initialize,\r
440     XFA_EVENT_MouseDown,\r
441     XFA_EVENT_MouseEnter,\r
442     XFA_EVENT_MouseExit,\r
443     XFA_EVENT_MouseUp,\r
444     XFA_EVENT_PostExecute,\r
445     XFA_EVENT_PostOpen,\r
446     XFA_EVENT_PostPrint,\r
447     XFA_EVENT_PostSave,\r
448     XFA_EVENT_PostSign,\r
449     XFA_EVENT_PostSubmit,\r
450     XFA_EVENT_PreExecute,\r
451     XFA_EVENT_PreOpen,\r
452     XFA_EVENT_PrePrint,\r
453     XFA_EVENT_PreSave,\r
454     XFA_EVENT_PreSign,\r
455     XFA_EVENT_PreSubmit,\r
456     XFA_EVENT_Ready,\r
457     XFA_EVENT_InitCalculate,\r
458     XFA_EVENT_InitVariables,\r
459     XFA_EVENT_Calculate,\r
460     XFA_EVENT_Validate,\r
461     XFA_EVENT_Unknown,\r
462 };\r
463 #define XFA_VALIDATE_preSubmit          1\r
464 #define XFA_VALIDATE_prePrint           2\r
465 #define XFA_VALIDATE_preExecute         3\r
466 #define XFA_VALIDATE_preSave            4\r
467 class CXFA_EventParam\r
468 {\r
469 public:\r
470     CXFA_EventParam()\r
471     {\r
472         m_pTarget = NULL;\r
473         m_eType = XFA_EVENT_Unknown;\r
474         m_wsResult.Empty();\r
475         Reset();\r
476     }\r
477     void Reset()\r
478     {\r
479         m_wsChange.Empty();\r
480         m_iCommitKey = 0;\r
481         m_wsFullText.Empty();\r
482         m_bKeyDown = FALSE;\r
483         m_bModifier = FALSE;\r
484         m_wsNewContentType.Empty();\r
485         m_wsNewText.Empty();\r
486         m_wsPrevContentType.Empty();\r
487         m_wsPrevText.Empty();\r
488         m_bReenter = FALSE;\r
489         m_iSelEnd = 0;\r
490         m_iSelStart = 0;\r
491         m_bShift = FALSE;\r
492         m_wsSoapFaultCode.Empty();\r
493         m_wsSoapFaultString.Empty();\r
494         m_bIsFormReady = FALSE;\r
495         m_iValidateActivities = XFA_VALIDATE_preSubmit;\r
496     }\r
497     CXFA_WidgetAcc*     m_pTarget;\r
498     XFA_EVENTTYPE       m_eType;\r
499     CFX_WideString      m_wsResult;\r
500     FX_BOOL                     m_bCancelAction;\r
501     FX_INT32            m_iCommitKey;\r
502     FX_BOOL                     m_bKeyDown;\r
503     FX_BOOL                     m_bModifier;\r
504     FX_BOOL                     m_bReenter;\r
505     FX_INT32            m_iSelEnd;\r
506     FX_INT32            m_iSelStart;\r
507     FX_BOOL                     m_bShift;\r
508     CFX_WideString      m_wsChange;\r
509     CFX_WideString      m_wsFullText;\r
510     CFX_WideString      m_wsNewContentType;\r
511     CFX_WideString      m_wsNewText;\r
512     CFX_WideString      m_wsPrevContentType;\r
513     CFX_WideString      m_wsPrevText;\r
514     CFX_WideString      m_wsSoapFaultCode;\r
515     CFX_WideString      m_wsSoapFaultString;\r
516     FX_BOOL                     m_bIsFormReady;\r
517     FX_INT32            m_iValidateActivities;\r
518 };\r
519 #define XFA_EVENTERROR_Sucess           1\r
520 #define XFA_EVENTERROR_Error            -1\r
521 #define XFA_EVENTERROR_NotExist         0\r
522 #define XFA_EVENTERROR_Disabled         2\r
523 enum XFA_WIDGETORDER {\r
524     XFA_WIDGETORDER_PreOrder,\r
525 };\r
526 class IXFA_DocView\r
527 {\r
528 public:\r
529     virtual ~IXFA_DocView() { }\r
530 \r
531     virtual IXFA_Doc*                   GetDoc() = 0;\r
532     virtual     FX_INT32                        StartLayout(FX_INT32 iStartPage = 0) = 0;\r
533     virtual FX_INT32                    DoLayout(IFX_Pause *pPause = NULL) = 0;\r
534     virtual void                                StopLayout() = 0;\r
535 \r
536     virtual FX_INT32                    GetLayoutStatus() = 0;\r
537     virtual     void                            UpdateDocView() = 0;\r
538     virtual FX_INT32                    CountPageViews() = 0;\r
539     virtual IXFA_PageView*              GetPageView(FX_INT32 nIndex) = 0;\r
540     virtual IXFA_Widget*                        GetWidgetByName(FX_WSTR wsName) = 0;\r
541     virtual CXFA_WidgetAcc*             GetWidgetAccByName(FX_WSTR wsName) = 0;\r
542     virtual void                                ResetWidgetData(CXFA_WidgetAcc* pWidgetAcc = NULL) = 0;\r
543     virtual FX_INT32                    ProcessWidgetEvent(CXFA_EventParam* pParam, CXFA_WidgetAcc* pWidgetAcc = NULL) = 0;\r
544     virtual IXFA_WidgetHandler* GetWidgetHandler() = 0;\r
545     virtual IXFA_WidgetIterator*        CreateWidgetIterator() = 0;\r
546     virtual IXFA_WidgetAccIterator* CreateWidgetAccIterator(XFA_WIDGETORDER eOrder = XFA_WIDGETORDER_PreOrder) = 0;\r
547     virtual IXFA_Widget*                        GetFocusWidget() = 0;\r
548     virtual void                                KillFocus() = 0;\r
549     virtual FX_BOOL                             SetFocus(IXFA_Widget* hWidget) = 0;\r
550 };\r
551 #define XFA_TRAVERSEWAY_Tranvalse               0x0001\r
552 #define XFA_TRAVERSEWAY_Form                    0x0002\r
553 #define XFA_WIDGETFILTER_Visible                0x0001\r
554 #define XFA_WIDGETFILTER_Viewable               0x0010\r
555 #define XFA_WIDGETFILTER_Printable              0x0020\r
556 #define XFA_WIDGETFILTER_Field                  0x0100\r
557 #define XFA_WIDGETFILTER_AllType                0x0F00\r
558 class IXFA_PageView\r
559 {\r
560 public:\r
561     virtual ~IXFA_PageView() { }\r
562 \r
563     virtual IXFA_DocView*       GetDocView() = 0;\r
564     virtual FX_INT32            GetPageViewIndex() = 0;\r
565     virtual void                        GetPageViewRect(CFX_RectF &rtPage) = 0;\r
566 \r
567     virtual void                        GetDisplayMatrix(CFX_Matrix &mt, const CFX_Rect &rtDisp, FX_INT32 iRotate) = 0;\r
568 \r
569     virtual FX_INT32            LoadPageView(IFX_Pause *pPause = NULL) = 0;\r
570     virtual void                        UnloadPageView() = 0;\r
571     virtual IXFA_Widget*                GetWidgetByPos(FX_FLOAT fx, FX_FLOAT fy) = 0;\r
572     virtual IXFA_WidgetIterator* CreateWidgetIterator(FX_DWORD dwTraverseWay = XFA_TRAVERSEWAY_Form, FX_DWORD dwWidgetFilter = XFA_WIDGETFILTER_Visible | XFA_WIDGETFILTER_Viewable | XFA_WIDGETFILTER_AllType) = 0;\r
573 };\r
574 class CXFA_RenderOptions\r
575 {\r
576 public:\r
577     CXFA_RenderOptions()\r
578         : m_bPrint(FALSE)\r
579         , m_bHighlight(TRUE)\r
580     {\r
581     }\r
582     FX_BOOL                     m_bPrint;\r
583     FX_BOOL                     m_bHighlight;\r
584 };\r
585 #define XFA_RENDERSTATUS_Ready                  1\r
586 #define XFA_RENDERSTATUS_ToBeContinued  2\r
587 #define XFA_RENDERSTATUS_Done                   3\r
588 #define XFA_RENDERSTATUS_Failed                 -1\r
589 class IXFA_RenderContext\r
590 {\r
591 public:\r
592     virtual void                Release() = 0;\r
593     virtual FX_INT32    StartRender(IXFA_PageView* pPageView, CFX_Graphics* pGS, const CFX_Matrix& pMatrix, const CXFA_RenderOptions& options) = 0;\r
594     virtual FX_INT32    DoRender(IFX_Pause* pPause = NULL) = 0;\r
595     virtual     void            StopRender() = 0;\r
596 protected:\r
597     ~IXFA_RenderContext() { }\r
598 };\r
599 IXFA_RenderContext*     XFA_RenderContext_Create();\r
600 enum XFA_WIDGETTYPE {\r
601     XFA_WIDGETTYPE_Barcode,\r
602     XFA_WIDGETTYPE_PushButton,\r
603     XFA_WIDGETTYPE_CheckButton,\r
604     XFA_WIDGETTYPE_RadioButton,\r
605     XFA_WIDGETTYPE_DatetimeEdit,\r
606     XFA_WIDGETTYPE_DecimalField,\r
607     XFA_WIDGETTYPE_NumericField,\r
608     XFA_WIDGETTYPE_Signature,\r
609     XFA_WIDGETTYPE_TextEdit,\r
610     XFA_WIDGETTYPE_DropdownList,\r
611     XFA_WIDGETTYPE_ListBox,\r
612     XFA_WIDGETTYPE_ImageField,\r
613     XFA_WIDGETTYPE_PasswordEdit,\r
614     XFA_WIDGETTYPE_Arc,\r
615     XFA_WIDGETTYPE_Rectangle,\r
616     XFA_WIDGETTYPE_Image,\r
617     XFA_WIDGETTYPE_Line,\r
618     XFA_WIDGETTYPE_Text,\r
619     XFA_WIDGETTYPE_ExcludeGroup,\r
620     XFA_WIDGETTYPE_Subform,\r
621     XFA_WIDGETTYPE_Unknown,\r
622 };\r
623 #define XFA_WIDGETSTATUS_Visible        0x00000001\r
624 #define XFA_WIDGETSTATUS_Invisible      0x00000002\r
625 #define XFA_WIDGETSTATUS_Hidden         0x00000004\r
626 #define XFA_WIDGETSTATUS_Viewable       0x00000010\r
627 #define XFA_WIDGETSTATUS_Printable      0x00000020\r
628 #define XFA_WIDGETSTATUS_Focused        0x00000100\r
629 class IXFA_WidgetHandler\r
630 {\r
631 public:\r
632     virtual ~IXFA_WidgetHandler() { }\r
633 \r
634     virtual IXFA_Widget*                CreateWidget(IXFA_Widget* hParent, XFA_WIDGETTYPE eType, IXFA_Widget* hBefore = NULL) = 0;\r
635     virtual IXFA_PageView*      GetPageView(IXFA_Widget* hWidget) = 0;\r
636     virtual void                        GetRect(IXFA_Widget* hWidget, CFX_RectF &rt) = 0;\r
637     virtual FX_DWORD            GetStatus(IXFA_Widget* hWidget) = 0;\r
638     virtual FX_BOOL                     GetBBox(IXFA_Widget* hWidget, CFX_RectF &rtBox, FX_DWORD dwStatus, FX_BOOL bDrawFocus = FALSE) = 0;\r
639     virtual CXFA_WidgetAcc*     GetDataAcc(IXFA_Widget* hWidget) = 0;\r
640 \r
641     virtual void                        GetName(IXFA_Widget* hWidget, CFX_WideString &wsName, FX_INT32 iNameType = 0) = 0;\r
642     virtual     FX_BOOL                 GetToolTip(IXFA_Widget* hWidget, CFX_WideString &wsToolTip) = 0;\r
643     virtual     void                    SetPrivateData(IXFA_Widget* hWidget, FX_LPVOID module_id, FX_LPVOID pData, PD_CALLBACK_FREEDATA callback) = 0;\r
644     virtual     FX_LPVOID               GetPrivateData(IXFA_Widget* hWidget, FX_LPVOID module_id) = 0;\r
645     virtual FX_BOOL                     OnMouseEnter(IXFA_Widget* hWidget) = 0;\r
646     virtual FX_BOOL                     OnMouseExit(IXFA_Widget* hWidget) = 0;\r
647     virtual FX_BOOL                     OnLButtonDown(IXFA_Widget* hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
648     virtual FX_BOOL                     OnLButtonUp(IXFA_Widget* hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
649     virtual FX_BOOL                     OnLButtonDblClk(IXFA_Widget* hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
650     virtual FX_BOOL                     OnMouseMove(IXFA_Widget* hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
651     virtual FX_BOOL                     OnMouseWheel(IXFA_Widget* hWidget, FX_DWORD dwFlags, FX_SHORT zDelta, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
652     virtual FX_BOOL                     OnRButtonDown(IXFA_Widget* hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
653     virtual FX_BOOL                     OnRButtonUp(IXFA_Widget* hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
654     virtual FX_BOOL                     OnRButtonDblClk(IXFA_Widget* hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
655 \r
656     virtual FX_BOOL                     OnKeyDown(IXFA_Widget* hWidget, FX_DWORD dwKeyCode, FX_DWORD dwFlags) = 0;\r
657     virtual FX_BOOL                     OnKeyUp(IXFA_Widget* hWidget, FX_DWORD dwKeyCode, FX_DWORD dwFlags) = 0;\r
658     virtual FX_BOOL                     OnChar(IXFA_Widget* hWidget, FX_DWORD dwChar, FX_DWORD dwFlags) = 0;\r
659     virtual     FX_DWORD                OnHitTest(IXFA_Widget* hWidget, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
660     virtual FX_BOOL                     OnSetCursor(IXFA_Widget* hWidget, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
661 \r
662     virtual void                        RenderWidget(IXFA_Widget* hWidget, CFX_Graphics* pGS, CFX_Matrix* pMatrix = NULL, FX_BOOL bHighlight = FALSE) = 0;\r
663     virtual FX_BOOL                     HasEvent(CXFA_WidgetAcc* pWidgetAcc, XFA_EVENTTYPE eEventType) = 0;\r
664     virtual FX_INT32            ProcessEvent(CXFA_WidgetAcc* pWidgetAcc, CXFA_EventParam* pParam) = 0;\r
665 };\r
666 class IXFA_WidgetIterator\r
667 {\r
668 public:\r
669     virtual void                                Release() = 0;\r
670     virtual void                                Reset() = 0;\r
671     virtual IXFA_Widget*                        MoveToFirst() = 0;\r
672     virtual IXFA_Widget*                        MoveToLast() = 0;\r
673     virtual     IXFA_Widget*                    MoveToNext() = 0;\r
674     virtual IXFA_Widget*                        MoveToPrevious() = 0;\r
675     virtual     IXFA_Widget*                    GetCurrentWidget() = 0;\r
676     virtual     FX_BOOL                         SetCurrentWidget(IXFA_Widget* hWidget)  = 0;\r
677 protected:\r
678     ~IXFA_WidgetIterator() { }\r
679 };\r
680 class IXFA_WidgetAccIterator\r
681 {\r
682 public:\r
683     virtual void                                Release() = 0;\r
684     virtual void                                Reset() = 0;\r
685     virtual CXFA_WidgetAcc*             MoveToFirst() = 0;\r
686     virtual CXFA_WidgetAcc*             MoveToLast() = 0;\r
687     virtual CXFA_WidgetAcc*             MoveToNext() = 0;\r
688     virtual CXFA_WidgetAcc*             MoveToPrevious() = 0;\r
689     virtual CXFA_WidgetAcc*             GetCurrentWidgetAcc() = 0;\r
690     virtual FX_BOOL                             SetCurrentWidgetAcc(CXFA_WidgetAcc* hWidget) = 0;\r
691     virtual void                                SkipTree() = 0;\r
692 protected:\r
693     ~IXFA_WidgetAccIterator() { }\r
694 };\r
695 IXFA_WidgetAccIterator* XFA_WidgetAccIterator_Create(CXFA_WidgetAcc* pTravelRoot, XFA_WIDGETORDER eOrder = XFA_WIDGETORDER_PreOrder);\r
696 class IXFA_ChecksumContext\r
697 {\r
698 public:\r
699     virtual void                                Release() = 0;\r
700 \r
701     virtual FX_BOOL                             StartChecksum() = 0;\r
702     virtual FX_BOOL                             UpdateChecksum(IFX_FileRead* pSrcFile, FX_FILESIZE offset = 0, size_t size = 0) = 0;\r
703     virtual void                                FinishChecksum() = 0;\r
704     virtual void                                GetChecksum(CFX_ByteString &bsChecksum) = 0;\r
705 protected:\r
706     ~IXFA_ChecksumContext() { }\r
707 };\r
708 IXFA_ChecksumContext*   XFA_Checksum_Create();\r
709 \r
710 #endif  // FXFA_H_\r