Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[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 class IXFA_AppProvider\r
148 {\r
149 public:\r
150 \r
151     virtual void                SetAppType(FX_WSTR wsAppType) = 0;\r
152     virtual void                GetAppType(CFX_WideString &wsAppType) = 0;\r
153 \r
154     virtual void                SetFoxitAppType(FX_WSTR wsFoxitAppType)\r
155     {\r
156         return;\r
157     }\r
158     virtual void                GetFoxitAppType(CFX_WideString &wsFoxitAppType)\r
159     {\r
160         return;\r
161     }\r
162 \r
163     virtual void                GetLanguage(CFX_WideString &wsLanguage) = 0;\r
164 \r
165     virtual void                GetPlatform(CFX_WideString &wsPlatform) = 0;\r
166 \r
167     virtual void                GetVariation(CFX_WideString &wsVariation) = 0;\r
168 \r
169     virtual void                GetVersion(CFX_WideString &wsVersion) = 0;\r
170 \r
171     virtual void                GetFoxitVersion(CFX_WideString &wsFoxitVersion)\r
172     {\r
173         return;\r
174     }\r
175 \r
176     virtual void                GetAppName(CFX_WideString& wsName) = 0;\r
177 \r
178     virtual void                GetFoxitAppName(CFX_WideString& wsFoxitName)\r
179     {\r
180         return;\r
181     }\r
182 \r
183     virtual void                Beep(FX_DWORD dwType) = 0;\r
184 \r
185     virtual FX_INT32    MsgBox(FX_WSTR wsMessage, FX_WSTR wsTitle = FX_WSTRC(L""), FX_DWORD dwIconType = 0, FX_DWORD dwButtonType = 0) = 0;\r
186     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
187     virtual FX_INT32    GetDocumentCountInBatch() = 0;\r
188     virtual FX_INT32    GetCurDocumentInBatch() = 0;\r
189     virtual IFX_FileRead* DownloadURL(FX_WSTR wsURL) = 0;\r
190 \r
191     virtual FX_BOOL             PostRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsContentType,\r
192                                        FX_WSTR wsEncode, FX_WSTR wsHeader, CFX_WideString &wsResponse) = 0;\r
193 \r
194     virtual FX_BOOL             PutRequestURL(FX_WSTR wsURL, FX_WSTR wsData, FX_WSTR wsEncode) = 0;\r
195     virtual void                LoadString(FX_INT32 iStringID, CFX_WideString &wsString) = 0;\r
196     virtual     FX_BOOL         ShowFileDialog(FX_WSTR wsTitle, FX_WSTR wsFilter, CFX_WideStringArray &wsPathArr, FX_BOOL bOpen = TRUE) = 0;\r
197     virtual IFWL_AdapterTimerMgr* GetTimerMgr() = 0;;\r
198 };\r
199 class IXFA_FontMgr\r
200 {\r
201 public:\r
202     virtual void                Release() = 0;\r
203     virtual IFX_Font*   GetFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF) = 0;\r
204     virtual IFX_Font*   GetDefaultFont(XFA_HDOC hDoc, FX_WSTR wsFontFamily, FX_DWORD dwFontStyles, FX_WORD wCodePage = 0xFFFF) = 0;\r
205 };\r
206 IXFA_FontMgr*   XFA_GetDefaultFontMgr();\r
207 class IXFA_App\r
208 {\r
209 public:\r
210     static IXFA_App*    Create(IXFA_AppProvider* pProvider);\r
211     virtual void                Release() = 0;\r
212     virtual IXFA_DocHandler*    GetDocHandler() = 0;\r
213     virtual XFA_HDOC                    CreateDoc(IXFA_DocProvider* pProvider, IFX_FileRead* pStream, FX_BOOL bTakeOverFile = TRUE) = 0;\r
214     virtual XFA_HDOC                    CreateDoc(IXFA_DocProvider* pProvider, CPDF_Document* pPDFDoc) = 0;\r
215     virtual     IXFA_AppProvider*       GetAppProvider() = 0;\r
216     virtual void                                SetDefaultFontMgr(IXFA_FontMgr* pFontMgr) = 0;\r
217     virtual IXFA_MenuHandler*   GetMenuHandler() = 0;\r
218 };\r
219 class IXFA_MenuHandler\r
220 {\r
221 public:\r
222     virtual FX_BOOL             CanCopy(XFA_HWIDGET hWidget) = 0;\r
223     virtual FX_BOOL             CanCut(XFA_HWIDGET hWidget) = 0;\r
224     virtual FX_BOOL             CanPaste(XFA_HWIDGET hWidget) = 0;\r
225     virtual FX_BOOL             CanSelectAll(XFA_HWIDGET hWidget) = 0;\r
226     virtual FX_BOOL             CanDelete(XFA_HWIDGET hWidget) = 0;\r
227     virtual FX_BOOL             CanDeSelect(XFA_HWIDGET hWidget) = 0;\r
228     virtual FX_BOOL             Copy(XFA_HWIDGET hWidget, CFX_WideString &wsText) = 0;\r
229     virtual FX_BOOL             Cut(XFA_HWIDGET hWidget, CFX_WideString &wsText) = 0;\r
230     virtual FX_BOOL             Paste(XFA_HWIDGET hWidget, const CFX_WideString &wsText) = 0;\r
231     virtual FX_BOOL             SelectAll(XFA_HWIDGET hWidget) = 0;\r
232     virtual FX_BOOL             Delete(XFA_HWIDGET hWidget) = 0;\r
233     virtual FX_BOOL             DeSelect(XFA_HWIDGET hWidget) = 0;\r
234     virtual FX_BOOL             CanUndo(XFA_HWIDGET hWidget) = 0;\r
235     virtual FX_BOOL             CanRedo(XFA_HWIDGET hWidget) = 0;\r
236     virtual FX_BOOL             Undo(XFA_HWIDGET hWidget) = 0;\r
237     virtual FX_BOOL             Redo(XFA_HWIDGET hWidget) = 0;\r
238     virtual FX_BOOL             GetSuggestWords(XFA_HWIDGET hWidget, CFX_PointF pointf, CFX_ByteStringArray &sSuggest) = 0;\r
239     virtual FX_BOOL             ReplaceSpellCheckWord(XFA_HWIDGET hWidget, CFX_PointF pointf, FX_BSTR bsReplace) = 0;\r
240 };\r
241 #define XFA_INVALIDATE_AllPages         0x00000000\r
242 #define XFA_INVALIDATE_CurrentPage      0x00000001\r
243 #define XFA_PRINTOPT_ShowDialog         0x00000001\r
244 #define XFA_PRINTOPT_CanCancel          0x00000002\r
245 #define XFA_PRINTOPT_ShrinkPage         0x00000004\r
246 #define XFA_PRINTOPT_AsImage            0x00000008\r
247 #define XFA_PRINTOPT_ReverseOrder       0x00000010\r
248 #define XFA_PRINTOPT_PrintAnnot         0x00000020\r
249 #define  XFA_PAGEVIEWEVENT_PostAdded            1\r
250 #define  XFA_PAGEVIEWEVENT_PostRemoved          3\r
251 #define  XFA_WIDGETEVENT_PostAdded                      2\r
252 #define  XFA_WIDGETEVENT_PreRemoved                     3\r
253 #define  XFA_WIDGETEVENT_PostContentChanged     6\r
254 #define  XFA_WIDGETEVENT_ListItemRemoved        7\r
255 #define  XFA_WIDGETEVENT_ListItemAdded          8\r
256 #define  XFA_WIDGETEVENT_AccessChanged          9\r
257 class IXFA_DocProvider\r
258 {\r
259 public:\r
260     virtual void                SetChangeMark(XFA_HDOC hDoc) = 0;\r
261     virtual void                InvalidateRect(IXFA_PageView* pPageView, const CFX_RectF& rt, FX_DWORD dwFlags = 0) = 0;\r
262     virtual void                DisplayCaret(XFA_HWIDGET hWidget, FX_BOOL bVisible, const CFX_RectF* pRtAnchor) = 0;\r
263     virtual FX_BOOL             GetPopupPos(XFA_HWIDGET hWidget, FX_FLOAT fMinPopup, FX_FLOAT fMaxPopup,\r
264                                     const CFX_RectF &rtAnchor, CFX_RectF &rtPopup) = 0;\r
265     virtual FX_BOOL             PopupMenu(XFA_HWIDGET hWidget, CFX_PointF ptPopup, const CFX_RectF* pRectExclude = NULL) = 0;\r
266     virtual void                PageViewEvent(IXFA_PageView* pPageView, FX_DWORD dwFlags) = 0;\r
267     virtual void                WidgetEvent(XFA_HWIDGET hWidget, CXFA_WidgetAcc* pWidgetData, FX_DWORD dwEvent, FX_LPVOID pParam = NULL, FX_LPVOID pAdditional = NULL) = 0;\r
268     virtual FX_BOOL             RenderCustomWidget(XFA_HWIDGET hWidget, CFX_Graphics* pGS, CFX_Matrix* pMatrix, const CFX_RectF& rtUI)\r
269     {\r
270         return FALSE;\r
271     }\r
272     virtual     FX_INT32        CountPages(XFA_HDOC hDoc) = 0;\r
273     virtual     FX_INT32        GetCurrentPage(XFA_HDOC hDoc) = 0;\r
274     virtual void                SetCurrentPage(XFA_HDOC hDoc, FX_INT32 iCurPage) = 0;\r
275     virtual FX_BOOL             IsCalculationsEnabled(XFA_HDOC hDoc) = 0;\r
276     virtual void                SetCalculationsEnabled(XFA_HDOC hDoc, FX_BOOL bEnabled) = 0;\r
277     virtual void                GetTitle(XFA_HDOC hDoc, CFX_WideString &wsTitle) = 0;\r
278     virtual void                SetTitle(XFA_HDOC hDoc, FX_WSTR wsTitle) = 0;\r
279     virtual void                ExportData(XFA_HDOC hDoc, FX_WSTR wsFilePath, FX_BOOL bXDP = TRUE) = 0;\r
280     virtual void                ImportData(XFA_HDOC hDoc, FX_WSTR wsFilePath) = 0;\r
281     virtual void                GotoURL(XFA_HDOC hDoc, FX_WSTR bsURL, FX_BOOL bAppend = TRUE) = 0;\r
282     virtual FX_BOOL             IsValidationsEnabled(XFA_HDOC hDoc) = 0;\r
283     virtual void                SetValidationsEnabled(XFA_HDOC hDoc, FX_BOOL bEnabled) = 0;\r
284     virtual void                SetFocusWidget(XFA_HDOC hDoc, XFA_HWIDGET hWidget) = 0;\r
285     virtual void                Print(XFA_HDOC hDoc, FX_INT32 nStartPage, FX_INT32 nEndPage, FX_DWORD dwOptions) = 0;\r
286     virtual FX_INT32                    AbsPageCountInBatch(XFA_HDOC hDoc) = 0;\r
287     virtual FX_INT32                    AbsPageInBatch(XFA_HDOC hDoc, XFA_HWIDGET hWidget) = 0;\r
288     virtual FX_INT32                    SheetCountInBatch(XFA_HDOC hDoc) = 0;\r
289     virtual FX_INT32                    SheetInBatch(XFA_HDOC hDoc, XFA_HWIDGET hWidget) = 0;\r
290     virtual FX_INT32                    Verify(XFA_HDOC hDoc, CXFA_Node* pSigNode, FX_BOOL bUsed = TRUE)\r
291     {\r
292         return 0;\r
293     }\r
294     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
295     {\r
296         return 0;\r
297     }\r
298     virtual CXFA_NodeList*              Enumerate(XFA_HDOC hDoc)\r
299     {\r
300         return 0;\r
301     }\r
302     virtual FX_BOOL                             Clear(XFA_HDOC hDoc, CXFA_Node* pSigNode, FX_BOOL bCleared = TRUE)\r
303     {\r
304         return 0;\r
305     }\r
306     virtual void                GetURL(XFA_HDOC hDoc, CFX_WideString &wsDocURL) = 0;\r
307     virtual FX_ARGB             GetHighlightColor(XFA_HDOC hDoc) = 0;\r
308     virtual void                AddDoRecord(XFA_HWIDGET hWidget) = 0;\r
309 \r
310     virtual FX_BOOL             SubmitData(XFA_HDOC hDoc, CXFA_Submit submit) = 0;\r
311     virtual FX_BOOL             CheckWord(XFA_HDOC hDoc, FX_BSTR sWord) = 0;\r
312     virtual FX_BOOL             GetSuggestWords(XFA_HDOC hDoc, FX_BSTR sWord, CFX_ByteStringArray& sSuggest) = 0;\r
313     virtual FX_BOOL             GetPDFScriptObject(XFA_HDOC hDoc, FX_BSTR utf8Name, FXJSE_HVALUE hValue) = 0;\r
314     virtual FX_BOOL             GetGlobalProperty(XFA_HDOC hDoc, FX_BSTR szPropName, FXJSE_HVALUE hValue) = 0;\r
315     virtual FX_BOOL             SetGlobalProperty(XFA_HDOC hDoc, FX_BSTR szPropName, FXJSE_HVALUE hValue) = 0;\r
316     virtual CPDF_Document*  OpenPDF(XFA_HDOC hDoc, IFX_FileRead* pFile, FX_BOOL bTakeOverFile) = 0;\r
317     virtual IFX_FileRead*       OpenLinkedFile(XFA_HDOC hDoc, const CFX_WideString& wsLink) = 0;\r
318 };\r
319 #define XFA_DOCVIEW_View                0x00000000\r
320 #define XFA_DOCVIEW_MasterPage  0x00000001\r
321 #define XFA_DOCVIEW_Design              0x00000002\r
322 #define XFA_DOCTYPE_Dynamic             0\r
323 #define XFA_DOCTYPE_Static              1\r
324 #define XFA_DOCTYPE_XDP                 2\r
325 #define XFA_PARSESTATUS_StatusErr       -3\r
326 #define XFA_PARSESTATUS_StreamErr       -2\r
327 #define XFA_PARSESTATUS_SyntaxErr       -1\r
328 #define XFA_PARSESTATUS_Ready           0\r
329 #define XFA_PARSESTATUS_Done            100\r
330 class IXFA_DocHandler\r
331 {\r
332 public:\r
333     virtual void                                ReleaseDoc(XFA_HDOC hDoc) = 0;\r
334     virtual IXFA_DocProvider*   GetDocProvider(XFA_HDOC hDoc) = 0;\r
335 \r
336     virtual FX_DWORD                    GetDocType(XFA_HDOC hDoc) = 0;\r
337     virtual     FX_INT32                        StartLoad(XFA_HDOC hDoc) = 0;\r
338     virtual FX_INT32                    DoLoad(XFA_HDOC hDoc, IFX_Pause *pPause = NULL) = 0;\r
339     virtual void                                StopLoad(XFA_HDOC hDoc) = 0;\r
340 \r
341     virtual IXFA_DocView*               CreateDocView(XFA_HDOC hDoc, FX_DWORD dwView = 0) = 0;\r
342 \r
343     virtual FX_INT32                    CountPackages(XFA_HDOC hDoc) = 0;\r
344     virtual     void                            GetPackageName(XFA_HDOC hDoc, FX_INT32 iPackage, CFX_WideStringC &wsPackage) = 0;\r
345 \r
346     virtual FX_BOOL                             SavePackage(XFA_HDOC hDoc, FX_WSTR wsPackage, IFX_FileWrite* pFile, IXFA_ChecksumContext *pCSContext = NULL) = 0;\r
347     virtual FX_BOOL                             CloseDoc(XFA_HDOC hDoc) = 0;\r
348 \r
349     virtual FX_BOOL                             ImportData(XFA_HDOC hDoc, IFX_FileRead* pStream, FX_BOOL bXDP = TRUE) = 0;\r
350     virtual     void                            SetJSERuntime(XFA_HDOC hDoc, FXJSE_HRUNTIME hRuntime) = 0;\r
351     virtual FXJSE_HVALUE                GetXFAScriptObject(XFA_HDOC hDoc) = 0;\r
352     virtual XFA_ATTRIBUTEENUM   GetRestoreState(XFA_HDOC hDoc) = 0;\r
353     virtual FX_BOOL                             RunDocScript(XFA_HDOC hDoc, XFA_SCRIPTTYPE eScriptType, FX_WSTR wsScript, FXJSE_HVALUE hRetValue, FXJSE_HVALUE hThisObject) = 0;\r
354 };\r
355 enum XFA_EVENTTYPE {\r
356     XFA_EVENT_Click,\r
357     XFA_EVENT_Change,\r
358     XFA_EVENT_DocClose,\r
359     XFA_EVENT_DocReady,\r
360     XFA_EVENT_Enter,\r
361     XFA_EVENT_Exit,\r
362     XFA_EVENT_Full,\r
363     XFA_EVENT_IndexChange,\r
364     XFA_EVENT_Initialize,\r
365     XFA_EVENT_MouseDown,\r
366     XFA_EVENT_MouseEnter,\r
367     XFA_EVENT_MouseExit,\r
368     XFA_EVENT_MouseUp,\r
369     XFA_EVENT_PostExecute,\r
370     XFA_EVENT_PostOpen,\r
371     XFA_EVENT_PostPrint,\r
372     XFA_EVENT_PostSave,\r
373     XFA_EVENT_PostSign,\r
374     XFA_EVENT_PostSubmit,\r
375     XFA_EVENT_PreExecute,\r
376     XFA_EVENT_PreOpen,\r
377     XFA_EVENT_PrePrint,\r
378     XFA_EVENT_PreSave,\r
379     XFA_EVENT_PreSign,\r
380     XFA_EVENT_PreSubmit,\r
381     XFA_EVENT_Ready,\r
382     XFA_EVENT_InitCalculate,\r
383     XFA_EVENT_InitVariables,\r
384     XFA_EVENT_Calculate,\r
385     XFA_EVENT_Validate,\r
386     XFA_EVENT_Unknown,\r
387 };\r
388 #define XFA_VALIDATE_preSubmit          1\r
389 #define XFA_VALIDATE_prePrint           2\r
390 #define XFA_VALIDATE_preExecute         3\r
391 #define XFA_VALIDATE_preSave            4\r
392 class CXFA_EventParam : public CFX_Object\r
393 {\r
394 public:\r
395     CXFA_EventParam()\r
396     {\r
397         m_pTarget = NULL;\r
398         m_eType = XFA_EVENT_Unknown;\r
399         m_wsResult.Empty();\r
400         Reset();\r
401     }\r
402     void Reset()\r
403     {\r
404         m_wsChange.Empty();\r
405         m_iCommitKey = 0;\r
406         m_wsFullText.Empty();\r
407         m_bKeyDown = FALSE;\r
408         m_bModifier = FALSE;\r
409         m_wsNewContentType.Empty();\r
410         m_wsNewText.Empty();\r
411         m_wsPrevContentType.Empty();\r
412         m_wsPrevText.Empty();\r
413         m_bReenter = FALSE;\r
414         m_iSelEnd = 0;\r
415         m_iSelStart = 0;\r
416         m_bShift = FALSE;\r
417         m_wsSoapFaultCode.Empty();\r
418         m_wsSoapFaultString.Empty();\r
419         m_bIsFormReady = FALSE;\r
420         m_iValidateActivities = XFA_VALIDATE_preSubmit;\r
421     }\r
422     CXFA_WidgetAcc*     m_pTarget;\r
423     XFA_EVENTTYPE       m_eType;\r
424     CFX_WideString      m_wsResult;\r
425     FX_BOOL                     m_bCancelAction;\r
426     FX_INT32            m_iCommitKey;\r
427     FX_BOOL                     m_bKeyDown;\r
428     FX_BOOL                     m_bModifier;\r
429     FX_BOOL                     m_bReenter;\r
430     FX_INT32            m_iSelEnd;\r
431     FX_INT32            m_iSelStart;\r
432     FX_BOOL                     m_bShift;\r
433     CFX_WideString      m_wsChange;\r
434     CFX_WideString      m_wsFullText;\r
435     CFX_WideString      m_wsNewContentType;\r
436     CFX_WideString      m_wsNewText;\r
437     CFX_WideString      m_wsPrevContentType;\r
438     CFX_WideString      m_wsPrevText;\r
439     CFX_WideString      m_wsSoapFaultCode;\r
440     CFX_WideString      m_wsSoapFaultString;\r
441     FX_BOOL                     m_bIsFormReady;\r
442     FX_INT32            m_iValidateActivities;\r
443 };\r
444 #define XFA_EVENTERROR_Sucess           1\r
445 #define XFA_EVENTERROR_Error            -1\r
446 #define XFA_EVENTERROR_NotExist         0\r
447 #define XFA_EVENTERROR_Disabled         2\r
448 enum XFA_WIDGETORDER {\r
449     XFA_WIDGETORDER_PreOrder,\r
450 };\r
451 class IXFA_DocView\r
452 {\r
453 public:\r
454     virtual XFA_HDOC                    GetDoc() = 0;\r
455     virtual     FX_INT32                        StartLayout(FX_INT32 iStartPage = 0) = 0;\r
456     virtual FX_INT32                    DoLayout(IFX_Pause *pPause = NULL) = 0;\r
457     virtual void                                StopLayout() = 0;\r
458 \r
459     virtual FX_INT32                    GetLayoutStatus() = 0;\r
460     virtual     void                            UpdateDocView() = 0;\r
461     virtual FX_INT32                    CountPageViews() = 0;\r
462     virtual IXFA_PageView*              GetPageView(FX_INT32 nIndex) = 0;\r
463     virtual XFA_HWIDGET                 GetWidgetByName(FX_WSTR wsName) = 0;\r
464     virtual CXFA_WidgetAcc*             GetWidgetAccByName(FX_WSTR wsName) = 0;\r
465     virtual void                                ResetWidgetData(CXFA_WidgetAcc* pWidgetAcc = NULL) = 0;\r
466     virtual FX_INT32                    ProcessWidgetEvent(CXFA_EventParam* pParam, CXFA_WidgetAcc* pWidgetAcc = NULL) = 0;\r
467     virtual IXFA_WidgetHandler* GetWidgetHandler() = 0;\r
468     virtual IXFA_WidgetIterator*        CreateWidgetIterator() = 0;\r
469     virtual IXFA_WidgetAccIterator* CreateWidgetAccIterator(XFA_WIDGETORDER eOrder = XFA_WIDGETORDER_PreOrder) = 0;\r
470     virtual XFA_HWIDGET                 GetFocusWidget() = 0;\r
471     virtual void                                KillFocus() = 0;\r
472     virtual FX_BOOL                             SetFocus(XFA_HWIDGET hWidget) = 0;\r
473 };\r
474 #define XFA_TRAVERSEWAY_Tranvalse               0x0001\r
475 #define XFA_TRAVERSEWAY_Form                    0x0002\r
476 #define XFA_WIDGETFILTER_Visible                0x0001\r
477 #define XFA_WIDGETFILTER_Viewable               0x0010\r
478 #define XFA_WIDGETFILTER_Printable              0x0020\r
479 #define XFA_WIDGETFILTER_Field                  0x0100\r
480 #define XFA_WIDGETFILTER_AllType                0x0F00\r
481 class IXFA_PageView\r
482 {\r
483 public:\r
484     virtual IXFA_DocView*       GetDocView() = 0;\r
485     virtual FX_INT32            GetPageViewIndex() = 0;\r
486     virtual void                        GetPageViewRect(CFX_RectF &rtPage) = 0;\r
487 \r
488     virtual void                        GetDisplayMatrix(CFX_Matrix &mt, const CFX_Rect &rtDisp, FX_INT32 iRotate) = 0;\r
489 \r
490     virtual FX_INT32            LoadPageView(IFX_Pause *pPause = NULL) = 0;\r
491     virtual void                        UnloadPageView() = 0;\r
492     virtual XFA_HWIDGET         GetWidgetByPos(FX_FLOAT fx, FX_FLOAT fy) = 0;\r
493     virtual IXFA_WidgetIterator* CreateWidgetIterator(FX_DWORD dwTraverseWay = XFA_TRAVERSEWAY_Form, FX_DWORD dwWidgetFilter = XFA_WIDGETFILTER_Visible | XFA_WIDGETFILTER_Viewable | XFA_WIDGETFILTER_AllType) = 0;\r
494 };\r
495 class CXFA_RenderOptions : public CFX_Object\r
496 {\r
497 public:\r
498     CXFA_RenderOptions()\r
499         : m_bPrint(FALSE)\r
500         , m_bHighlight(TRUE)\r
501     {\r
502     }\r
503     FX_BOOL                     m_bPrint;\r
504     FX_BOOL                     m_bHighlight;\r
505 };\r
506 #define XFA_RENDERSTATUS_Ready                  1\r
507 #define XFA_RENDERSTATUS_ToBeContinued  2\r
508 #define XFA_RENDERSTATUS_Done                   3\r
509 #define XFA_RENDERSTATUS_Failed                 -1\r
510 class IXFA_RenderContext\r
511 {\r
512 public:\r
513     virtual void                Release() = 0;\r
514     virtual FX_INT32    StartRender(IXFA_PageView* pPageView, CFX_Graphics* pGS, const CFX_Matrix& pMatrix, const CXFA_RenderOptions& options) = 0;\r
515     virtual FX_INT32    DoRender(IFX_Pause* pPause = NULL) = 0;\r
516     virtual     void            StopRender() = 0;\r
517 };\r
518 IXFA_RenderContext*     XFA_RenderContext_Create();\r
519 enum XFA_WIDGETTYPE {\r
520     XFA_WIDGETTYPE_Barcode,\r
521     XFA_WIDGETTYPE_PushButton,\r
522     XFA_WIDGETTYPE_CheckButton,\r
523     XFA_WIDGETTYPE_RadioButton,\r
524     XFA_WIDGETTYPE_DatetimeEdit,\r
525     XFA_WIDGETTYPE_DecimalField,\r
526     XFA_WIDGETTYPE_NumericField,\r
527     XFA_WIDGETTYPE_Signature,\r
528     XFA_WIDGETTYPE_TextEdit,\r
529     XFA_WIDGETTYPE_DropdownList,\r
530     XFA_WIDGETTYPE_ListBox,\r
531     XFA_WIDGETTYPE_ImageField,\r
532     XFA_WIDGETTYPE_PasswordEdit,\r
533     XFA_WIDGETTYPE_Arc,\r
534     XFA_WIDGETTYPE_Rectangle,\r
535     XFA_WIDGETTYPE_Image,\r
536     XFA_WIDGETTYPE_Line,\r
537     XFA_WIDGETTYPE_Text,\r
538     XFA_WIDGETTYPE_ExcludeGroup,\r
539     XFA_WIDGETTYPE_Subform,\r
540     XFA_WIDGETTYPE_Unknown,\r
541 };\r
542 #define XFA_WIDGETSTATUS_Visible        0x00000001\r
543 #define XFA_WIDGETSTATUS_Invisible      0x00000002\r
544 #define XFA_WIDGETSTATUS_Hidden         0x00000004\r
545 #define XFA_WIDGETSTATUS_Viewable       0x00000010\r
546 #define XFA_WIDGETSTATUS_Printable      0x00000020\r
547 #define XFA_WIDGETSTATUS_Focused        0x00000100\r
548 class IXFA_WidgetHandler\r
549 {\r
550 public:\r
551 \r
552     virtual XFA_HWIDGET         CreateWidget(XFA_HWIDGET hParent, XFA_WIDGETTYPE eType, XFA_HWIDGET hBefore = NULL) = 0;\r
553     virtual IXFA_PageView*      GetPageView(XFA_HWIDGET hWidget) = 0;\r
554     virtual void                        GetRect(XFA_HWIDGET hWidget, CFX_RectF &rt) = 0;\r
555     virtual FX_DWORD            GetStatus(XFA_HWIDGET hWidget) = 0;\r
556     virtual FX_BOOL                     GetBBox(XFA_HWIDGET hWidget, CFX_RectF &rtBox, FX_DWORD dwStatus, FX_BOOL bDrawFocus = FALSE) = 0;\r
557     virtual CXFA_WidgetAcc*     GetDataAcc(XFA_HWIDGET hWidget) = 0;\r
558 \r
559     virtual void                        GetName(XFA_HWIDGET hWidget, CFX_WideString &wsName, FX_INT32 iNameType = 0) = 0;\r
560     virtual     FX_BOOL                 GetToolTip(XFA_HWIDGET hWidget, CFX_WideString &wsToolTip) = 0;\r
561     virtual     void                    SetPrivateData(XFA_HWIDGET hWidget, FX_LPVOID module_id, FX_LPVOID pData, PD_CALLBACK_FREEDATA callback) = 0;\r
562     virtual     FX_LPVOID               GetPrivateData(XFA_HWIDGET hWidget, FX_LPVOID module_id) = 0;\r
563     virtual FX_BOOL                     OnMouseEnter(XFA_HWIDGET hWidget) = 0;\r
564     virtual FX_BOOL                     OnMouseExit(XFA_HWIDGET hWidget) = 0;\r
565     virtual FX_BOOL                     OnLButtonDown(XFA_HWIDGET hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
566     virtual FX_BOOL                     OnLButtonUp(XFA_HWIDGET hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
567     virtual FX_BOOL                     OnLButtonDblClk(XFA_HWIDGET hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
568     virtual FX_BOOL                     OnMouseMove(XFA_HWIDGET hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
569     virtual FX_BOOL                     OnMouseWheel(XFA_HWIDGET hWidget, FX_DWORD dwFlags, FX_SHORT zDelta, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
570     virtual FX_BOOL                     OnRButtonDown(XFA_HWIDGET hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
571     virtual FX_BOOL                     OnRButtonUp(XFA_HWIDGET hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
572     virtual FX_BOOL                     OnRButtonDblClk(XFA_HWIDGET hWidget, FX_DWORD dwFlags, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
573 \r
574     virtual FX_BOOL                     OnKeyDown(XFA_HWIDGET hWidget, FX_DWORD dwKeyCode, FX_DWORD dwFlags) = 0;\r
575     virtual FX_BOOL                     OnKeyUp(XFA_HWIDGET hWidget, FX_DWORD dwKeyCode, FX_DWORD dwFlags) = 0;\r
576     virtual FX_BOOL                     OnChar(XFA_HWIDGET hWidget, FX_DWORD dwChar, FX_DWORD dwFlags) = 0;\r
577     virtual     FX_DWORD                OnHitTest(XFA_HWIDGET hWidget, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
578     virtual FX_BOOL                     OnSetCursor(XFA_HWIDGET hWidget, FX_FLOAT fx, FX_FLOAT fy) = 0;\r
579 \r
580     virtual void                        RenderWidget(XFA_HWIDGET hWidget, CFX_Graphics* pGS, CFX_Matrix* pMatrix = NULL, FX_BOOL bHighlight = FALSE) = 0;\r
581     virtual FX_BOOL                     HasEvent(CXFA_WidgetAcc* pWidgetAcc, XFA_EVENTTYPE eEventType) = 0;\r
582     virtual FX_INT32            ProcessEvent(CXFA_WidgetAcc* pWidgetAcc, CXFA_EventParam* pParam) = 0;\r
583 };\r
584 class IXFA_WidgetIterator\r
585 {\r
586 public:\r
587     virtual void                                Release() = 0;\r
588     virtual void                                Reset() = 0;\r
589     virtual XFA_HWIDGET                 MoveToFirst() = 0;\r
590     virtual XFA_HWIDGET                 MoveToLast() = 0;\r
591     virtual     XFA_HWIDGET                     MoveToNext() = 0;\r
592     virtual XFA_HWIDGET                 MoveToPrevious() = 0;\r
593     virtual     XFA_HWIDGET                     GetCurrentWidget() = 0;\r
594     virtual     FX_BOOL                         SetCurrentWidget(XFA_HWIDGET hWidget)  = 0;\r
595 };\r
596 class IXFA_WidgetAccIterator\r
597 {\r
598 public:\r
599     virtual void                                Release() = 0;\r
600 \r
601     virtual void                                Reset() = 0;\r
602     virtual CXFA_WidgetAcc*             MoveToFirst() = 0;\r
603     virtual CXFA_WidgetAcc*             MoveToLast() = 0;\r
604     virtual CXFA_WidgetAcc*             MoveToNext() = 0;\r
605     virtual CXFA_WidgetAcc*             MoveToPrevious() = 0;\r
606     virtual CXFA_WidgetAcc*             GetCurrentWidgetAcc() = 0;\r
607     virtual FX_BOOL                             SetCurrentWidgetAcc(CXFA_WidgetAcc* hWidget) = 0;\r
608     virtual void                                SkipTree() = 0;\r
609 };\r
610 IXFA_WidgetAccIterator* XFA_WidgetAccIterator_Create(CXFA_WidgetAcc* pTravelRoot, XFA_WIDGETORDER eOrder = XFA_WIDGETORDER_PreOrder);\r
611 class IXFA_ChecksumContext\r
612 {\r
613 public:\r
614     virtual void                                Release() = 0;\r
615 \r
616     virtual FX_BOOL                             StartChecksum() = 0;\r
617     virtual FX_BOOL                             UpdateChecksum(IFX_FileRead* pSrcFile, FX_FILESIZE offset = 0, size_t size = 0) = 0;\r
618     virtual void                                FinishChecksum() = 0;\r
619     virtual void                                GetChecksum(CFX_ByteString &bsChecksum) = 0;\r
620 };\r
621 IXFA_ChecksumContext*   XFA_Checksum_Create();\r
622 #endif\r