Merge XFA to PDFium master at 4dc95e7 on 10/28/2014
[pdfium.git] / xfa / include / fxfa / fxfa_objectacc.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_NODEACC_H\r
8 #define _FXFA_NODEACC_H\r
9 class CXFA_Node;\r
10 class IFX_Locale;\r
11 class CXFA_Data;\r
12 class CXFA_Font;\r
13 class CXFA_Fill;\r
14 class CXFA_Margin;\r
15 class CXFA_Caption;\r
16 class CXFA_Para;\r
17 class CXFA_Event;\r
18 class CXFA_Script;\r
19 class CXFA_Value;\r
20 class CXFA_Calculate;\r
21 class CXFA_Line;\r
22 class CXFA_Text;\r
23 class CXFA_ExData;\r
24 class CXFA_Image;\r
25 class CXFA_Validate;\r
26 class CXFA_Variables;\r
27 class CXFA_Bind;\r
28 class CXFA_Assist;\r
29 class CXFA_ToolTip;\r
30 class CXFA_Keep;\r
31 class CXFA_Submit;\r
32 class CXFA_BindItems;\r
33 class CXFA_Stroke;\r
34 class CXFA_Corner;\r
35 class CXFA_Edge;\r
36 class CXFA_Box;\r
37 class CXFA_Arc;\r
38 class CXFA_Border;\r
39 class CXFA_Rectangle;\r
40 class CXFA_WidgetData;\r
41 class CXFA_Occur;\r
42 class CXFA_Filter;\r
43 class CXFA_Certificate;\r
44 class CXFA_WrapCertificate;\r
45 class CXFA_Oids;\r
46 class CXFA_SubjectDNs;\r
47 class CXFA_DigestMethods;\r
48 class CXFA_Encodings;\r
49 class CXFA_EncryptionMethods;\r
50 class CXFA_Reasons;\r
51 class CXFA_Manifest;\r
52 inline FX_BOOL XFA_IsSpace(FX_WCHAR c)\r
53 {\r
54     return (c == 0x20) || (c == 0x0d) || (c == 0x0a) || (c == 0x09);\r
55 }\r
56 inline FX_BOOL XFA_IsDigit(FX_WCHAR c)\r
57 {\r
58     return c >= '0' && c <= '9';\r
59 }\r
60 typedef CFX_ArrayTemplate<CXFA_Node*> CXFA_NodeArray;\r
61 typedef CFX_ArrayTemplate<CXFA_Object*> CXFA_ObjArray;\r
62 class CXFA_Data : public CFX_Object\r
63 {\r
64 public:\r
65     CXFA_Data(CXFA_Node* pNode) : m_pNode(pNode) {}\r
66     operator CXFA_Node*() const\r
67     {\r
68         return m_pNode;\r
69     }\r
70     CXFA_Node*  GetNode()\r
71     {\r
72         return m_pNode;\r
73     }\r
74 \r
75     FX_BOOL                     IsExistInXML() const\r
76     {\r
77         return m_pNode != NULL;\r
78     }\r
79 \r
80     XFA_ELEMENT         GetClassID() const;\r
81 protected:\r
82     FX_BOOL TryMeasure(XFA_ATTRIBUTE eAttr, FX_FLOAT &fValue, FX_BOOL bUseDefault = FALSE) const;\r
83     FX_BOOL     SetMeasure(XFA_ATTRIBUTE eAttr, FX_FLOAT fValue);\r
84     CXFA_Node*                          m_pNode;\r
85 };\r
86 class CXFA_Fill : public CXFA_Data\r
87 {\r
88 public:\r
89     CXFA_Fill(CXFA_Node* pNode);\r
90     ~CXFA_Fill();\r
91 \r
92     FX_INT32            GetPresence();\r
93 \r
94     FX_ARGB                     GetColor(FX_BOOL bText = FALSE);\r
95 \r
96     void                        SetColor(FX_ARGB color);\r
97 \r
98 \r
99     FX_INT32            GetFillType();\r
100 \r
101     FX_INT32            GetPattern(FX_ARGB& foreColor);\r
102 \r
103     FX_INT32            GetStipple(FX_ARGB& stippleColor);\r
104 \r
105     FX_INT32            GetLinear(FX_ARGB& endColor);\r
106 \r
107     FX_INT32            GetRadial(FX_ARGB& endColor);\r
108     FX_BOOL                     SetPresence(FX_INT32 iPresence);\r
109     FX_BOOL                     SetFillType(FX_INT32 iType);\r
110     FX_BOOL                     SetPattern(FX_INT32 iPattern, FX_ARGB foreColor);\r
111     FX_BOOL                     SetStipple(FX_INT32 iStipple, FX_ARGB stippleColor);\r
112     FX_BOOL                     SetLinear(FX_INT32 iLinear, FX_ARGB endColor);\r
113     FX_BOOL                     SetRadial(FX_INT32 iRadial, FX_ARGB endColor);\r
114 };\r
115 class CXFA_Margin : public CXFA_Data\r
116 {\r
117 public:\r
118     CXFA_Margin(CXFA_Node* pNode);\r
119     FX_BOOL             GetLeftInset(FX_FLOAT &fInset, FX_FLOAT fDefInset = 0) const;\r
120     FX_BOOL             GetTopInset(FX_FLOAT &fInset, FX_FLOAT fDefInset = 0) const;\r
121     FX_BOOL             GetRightInset(FX_FLOAT &fInset, FX_FLOAT fDefInset = 0) const;\r
122     FX_BOOL             GetBottomInset(FX_FLOAT &fInset, FX_FLOAT fDefInset = 0) const;\r
123     FX_BOOL             SetLeftInset(FX_FLOAT fInset);\r
124     FX_BOOL             SetTopInset(FX_FLOAT fInset);\r
125     FX_BOOL             SetRightInset(FX_FLOAT fInset);\r
126     FX_BOOL             SetBottomInset(FX_FLOAT fInset);\r
127 };\r
128 class CXFA_Font : public CXFA_Data\r
129 {\r
130 public:\r
131     CXFA_Font(CXFA_Node* pNode);\r
132 \r
133     FX_FLOAT            GetBaselineShift();\r
134 \r
135     FX_FLOAT            GetHorizontalScale();\r
136 \r
137     FX_FLOAT            GetVerticalScale();\r
138 \r
139     FX_FLOAT            GetLetterSpacing();\r
140 \r
141     FX_INT32            GetLineThrough();\r
142 \r
143     FX_INT32            GetLineThroughPeriod();\r
144 \r
145     FX_INT32            GetOverline();\r
146 \r
147     FX_INT32            GetOverlinePeriod();\r
148 \r
149     FX_INT32            GetUnderline();\r
150 \r
151     FX_INT32            GetUnderlinePeriod();\r
152 \r
153     FX_FLOAT            GetFontSize();\r
154 \r
155     void                        GetTypeface(CFX_WideStringC &wsTypeFace);\r
156 \r
157     FX_BOOL                     IsBold();\r
158 \r
159     FX_BOOL                     IsItalic();\r
160 \r
161     FX_BOOL                     IsUseKerning();\r
162 \r
163     FX_ARGB                     GetColor();\r
164 \r
165     void                        SetColor(FX_ARGB color);\r
166     FX_BOOL                     SetBaselineShift(FX_FLOAT fBaselineShift);\r
167     FX_BOOL                     SetHorizontalScale(FX_FLOAT fHorizontalScale);\r
168     FX_BOOL                     SetVerticalScale(FX_FLOAT fVerticalScale);\r
169     FX_BOOL                     SetLetterSpacing(FX_FLOAT fLetterSpacing, XFA_UNIT eUnit);\r
170     FX_BOOL                     SetLineThrough(FX_INT32 iLineThrough);\r
171     FX_BOOL                     SetLineThroughPeriod(FX_INT32 iLineThroughPeriod);\r
172     FX_BOOL                     SetOverline(FX_INT32 iOverline);\r
173     FX_BOOL                     SetOverlinePeriod(FX_INT32 iOverlinePeriod);\r
174     FX_BOOL                     SetUnderline(FX_INT32 iUnderline);\r
175     FX_BOOL                     SetUnderlinePeriod(FX_INT32 iUnderlinePeriod);\r
176 };\r
177 class CXFA_Caption : public CXFA_Data\r
178 {\r
179 public:\r
180     CXFA_Caption(CXFA_Node* pNode);\r
181 \r
182     FX_INT32            GetPresence();\r
183 \r
184     FX_INT32            GetPlacementType();\r
185 \r
186     FX_FLOAT            GetReserve();\r
187 \r
188     CXFA_Margin         GetMargin();\r
189 \r
190     CXFA_Font           GetFont();\r
191 \r
192     CXFA_Value          GetValue();\r
193 \r
194     CXFA_Para           GetPara();\r
195     FX_BOOL                     SetPresence(FX_INT32 iPresence);\r
196     FX_BOOL                     SetPlacementType(FX_INT32 iType);\r
197     FX_BOOL                     SetReserve(FX_FLOAT fReserve);\r
198 };\r
199 class CXFA_Para : public CXFA_Data\r
200 {\r
201 public:\r
202     CXFA_Para(CXFA_Node* pNode);\r
203 \r
204     FX_INT32            GetHorizontalAlign();\r
205 \r
206     FX_INT32            GetVerticalAlign();\r
207 \r
208     FX_FLOAT            GetLineHeight();\r
209     FX_FLOAT            GetMarginLeft();\r
210     FX_FLOAT            GetMarginRight();\r
211     FX_INT32            GetOrphans();\r
212     FX_FLOAT            GetRadixOffset();\r
213     FX_FLOAT            GetSpaceAbove();\r
214     FX_FLOAT            GetSpaceBelow();\r
215     FX_FLOAT            GetTextIndent();\r
216     FX_INT32            GetWidows();\r
217     FX_BOOL                     SetHorizontalAlign(FX_INT32 iHorizontalAlign);\r
218     FX_BOOL                     SetVerticalAlign(FX_INT32 iVerticalAlign);\r
219     FX_BOOL                     SetLineHeight(FX_FLOAT fLineHeight);\r
220     FX_BOOL                     SetMarginLeft(FX_FLOAT fMarginLeft);\r
221     FX_BOOL                     SetMarginRight(FX_FLOAT fMarginRight);\r
222     FX_BOOL                     SetOrphans(FX_INT32 iOrphans);\r
223     FX_BOOL                     SetRadixOffset(FX_FLOAT fRadixOffset);\r
224     FX_BOOL                     SetSpaceAbove(FX_FLOAT fSpaceAbove);\r
225     FX_BOOL                     SetSpaceBelow(FX_FLOAT fSpaceBelow);\r
226     FX_BOOL                     SetTextIndent(FX_FLOAT fTextIndent);\r
227     FX_BOOL                     SetWidows(FX_INT32 iWidows);\r
228 };\r
229 class CXFA_Keep : public CXFA_Data\r
230 {\r
231 public:\r
232     CXFA_Keep(CXFA_Node *pNode, CXFA_Node *pParent);\r
233 \r
234     FX_INT32            GetIntact();\r
235     FX_INT32            GetNext();\r
236     FX_INT32            GetPrevious();\r
237     FX_BOOL                     SetIntact(FX_INT32 iIntact);\r
238     FX_BOOL                     SetNext(FX_INT32 iNext);\r
239     FX_BOOL                     SetPrevious(FX_INT32 iPrevious);\r
240 private:\r
241     CXFA_Node           *m_pParent;\r
242 };\r
243 enum XFA_TEXTENCODING {\r
244     XFA_TEXTENCODING_None,\r
245     XFA_TEXTENCODING_Big5,\r
246     XFA_TEXTENCODING_FontSpecific,\r
247     XFA_TEXTENCODING_GBK,\r
248     XFA_TEXTENCODING_GB18030,\r
249     XFA_TEXTENCODING_GB2312,\r
250     XFA_TEXTENCODING_ISO8859NN,\r
251     XFA_TEXTENCODING_KSC5601,\r
252     XFA_TEXTENCODING_ShiftJIS,\r
253     XFA_TEXTENCODING_UCS2,\r
254     XFA_TEXTENCODING_UTF16,\r
255     XFA_TEXTENCODING_UTF8\r
256 };\r
257 class CXFA_Event : public CXFA_Data\r
258 {\r
259 public:\r
260     CXFA_Event(CXFA_Node* pNode);\r
261 \r
262 \r
263     FX_INT32                    GetActivity();\r
264 \r
265     FX_INT32                    GetEventType();\r
266     void                                GetRef(CFX_WideStringC &wsRef);\r
267 \r
268     FX_INT32                    GetExecuteRunAt();\r
269     FX_INT32                    GetExecuteType();\r
270     void                                GetExecuteConnection(CFX_WideString &wsConnection);\r
271 \r
272 \r
273     CXFA_Script                 GetScript();\r
274 \r
275 \r
276     CXFA_Submit                 GetSubmit();\r
277 \r
278 \r
279     FX_INT32                    GetSignDataOperation();\r
280     void                                GetSignDataTarget(CFX_WideString &wsTarget);\r
281     FX_BOOL                             SetActivity(FX_INT32 iActivity);\r
282     FX_BOOL                             SetEventType(FX_INT32 iEventType);\r
283     FX_BOOL                             SetExecuteRunAt(FX_INT32 iExecuteRunAt);\r
284     FX_BOOL                             SetExecuteType(FX_INT32 iExecuteType);\r
285     FX_BOOL                             SetExecuteConnection(const CFX_WideString& wsConnection);\r
286     FX_BOOL                             SetSignDataOperation(FX_INT32 iOperation);\r
287     FX_BOOL                             SetSignDataTarget(const CFX_WideString& wsTarget);\r
288 };\r
289 enum XFA_SCRIPTTYPE {\r
290     XFA_SCRIPTTYPE_Formcalc = 0,\r
291     XFA_SCRIPTTYPE_Javascript,\r
292     XFA_SCRIPTTYPE_Unkown,\r
293 };\r
294 class CXFA_Script : public CXFA_Data\r
295 {\r
296 public:\r
297     CXFA_Script(CXFA_Node* pNode);\r
298     void                                GetBinding(CFX_WideString &wsBinding);\r
299 \r
300     XFA_SCRIPTTYPE              GetContentType();\r
301     FX_INT32                    GetRunAt();\r
302     void                                GetExpression(CFX_WideString &wsExpression);\r
303     FX_BOOL                             SetBinding(const CFX_WideString& wsBinding);\r
304     FX_BOOL                             SetContentType(XFA_SCRIPTTYPE eType);\r
305     FX_BOOL                             SetRunAt(FX_INT32 iRunAt);\r
306     FX_BOOL                             SetExpression(const CFX_WideString& wsExpression);\r
307 };\r
308 class CXFA_Submit : public CXFA_Data\r
309 {\r
310 public:\r
311     CXFA_Submit(CXFA_Node* pNode);\r
312     FX_BOOL                             IsSubmitEmbedPDF();\r
313     FX_INT32                    GetSubmitFormat();\r
314     void                                GetSubmitTarget(CFX_WideStringC &wsTarget);\r
315     XFA_TEXTENCODING    GetSubmitTextEncoding();\r
316     void                                GetSubmitXDPContent(CFX_WideStringC &wsContent);\r
317     FX_BOOL                             SetSubmitFormat(FX_INT32 iSubmitFormat);\r
318     FX_BOOL                             SetSubmitTarget(const CFX_WideString& wsTarget);\r
319     FX_BOOL                             SetSubmitTextEncoding(XFA_TEXTENCODING eTextEncoding);\r
320     FX_BOOL                             SetSubmitXDPContent(const CFX_WideString& wsContent);\r
321 };\r
322 class CXFA_Value : public CXFA_Data\r
323 {\r
324 public:\r
325     CXFA_Value(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
326 \r
327     XFA_ELEMENT         GetChildValueClassID();\r
328 \r
329     FX_BOOL                     GetChildValueContent(CFX_WideString &wsContent);\r
330     CXFA_Arc            GetArc();\r
331     CXFA_Line           GetLine();\r
332     CXFA_Rectangle      GetRectangle();\r
333     CXFA_Text           GetText();\r
334     CXFA_ExData         GetExData();\r
335     CXFA_Image          GetImage();\r
336     FX_BOOL                     SetChildValueContent(const CFX_WideString& wsContent, FX_BOOL bNotify = FALSE, XFA_ELEMENT iType = XFA_ELEMENT_UNKNOWN);\r
337 };\r
338 class CXFA_Line : public CXFA_Data\r
339 {\r
340 public:\r
341     CXFA_Line(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
342     FX_INT32            GetHand();\r
343     FX_BOOL                     GetSlop();\r
344     CXFA_Edge           GetEdge();\r
345     FX_BOOL                     SetHand(FX_INT32 iHand);\r
346     FX_BOOL                     SetSlop(FX_INT32 iSlop);\r
347 };\r
348 class CXFA_Text : public CXFA_Data\r
349 {\r
350 public:\r
351     CXFA_Text(CXFA_Node* pNode);\r
352     void                GetName(CFX_WideStringC &wsName);\r
353     FX_INT32    GetMaxChars();\r
354     void                GetRid(CFX_WideStringC &wsRid);\r
355     void                GetContent(CFX_WideString &wsText);\r
356     void                SetContent(CFX_WideString wsText, FX_BOOL bNotify = TRUE);\r
357     FX_BOOL             SetName(const CFX_WideString& wsName);\r
358     FX_BOOL             SetMaxChars(FX_INT32 iMaxChars);\r
359     FX_BOOL             SetRid(const CFX_WideString& wsRid);\r
360 };\r
361 class CXFA_ExData : public CXFA_Data\r
362 {\r
363 public:\r
364     CXFA_ExData(CXFA_Node* pNode);\r
365     void                GetContentType(CFX_WideStringC &wsContentType);\r
366     void                GetHref(CFX_WideStringC &wsHref);\r
367     FX_INT32    GetMaxLength();\r
368     void                GetRid(CFX_WideStringC &wsRid);\r
369     FX_INT32    GetTransferEncoding();\r
370     void                GetContent(CFX_WideString &wsText);\r
371     FX_BOOL             SetContentType(const CFX_WideString& wsContentType);\r
372     FX_BOOL             SetHref(const CFX_WideString& wsHref);\r
373     FX_BOOL             SetMaxLength(FX_INT32 iMaxLength);\r
374     FX_BOOL             SetRid(const CFX_WideString& wsRid);\r
375     FX_BOOL             SetTransferEncoding(FX_INT32 iTransferEncoding);\r
376     FX_BOOL             SetContent(const CFX_WideString& wsText, FX_BOOL bNotify = FALSE,  FX_BOOL bScriptModify = FALSE, FX_BOOL bSyncData = TRUE);\r
377 };\r
378 class CXFA_Image : public CXFA_Data\r
379 {\r
380 public:\r
381     CXFA_Image(CXFA_Node* pNode, FX_BOOL bDefValue);\r
382     FX_INT32    GetAspect();\r
383     FX_BOOL             GetContentType(CFX_WideString &wsContentType);\r
384     FX_BOOL             GetHref(CFX_WideString &wsHref);\r
385     FX_INT32    GetTransferEncoding();\r
386     FX_BOOL             GetContent(CFX_WideString &wsText);\r
387     FX_BOOL             SetAspect(FX_INT32 iAspect);\r
388     FX_BOOL             SetContentType(const CFX_WideString& wsContentType);\r
389     FX_BOOL             SetHref(const CFX_WideString& wsHref);\r
390     FX_BOOL             SetTransferEncoding(FX_INT32 iTransferEncoding);\r
391     FX_BOOL             SetContent(const CFX_WideString& wsText);\r
392 protected:\r
393     FX_BOOL             m_bDefValue;\r
394 };\r
395 class CXFA_Calculate : public CXFA_Data\r
396 {\r
397 public:\r
398     CXFA_Calculate(CXFA_Node* pNode);\r
399 \r
400     FX_INT32            GetOverride();\r
401     CXFA_Script         GetScript();\r
402     void                        GetMessageText(CFX_WideString &wsMessage);\r
403     FX_BOOL                     SetOverride(FX_INT32 iOverride);\r
404     FX_BOOL                     SetMessageText(const CFX_WideString& wsMessage);\r
405 };\r
406 class CXFA_Validate : public CXFA_Data\r
407 {\r
408 public:\r
409     CXFA_Validate(CXFA_Node* pNode);\r
410     FX_INT32    GetFormatTest();\r
411     FX_BOOL             SetFormatTest(CFX_WideString wsValue);\r
412     FX_INT32    GetNullTest();\r
413     FX_BOOL             SetNullTest(CFX_WideString wsValue);\r
414     FX_INT32    GetScriptTest();\r
415     void                        GetFormatMessageText(CFX_WideString &wsMessage);\r
416     void                        SetFormatMessageText(CFX_WideString wsMessage);\r
417     void                        GetNullMessageText(CFX_WideString &wsMessage);\r
418     void                        SetNullMessageText(CFX_WideString wsMessage);\r
419     void                        GetScriptMessageText(CFX_WideString &wsMessage);\r
420     void                        SetScriptMessageText(CFX_WideString wsMessage);\r
421     void                        GetPicture(CFX_WideString &wsPicture);\r
422     CXFA_Script         GetScript();\r
423 protected:\r
424     void                GetMessageText(CFX_WideString &wsMessage, FX_WSTR wsMessageType);\r
425     void                SetMessageText(CFX_WideString &wsMessage, FX_WSTR wsMessageType);\r
426     FX_BOOL             SetTestValue(FX_INT32 iType, CFX_WideString &wsValue, XFA_ATTRIBUTEENUM eName);\r
427 };\r
428 class CXFA_Variables : public CXFA_Data\r
429 {\r
430 public:\r
431     CXFA_Variables(CXFA_Node* pNode);\r
432 \r
433     FX_INT32    CountScripts();\r
434     CXFA_Script GetScript(FX_INT32 nIndex);\r
435 };\r
436 class CXFA_Bind : public CXFA_Data\r
437 {\r
438 public:\r
439     CXFA_Bind(CXFA_Node* pNode);\r
440     FX_INT32    GetMatch();\r
441     void                GetRef(CFX_WideStringC &wsRef);\r
442     void                GetPicture(CFX_WideString &wsPicture);\r
443     FX_BOOL             SetMatch(FX_INT32 iMatch);\r
444     FX_BOOL             SetRef(const CFX_WideString& wsRef);\r
445     FX_BOOL             SetPicture(const CFX_WideString& wsPicture);\r
446 };\r
447 class CXFA_Assist : public CXFA_Data\r
448 {\r
449 public:\r
450     CXFA_Assist(CXFA_Node* pNode);\r
451 \r
452     CXFA_ToolTip        GetToolTip();\r
453 };\r
454 class CXFA_ToolTip : public CXFA_Data\r
455 {\r
456 public:\r
457     CXFA_ToolTip(CXFA_Node* pNode);\r
458     FX_BOOL GetTip(CFX_WideString &wsTip);\r
459     FX_BOOL     SetTip(const CFX_WideString& wsTip);\r
460 };\r
461 class CXFA_BindItems : public CXFA_Data\r
462 {\r
463 public:\r
464     CXFA_BindItems(CXFA_Node* pNode);\r
465     void GetConnection(CFX_WideStringC &wsConnection);\r
466     void GetLabelRef(CFX_WideStringC &wsLabelRef);\r
467     void GetValueRef(CFX_WideStringC &wsValueRef);\r
468     void GetRef(CFX_WideStringC &wsRef);\r
469     FX_BOOL SetConnection(const CFX_WideString& wsConnection);\r
470     FX_BOOL SetLabelRef(const CFX_WideString& wsLabelRef);\r
471     FX_BOOL SetValueRef(const CFX_WideString& wsValueRef);\r
472     FX_BOOL SetRef(const CFX_WideString& wsRef);\r
473 };\r
474 #define XFA_STROKE_SAMESTYLE_NoPresence 1\r
475 #define XFA_STROKE_SAMESTYLE_Corner             2\r
476 class CXFA_Stroke : public CXFA_Data\r
477 {\r
478 public:\r
479 \r
480     CXFA_Stroke(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
481 \r
482     FX_BOOL                     IsCorner() const\r
483     {\r
484         return GetClassID() == XFA_ELEMENT_Corner;\r
485     }\r
486 \r
487     FX_BOOL                     IsEdge() const\r
488     {\r
489         return GetClassID() == XFA_ELEMENT_Edge;\r
490     }\r
491 \r
492     FX_INT32            GetPresence() const;\r
493     FX_BOOL                     IsVisible() const\r
494     {\r
495         return GetPresence() == XFA_ATTRIBUTEENUM_Visible;\r
496     }\r
497 \r
498     FX_INT32            GetCapType() const;\r
499 \r
500     FX_INT32            GetStrokeType() const;\r
501 \r
502     FX_FLOAT            GetThickness() const;\r
503     CXFA_Measurement GetMSThickness() const;\r
504 \r
505     void                        SetThickness(FX_FLOAT fThickness);\r
506     void                        SetMSThickness(CXFA_Measurement msThinkness);\r
507 \r
508     FX_ARGB                     GetColor() const;\r
509 \r
510     void                        SetColor(FX_ARGB argb);\r
511 \r
512     FX_INT32            GetJoinType() const;\r
513 \r
514     FX_BOOL                     IsInverted() const;\r
515 \r
516     FX_FLOAT            GetRadius() const;\r
517 \r
518     FX_BOOL                     SameStyles(CXFA_Stroke stroke, FX_DWORD dwFlags = 0) const;\r
519 };\r
520 class CXFA_Corner : public CXFA_Stroke\r
521 {\r
522 public:\r
523     CXFA_Corner(CXFA_Node* pNode) : CXFA_Stroke(pNode) {}\r
524 };\r
525 class CXFA_Edge : public CXFA_Stroke\r
526 {\r
527 public:\r
528     CXFA_Edge(CXFA_Node* pNode) : CXFA_Stroke(pNode) {}\r
529 };\r
530 typedef CFX_ArrayTemplate<CXFA_Stroke>  CXFA_StrokeArray;\r
531 typedef CFX_ArrayTemplate<CXFA_Edge>    CXFA_EdgeArray;\r
532 typedef CFX_ArrayTemplate<CXFA_Corner>  CXFA_CornerArray;\r
533 class CXFA_Box : public CXFA_Data\r
534 {\r
535 public:\r
536 \r
537     CXFA_Box(CXFA_Node *pNode) : CXFA_Data(pNode) {}\r
538 \r
539     FX_BOOL                     IsArc() const\r
540     {\r
541         return GetClassID() == XFA_ELEMENT_Arc;\r
542     }\r
543 \r
544     FX_BOOL                     IsBorder() const\r
545     {\r
546         return GetClassID() == XFA_ELEMENT_Border;\r
547     }\r
548 \r
549     FX_BOOL                     IsRectangle() const\r
550     {\r
551         return GetClassID() == XFA_ELEMENT_Rectangle;\r
552     }\r
553 \r
554     FX_INT32            GetBreak() const;\r
555 \r
556     FX_INT32            GetHand() const;\r
557 \r
558     FX_INT32            GetPresence() const;\r
559 \r
560     FX_INT32            CountCorners() const;\r
561 \r
562     CXFA_Corner         GetCorner(FX_INT32 nIndex) const;\r
563 \r
564     FX_INT32            CountEdges() const;\r
565 \r
566     CXFA_Edge           GetEdge(FX_INT32 nIndex = 0) const;\r
567 \r
568     void                        GetStrokes(CXFA_StrokeArray &strokes) const;\r
569 \r
570     FX_BOOL                     IsCircular() const;\r
571 \r
572     FX_BOOL                     GetStartAngle(FX_FLOAT &fStartAngle) const;\r
573     FX_FLOAT            GetStartAngle() const\r
574     {\r
575         FX_FLOAT fStartAngle;\r
576         GetStartAngle(fStartAngle);\r
577         return fStartAngle;\r
578     }\r
579 \r
580     FX_BOOL                     GetSweepAngle(FX_FLOAT &fSweepAngle) const;\r
581     FX_FLOAT            GetSweepAngle() const\r
582     {\r
583         FX_FLOAT fSweepAngle;\r
584         GetSweepAngle(fSweepAngle);\r
585         return fSweepAngle;\r
586     }\r
587 \r
588     CXFA_Fill           GetFill(FX_BOOL bModified = FALSE) const;\r
589 \r
590     CXFA_Margin         GetMargin() const;\r
591 \r
592     FX_BOOL                     SameStyles() const;\r
593 \r
594     FX_INT32            Get3DStyle(FX_BOOL &bVisible, FX_FLOAT &fThickness) const;\r
595 };\r
596 class CXFA_Arc : public CXFA_Box\r
597 {\r
598 public:\r
599     CXFA_Arc(CXFA_Node *pNode) : CXFA_Box(pNode) {}\r
600 };\r
601 class CXFA_Border : public CXFA_Box\r
602 {\r
603 public:\r
604     CXFA_Border(CXFA_Node *pNode) : CXFA_Box(pNode) {}\r
605 };\r
606 class CXFA_Rectangle : public CXFA_Box\r
607 {\r
608 public:\r
609     CXFA_Rectangle(CXFA_Node *pNode) : CXFA_Box(pNode) {}\r
610 };\r
611 enum XFA_CHECKSTATE {\r
612     XFA_CHECKSTATE_On = 0,\r
613     XFA_CHECKSTATE_Off = 1,\r
614     XFA_CHECKSTATE_Neutral = 2,\r
615 };\r
616 enum XFA_VALUEPICTURE {\r
617     XFA_VALUEPICTURE_Raw = 0,\r
618     XFA_VALUEPICTURE_Display,\r
619     XFA_VALUEPICTURE_Edit,\r
620     XFA_VALUEPICTURE_DataBind,\r
621 };\r
622 class CXFA_WidgetData : public CXFA_Data\r
623 {\r
624 public:\r
625     CXFA_WidgetData(CXFA_Node *pNode);\r
626     CXFA_Node*          GetUIChild();\r
627 \r
628     XFA_ELEMENT         GetUIType();\r
629     CFX_WideString      GetRawValue();\r
630 \r
631     FX_INT32            GetAccess(FX_BOOL bTemplate = FALSE);\r
632 \r
633     FX_BOOL                     GetAccessKey(CFX_WideStringC &wsAccessKey);\r
634 \r
635     FX_INT32            GetAnchorType();\r
636 \r
637     FX_INT32            GetColSpan();\r
638 \r
639     FX_INT32            GetPresence();\r
640 \r
641     FX_INT32            GetRotate();\r
642 \r
643     CXFA_Border         GetBorder(FX_BOOL bModified = FALSE);\r
644 \r
645     CXFA_Caption        GetCaption(FX_BOOL bModified = FALSE);\r
646 \r
647     CXFA_Font           GetFont(FX_BOOL bModified = FALSE);\r
648 \r
649     CXFA_Margin         GetMargin(FX_BOOL bModified = FALSE);\r
650 \r
651     CXFA_Para           GetPara(FX_BOOL bModified = FALSE);\r
652 \r
653     CXFA_Keep           GetKeep(FX_BOOL bModified = FALSE);\r
654 \r
655     void                        GetEventList(CXFA_NodeArray &events);\r
656     FX_INT32            GetEventByActivity(FX_INT32 iActivity, CXFA_NodeArray &events, FX_BOOL bIsFormReady = FALSE);\r
657 \r
658     CXFA_Value          GetDefaultValue(FX_BOOL bModified = FALSE);\r
659 \r
660     CXFA_Value          GetFormValue(FX_BOOL bModified = FALSE);\r
661 \r
662     CXFA_Calculate      GetCalculate(FX_BOOL bModified = FALSE);\r
663 \r
664     CXFA_Validate       GetValidate(FX_BOOL bModified = FALSE);\r
665 \r
666     CXFA_Variables      GetVariables(FX_BOOL bModified = FALSE);\r
667 \r
668     CXFA_Bind           GetBind(FX_BOOL bModified = FALSE);\r
669 \r
670     CXFA_Assist         GetAssist(FX_BOOL bModified = FALSE);\r
671 \r
672     void                        GetRelevant(CFX_WideStringC &wsRelevant);\r
673     FX_DWORD            GetRelevantStatus();\r
674 \r
675     FX_BOOL                     GetWidth(FX_FLOAT &fWidth);\r
676     FX_BOOL                     GetHeight(FX_FLOAT &fHeight);\r
677 \r
678     FX_BOOL                     GetMinWidth(FX_FLOAT &fMinWidth);\r
679     FX_BOOL                     GetMinHeight(FX_FLOAT &fMinHeight);\r
680 \r
681     FX_BOOL                     GetMaxWidth(FX_FLOAT &fMaxWidth);\r
682     FX_BOOL                     GetMaxHeight(FX_FLOAT &fMaxHeight);\r
683 \r
684     CXFA_BindItems      GetBindItems();\r
685     FX_BOOL                     SetAccess(FX_INT32 iAccess, FX_BOOL bNotify = TRUE);\r
686     FX_BOOL                     SetAccessKey(const CFX_WideString& wsAccessKey);\r
687     FX_BOOL                     SetAnchorType(FX_INT32 iType);\r
688     FX_BOOL                     SetColSpan(FX_INT32 iColSpan);\r
689     FX_BOOL                     SetPresence(FX_INT32 iPresence);\r
690     FX_BOOL                     SetRotate(FX_INT32 iRotate);\r
691     FX_BOOL                     SetRelevant(const CFX_WideString& wsRelevant);\r
692     FX_BOOL                     SetStatus(FX_DWORD dwStatus);\r
693     FX_BOOL                     SetWidth(FX_FLOAT fWidth);\r
694     FX_BOOL                     SetHeight(FX_FLOAT fHeight);\r
695     FX_BOOL                     SetMinWidth(FX_FLOAT fMinWidth);\r
696     FX_BOOL                     SetMinHeight(FX_FLOAT fMinHeight);\r
697     FX_BOOL                     SetMaxWidth(FX_FLOAT fMaxWidth);\r
698     FX_BOOL                     SetMaxHeight(FX_FLOAT fMaxHeight);\r
699     FX_BOOL                     SetPos(FX_FLOAT x, FX_FLOAT y);\r
700     FX_BOOL                     SetName(const CFX_WideString& wsName);\r
701     FX_BOOL                     SetButtonHighlight(FX_INT32 iButtonHighlight);\r
702     FX_BOOL                     SetButtonRollover(const CFX_WideString &wsRollover, FX_BOOL bRichText);\r
703     FX_BOOL                     SetButtonDown(const CFX_WideString& wsDown, FX_BOOL bRichText);\r
704     FX_BOOL                     SetCheckButtonShape(FX_INT32 iCheckButtonShape);\r
705     FX_BOOL                     SetCheckButtonMark(FX_INT32 iCheckButtonMark);\r
706     FX_BOOL                     SetCheckButtonSize(FX_FLOAT fCheckButtonMark);\r
707 \r
708     CXFA_Border         GetUIBorder(FX_BOOL bModified = FALSE);\r
709 \r
710     CXFA_Margin         GetUIMargin(FX_BOOL bModified = FALSE);\r
711     void                        GetUIMargin(CFX_RectF &rtUIMargin);\r
712 \r
713     FX_INT32            GetButtonHighlight();\r
714     FX_BOOL                     GetButtonRollover(CFX_WideString &wsRollover, FX_BOOL &bRichText);\r
715     FX_BOOL                     GetButtonDown(CFX_WideString &wsDown, FX_BOOL &bRichText);\r
716 \r
717 \r
718     FX_INT32            GetCheckButtonShape();\r
719 \r
720     FX_INT32            GetCheckButtonMark();\r
721 \r
722     FX_FLOAT            GetCheckButtonSize();\r
723 \r
724     FX_BOOL                     IsAllowNeutral();\r
725     FX_BOOL                     IsRadioButton();\r
726     XFA_CHECKSTATE      GetCheckState();\r
727     void                        SetCheckState(XFA_CHECKSTATE eCheckState, FX_BOOL bNotify = TRUE);\r
728 \r
729     CXFA_Node*          GetExclGroupNode();\r
730 \r
731     CXFA_Node*          GetSelectedMember();\r
732 \r
733     CXFA_Node*          SetSelectedMember(FX_WSTR wsName, FX_BOOL bNotify = TRUE);\r
734 \r
735     void                        SetSelectedMemberByValue(FX_WSTR wsValue, FX_BOOL bNotify = TRUE, FX_BOOL bScriptModify = FALSE, FX_BOOL bSyncData = TRUE);\r
736     CXFA_Node*          GetExclGroupFirstMember();\r
737     CXFA_Node*          GetExclGroupNextMember(CXFA_Node* pNode);\r
738 \r
739     FX_INT32            GetChoiceListCommitOn();\r
740 \r
741     FX_BOOL                     IsChoiceListAllowTextEntry();\r
742 \r
743     FX_INT32            GetChoiceListOpen();\r
744     FX_BOOL                     IsListBox();\r
745     FX_INT32            CountChoiceListItems(FX_BOOL bSaveValue = FALSE);\r
746 \r
747     FX_BOOL                     GetChoiceListItem(CFX_WideString &wsText, FX_INT32 nIndex, FX_BOOL bSaveValue = FALSE);\r
748     void                        GetChoiceListItems(CFX_WideStringArray &wsTextArray, FX_BOOL bSaveValue = FALSE);\r
749 \r
750     FX_INT32            CountSelectedItems();\r
751 \r
752     FX_INT32            GetSelectedItem(FX_INT32 nIndex = 0);\r
753     void                        GetSelectedItems(CFX_Int32Array &iSelArray);\r
754     void                        GetSelectedItemsValue(CFX_WideStringArray &wsSelTextArray);\r
755 \r
756     FX_BOOL                     GetItemState(FX_INT32 nIndex);\r
757 \r
758     void                        SetItemState(FX_INT32 nIndex, FX_BOOL bSelected, FX_BOOL bNotify = FALSE, FX_BOOL bScriptModify = FALSE, FX_BOOL bSyncData = TRUE);\r
759     void                        SetSelectdItems(CFX_Int32Array &iSelArray, FX_BOOL bNotify = FALSE, FX_BOOL bScriptModify = FALSE, FX_BOOL bSyncData = TRUE);\r
760     void                        ClearAllSelections();\r
761     void                        InsertItem(const CFX_WideString &wsLabel, const CFX_WideString &wsValue, FX_INT32 nIndex = -1, FX_BOOL bNotify = FALSE);\r
762     void                        GetItemLabel(FX_WSTR wsValue, CFX_WideString &wsLabel);\r
763     void                        GetItemValue(FX_WSTR wsLabel, CFX_WideString &wsValue);\r
764     FX_BOOL                     DeleteItem(FX_INT32 nIndex, FX_BOOL bNotify = FALSE, FX_BOOL bScriptModify = FALSE, FX_BOOL bSyncData = TRUE);\r
765 \r
766     FX_INT32            GetHorizontalScrollPolicy();\r
767 \r
768     FX_INT32            GetNumberOfCells();\r
769 \r
770     FX_BOOL                     IsDateTimeEditUsePicker();\r
771 \r
772     FX_BOOL             SetValue(const CFX_WideString& wsValue, XFA_VALUEPICTURE eValueType);\r
773     FX_BOOL             GetPictureContent(CFX_WideString &wsPicture, XFA_VALUEPICTURE ePicture);\r
774     IFX_Locale* GetLocal();\r
775     FX_BOOL             GetValue(CFX_WideString &wsValue, XFA_VALUEPICTURE eValueType);\r
776     FX_BOOL             GetNormalizeDataValue(FX_WSTR wsValue, CFX_WideString &wsNormalizeValue);\r
777     FX_BOOL             GetFormatDataValue(FX_WSTR wsValue, CFX_WideString &wsFormatedValue);\r
778     void                NormalizeNumStr(const CFX_WideString& wsValue, CFX_WideString& wsOutput);\r
779 \r
780     CFX_WideString      GetBarcodeType();\r
781     FX_BOOL                     GetBarcodeAttribute_CharEncoding(FX_INT32& val);\r
782     FX_BOOL                     GetBarcodeAttribute_Checksum(FX_INT32& val);\r
783     FX_BOOL                     GetBarcodeAttribute_DataLength(FX_INT32& val);\r
784     FX_BOOL                     GetBarcodeAttribute_StartChar(FX_CHAR& val);\r
785     FX_BOOL                     GetBarcodeAttribute_EndChar(FX_CHAR& val);\r
786     FX_BOOL                     GetBarcodeAttribute_ECLevel(FX_INT32& val);\r
787     FX_BOOL                     GetBarcodeAttribute_ModuleWidth(FX_INT32& val);\r
788     FX_BOOL                     GetBarcodeAttribute_ModuleHeight(FX_INT32& val);\r
789     FX_BOOL                     GetBarcodeAttribute_PrintChecksum(FX_BOOL& val);\r
790     FX_BOOL                     GetBarcodeAttribute_TextLocation(FX_INT32& val);\r
791     FX_BOOL                     GetBarcodeAttribute_Truncate(FX_BOOL& val);\r
792     FX_BOOL                     GetBarcodeAttribute_WideNarrowRatio(FX_FLOAT& val);\r
793 \r
794     void                        GetPasswordChar(CFX_WideString &wsPassWord);\r
795 \r
796     FX_BOOL                     IsAllowRichText();\r
797 \r
798     FX_BOOL                     IsMultiLine();\r
799 \r
800     FX_INT32            GetVerticalScrollPolicy();\r
801 \r
802     FX_INT32            GetMaxChars(XFA_ELEMENT& eType);\r
803 \r
804     FX_BOOL                     GetFracDigits(FX_INT32 &iFracDigits);\r
805 \r
806     FX_BOOL                     GetLeadDigits(FX_INT32 &iLeadDigits);\r
807 \r
808     CXFA_Filter         GetFilter(FX_BOOL bModified = FALSE);\r
809     CXFA_Manifest       GetManifest(FX_BOOL bModified = FALSE);\r
810     FX_BOOL                     m_bIsNull;\r
811     FX_BOOL                     m_bPreNull;\r
812 protected:\r
813     void                        SyncValue(const CFX_WideString& wsValue, FX_BOOL bNotify);\r
814     void                        InsertListTextItem(CXFA_Node* pItems, FX_WSTR wsText, FX_INT32 nIndex = -1);\r
815     void                        FormatNumStr(const CFX_WideString& wsValue, IFX_Locale* pLocale, CFX_WideString& wsOutput);\r
816     CXFA_Node*          m_pUiChildNode;\r
817     XFA_ELEMENT         m_eUIType;\r
818 };\r
819 class CXFA_Occur : public CXFA_Data\r
820 {\r
821 public:\r
822     CXFA_Occur(CXFA_Node* pNode);\r
823     FX_INT32    GetMax();\r
824     FX_INT32    GetMin();\r
825     FX_INT32    GetInitial();\r
826     FX_BOOL             GetOccurInfo(FX_INT32& iMin, FX_INT32& iMax, FX_INT32& iInit);\r
827     void                SetMax(FX_INT32 iMax);\r
828     void                SetMin(FX_INT32 iMin);\r
829 };\r
830 class CXFA_Filter : public CXFA_Data\r
831 {\r
832 public:\r
833     CXFA_Filter(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
834     CFX_WideString                      GetFilterString(XFA_ATTRIBUTE eAttribute);\r
835     XFA_ATTRIBUTEENUM           GetAppearanceFilterType();\r
836     CFX_WideString                      GetAppearanceFilterContent();\r
837     XFA_ATTRIBUTEENUM           GetCertificatesCredentialServerPolicy();\r
838     CFX_WideString                      GetCertificatesURL();\r
839     CFX_WideString                      GetCertificatesURLPolicy();\r
840     CXFA_WrapCertificate        GetCertificatesEncryption(FX_BOOL bModified = FALSE);\r
841     CXFA_WrapCertificate        GetCertificatesIssuers(FX_BOOL bModified = FALSE);\r
842     CFX_WideString                      GetCertificatesKeyUsageString(XFA_ATTRIBUTE eAttribute);\r
843     CXFA_Oids                           GetCertificatesOids();\r
844     CXFA_WrapCertificate        GetCertificatesSigning(FX_BOOL bModified = FALSE);\r
845     CXFA_DigestMethods          GetDigestMethods(FX_BOOL bModified = FALSE);\r
846     CXFA_Encodings                      GetEncodings(FX_BOOL bModified = FALSE);\r
847     CXFA_EncryptionMethods      GetEncryptionMethods(FX_BOOL bModified = FALSE);\r
848     XFA_ATTRIBUTEENUM           GetHandlerType();\r
849     CFX_WideString                      GetHandlerContent();\r
850     XFA_ATTRIBUTEENUM           GetlockDocumentType();\r
851     CFX_WideString                      GetlockDocumentContent();\r
852     FX_INT32                            GetMDPPermissions();\r
853     XFA_ATTRIBUTEENUM           GetMDPSignatureType();\r
854 \r
855     CXFA_Reasons                        GetReasons(FX_BOOL bModified = FALSE);\r
856     CFX_WideString                      GetTimeStampServer();\r
857     XFA_ATTRIBUTEENUM           GetTimeStampType();\r
858 };\r
859 class CXFA_Certificate : public CXFA_Data\r
860 {\r
861 public:\r
862     CXFA_Certificate(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
863     CFX_WideString              GetCertificateName();\r
864     CFX_WideString              GetCertificateContent();\r
865 };\r
866 class CXFA_WrapCertificate : public CXFA_Data\r
867 {\r
868 public:\r
869     CXFA_WrapCertificate(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
870     XFA_ATTRIBUTEENUM   GetType();\r
871     FX_INT32                    CountCertificates();\r
872     CXFA_Certificate    GetCertificate(FX_INT32 nIndex);\r
873 };\r
874 class CXFA_Oids : public CXFA_Data\r
875 {\r
876 public:\r
877     CXFA_Oids(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
878     XFA_ATTRIBUTEENUM   GetOidsType();\r
879     FX_INT32                    CountOids();\r
880     CFX_WideString              GetOidContent(FX_INT32 nIndex);\r
881 };\r
882 class CXFA_SubjectDNs : public CXFA_Data\r
883 {\r
884 public:\r
885     CXFA_SubjectDNs(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
886     XFA_ATTRIBUTEENUM   GetSubjectDNsType();\r
887     FX_INT32                            CountSubjectDNs();\r
888     CFX_WideString                      GetSubjectDNString(FX_INT32 nIndex, XFA_ATTRIBUTE eAttribute);\r
889     CFX_WideString                      GetSubjectDNContent(FX_INT32 nIndex);\r
890 };\r
891 class CXFA_DigestMethods : public CXFA_Data\r
892 {\r
893 public:\r
894     CXFA_DigestMethods(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
895     XFA_ATTRIBUTEENUM   GetDigestMethodsType();\r
896     FX_INT32                            CountDigestMethods();\r
897     CFX_WideString                      GetDigestMethodContent(FX_INT32 nIndex);\r
898 };\r
899 class CXFA_Encodings : public CXFA_Data\r
900 {\r
901 public:\r
902     CXFA_Encodings(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
903     XFA_ATTRIBUTEENUM           GetEncodingsType();\r
904     FX_INT32                            CountEncodings();\r
905     CFX_WideString                      GetEncodingContent(FX_INT32 nIndex);\r
906 };\r
907 class CXFA_EncryptionMethods : public CXFA_Data\r
908 {\r
909 public:\r
910     CXFA_EncryptionMethods(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
911     XFA_ATTRIBUTEENUM           GetEncryptionMethodsType();\r
912     FX_INT32                            CountEncryptionMethods();\r
913     CFX_WideString                      GetEncryptionMethodContent(FX_INT32 nIndex);\r
914 };\r
915 class CXFA_Reasons : public CXFA_Data\r
916 {\r
917 public:\r
918     CXFA_Reasons(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
919     XFA_ATTRIBUTEENUM           GetReasonsType();\r
920     FX_INT32                            CountReasons();\r
921     CFX_WideString                      GetReasonContent(FX_INT32 nIndex);\r
922 };\r
923 class CXFA_Manifest : public CXFA_Data\r
924 {\r
925 public:\r
926     CXFA_Manifest(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
927     XFA_ATTRIBUTEENUM   GetAction();\r
928     FX_INT32                    CountReives();\r
929     CFX_WideString              GetRefContent(FX_INT32 nIndex);\r
930 };\r
931 #endif\r