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