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