Merge to XFA: Use stdint.h types throughout PDFium.
[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\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     int32_t             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     int32_t             GetFillType();\r
100 \r
101     int32_t             GetPattern(FX_ARGB& foreColor);\r
102 \r
103     int32_t             GetStipple(FX_ARGB& stippleColor);\r
104 \r
105     int32_t             GetLinear(FX_ARGB& endColor);\r
106 \r
107     int32_t             GetRadial(FX_ARGB& endColor);\r
108     FX_BOOL                     SetPresence(int32_t iPresence);\r
109     FX_BOOL                     SetFillType(int32_t iType);\r
110     FX_BOOL                     SetPattern(int32_t iPattern, FX_ARGB foreColor);\r
111     FX_BOOL                     SetStipple(int32_t iStipple, FX_ARGB stippleColor);\r
112     FX_BOOL                     SetLinear(int32_t iLinear, FX_ARGB endColor);\r
113     FX_BOOL                     SetRadial(int32_t 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     int32_t             GetLineThrough();\r
142 \r
143     int32_t             GetLineThroughPeriod();\r
144 \r
145     int32_t             GetOverline();\r
146 \r
147     int32_t             GetOverlinePeriod();\r
148 \r
149     int32_t             GetUnderline();\r
150 \r
151     int32_t             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(int32_t iLineThrough);\r
171     FX_BOOL                     SetLineThroughPeriod(int32_t iLineThroughPeriod);\r
172     FX_BOOL                     SetOverline(int32_t iOverline);\r
173     FX_BOOL                     SetOverlinePeriod(int32_t iOverlinePeriod);\r
174     FX_BOOL                     SetUnderline(int32_t iUnderline);\r
175     FX_BOOL                     SetUnderlinePeriod(int32_t 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     int32_t             GetPresence();\r
183 \r
184     int32_t             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(int32_t iPresence);\r
196     FX_BOOL                     SetPlacementType(int32_t 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     int32_t             GetHorizontalAlign();\r
205 \r
206     int32_t             GetVerticalAlign();\r
207 \r
208     FX_FLOAT            GetLineHeight();\r
209     FX_FLOAT            GetMarginLeft();\r
210     FX_FLOAT            GetMarginRight();\r
211     int32_t             GetOrphans();\r
212     FX_FLOAT            GetRadixOffset();\r
213     FX_FLOAT            GetSpaceAbove();\r
214     FX_FLOAT            GetSpaceBelow();\r
215     FX_FLOAT            GetTextIndent();\r
216     int32_t             GetWidows();\r
217     FX_BOOL                     SetHorizontalAlign(int32_t iHorizontalAlign);\r
218     FX_BOOL                     SetVerticalAlign(int32_t 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(int32_t 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(int32_t 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     int32_t             GetIntact();\r
235     int32_t             GetNext();\r
236     int32_t             GetPrevious();\r
237     FX_BOOL                     SetIntact(int32_t iIntact);\r
238     FX_BOOL                     SetNext(int32_t iNext);\r
239     FX_BOOL                     SetPrevious(int32_t 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     int32_t                     GetActivity();\r
264 \r
265     int32_t                     GetEventType();\r
266     void                                GetRef(CFX_WideStringC &wsRef);\r
267 \r
268     int32_t                     GetExecuteRunAt();\r
269     int32_t                     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     int32_t                     GetSignDataOperation();\r
280     void                                GetSignDataTarget(CFX_WideString &wsTarget);\r
281     FX_BOOL                             SetActivity(int32_t iActivity);\r
282     FX_BOOL                             SetEventType(int32_t iEventType);\r
283     FX_BOOL                             SetExecuteRunAt(int32_t iExecuteRunAt);\r
284     FX_BOOL                             SetExecuteType(int32_t iExecuteType);\r
285     FX_BOOL                             SetExecuteConnection(const CFX_WideString& wsConnection);\r
286     FX_BOOL                             SetSignDataOperation(int32_t 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     int32_t                     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(int32_t 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     int32_t                     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(int32_t 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     int32_t             GetHand();\r
343     FX_BOOL                     GetSlop();\r
344     CXFA_Edge           GetEdge();\r
345     FX_BOOL                     SetHand(int32_t iHand);\r
346     FX_BOOL                     SetSlop(int32_t 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     int32_t     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(int32_t 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     int32_t     GetMaxLength();\r
368     void                GetRid(CFX_WideStringC &wsRid);\r
369     int32_t     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(int32_t iMaxLength);\r
374     FX_BOOL             SetRid(const CFX_WideString& wsRid);\r
375     FX_BOOL             SetTransferEncoding(int32_t 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     int32_t     GetAspect();\r
383     FX_BOOL             GetContentType(CFX_WideString &wsContentType);\r
384     FX_BOOL             GetHref(CFX_WideString &wsHref);\r
385     int32_t     GetTransferEncoding();\r
386     FX_BOOL             GetContent(CFX_WideString &wsText);\r
387     FX_BOOL             SetAspect(int32_t iAspect);\r
388     FX_BOOL             SetContentType(const CFX_WideString& wsContentType);\r
389     FX_BOOL             SetHref(const CFX_WideString& wsHref);\r
390     FX_BOOL             SetTransferEncoding(int32_t 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     int32_t             GetOverride();\r
401     CXFA_Script         GetScript();\r
402     void                        GetMessageText(CFX_WideString &wsMessage);\r
403     FX_BOOL                     SetOverride(int32_t 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     int32_t     GetFormatTest();\r
411     FX_BOOL             SetFormatTest(CFX_WideString wsValue);\r
412     int32_t     GetNullTest();\r
413     FX_BOOL             SetNullTest(CFX_WideString wsValue);\r
414     int32_t     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(int32_t 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     int32_t     CountScripts();\r
434     CXFA_Script GetScript(int32_t 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     int32_t     GetMatch();\r
441     void                GetRef(CFX_WideStringC &wsRef);\r
442     void                GetPicture(CFX_WideString &wsPicture);\r
443     FX_BOOL             SetMatch(int32_t 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     int32_t             GetPresence() const;\r
493     FX_BOOL                     IsVisible() const\r
494     {\r
495         return GetPresence() == XFA_ATTRIBUTEENUM_Visible;\r
496     }\r
497 \r
498     int32_t             GetCapType() const;\r
499 \r
500     int32_t             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     int32_t             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     int32_t             GetBreak() const;\r
555 \r
556     int32_t             GetHand() const;\r
557 \r
558     int32_t             GetPresence() const;\r
559 \r
560     int32_t             CountCorners() const;\r
561 \r
562     CXFA_Corner         GetCorner(int32_t nIndex) const;\r
563 \r
564     int32_t             CountEdges() const;\r
565 \r
566     CXFA_Edge           GetEdge(int32_t 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     int32_t             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     int32_t            GetAccess(FX_BOOL bTemplate = FALSE);\r
631     FX_BOOL             GetAccessKey(CFX_WideStringC &wsAccessKey);\r
632     int32_t            GetAnchorType();\r
633     int32_t            GetColSpan();\r
634     int32_t            GetPresence();\r
635     int32_t            GetRotate();\r
636     CXFA_Border         GetBorder(FX_BOOL bModified = FALSE);\r
637     CXFA_Caption        GetCaption(FX_BOOL bModified = FALSE);\r
638     CXFA_Font           GetFont(FX_BOOL bModified = FALSE);\r
639     CXFA_Margin         GetMargin(FX_BOOL bModified = FALSE);\r
640     CXFA_Para           GetPara(FX_BOOL bModified = FALSE);\r
641     CXFA_Keep           GetKeep(FX_BOOL bModified = FALSE);\r
642     void                GetEventList(CXFA_NodeArray &events);\r
643     int32_t            GetEventByActivity(int32_t iActivity,\r
644                                            CXFA_NodeArray &events,\r
645                                            FX_BOOL bIsFormReady = FALSE);\r
646     CXFA_Value          GetDefaultValue(FX_BOOL bModified = FALSE);\r
647     CXFA_Value          GetFormValue(FX_BOOL bModified = FALSE);\r
648     CXFA_Calculate      GetCalculate(FX_BOOL bModified = FALSE);\r
649     CXFA_Validate       GetValidate(FX_BOOL bModified = FALSE);\r
650     CXFA_Variables      GetVariables(FX_BOOL bModified = FALSE);\r
651     CXFA_Bind           GetBind(FX_BOOL bModified = FALSE);\r
652     CXFA_Assist         GetAssist(FX_BOOL bModified = FALSE);\r
653     void                GetRelevant(CFX_WideStringC &wsRelevant);\r
654     FX_DWORD            GetRelevantStatus();\r
655     FX_BOOL             GetWidth(FX_FLOAT &fWidth);\r
656     FX_BOOL             GetHeight(FX_FLOAT &fHeight);\r
657     FX_BOOL             GetMinWidth(FX_FLOAT &fMinWidth);\r
658     FX_BOOL             GetMinHeight(FX_FLOAT &fMinHeight);\r
659     FX_BOOL             GetMaxWidth(FX_FLOAT &fMaxWidth);\r
660     FX_BOOL             GetMaxHeight(FX_FLOAT &fMaxHeight);\r
661     CXFA_BindItems      GetBindItems();\r
662     FX_BOOL             SetAccess(int32_t iAccess, FX_BOOL bNotify = TRUE);\r
663     FX_BOOL             SetAccessKey(const CFX_WideString& wsAccessKey);\r
664     FX_BOOL             SetAnchorType(int32_t iType);\r
665     FX_BOOL             SetColSpan(int32_t iColSpan);\r
666     FX_BOOL             SetPresence(int32_t iPresence);\r
667     FX_BOOL             SetRotate(int32_t iRotate);\r
668     FX_BOOL             SetRelevant(const CFX_WideString& wsRelevant);\r
669     FX_BOOL             SetStatus(FX_DWORD dwStatus);\r
670     FX_BOOL             SetWidth(FX_FLOAT fWidth);\r
671     FX_BOOL             SetHeight(FX_FLOAT fHeight);\r
672     FX_BOOL             SetMinWidth(FX_FLOAT fMinWidth);\r
673     FX_BOOL             SetMinHeight(FX_FLOAT fMinHeight);\r
674     FX_BOOL             SetMaxWidth(FX_FLOAT fMaxWidth);\r
675     FX_BOOL             SetMaxHeight(FX_FLOAT fMaxHeight);\r
676     FX_BOOL             SetPos(FX_FLOAT x, FX_FLOAT y);\r
677     FX_BOOL             SetName(const CFX_WideString& wsName);\r
678     FX_BOOL             SetButtonHighlight(int32_t iButtonHighlight);\r
679     FX_BOOL             SetButtonRollover(const CFX_WideString &wsRollover, FX_BOOL bRichText);\r
680     FX_BOOL             SetButtonDown(const CFX_WideString& wsDown, FX_BOOL bRichText);\r
681     FX_BOOL             SetCheckButtonShape(int32_t iCheckButtonShape);\r
682     FX_BOOL             SetCheckButtonMark(int32_t iCheckButtonMark);\r
683     FX_BOOL             SetCheckButtonSize(FX_FLOAT fCheckButtonMark);\r
684     CXFA_Border         GetUIBorder(FX_BOOL bModified = FALSE);\r
685     CXFA_Margin         GetUIMargin(FX_BOOL bModified = FALSE);\r
686     void                GetUIMargin(CFX_RectF &rtUIMargin);\r
687     int32_t            GetButtonHighlight();\r
688     FX_BOOL             GetButtonRollover(CFX_WideString &wsRollover, FX_BOOL &bRichText);\r
689     FX_BOOL             GetButtonDown(CFX_WideString &wsDown, FX_BOOL &bRichText);\r
690     int32_t            GetCheckButtonShape();\r
691     int32_t            GetCheckButtonMark();\r
692     FX_FLOAT            GetCheckButtonSize();\r
693     FX_BOOL             IsAllowNeutral();\r
694     FX_BOOL             IsRadioButton();\r
695     XFA_CHECKSTATE      GetCheckState();\r
696     void                SetCheckState(XFA_CHECKSTATE eCheckState, FX_BOOL bNotify = TRUE);\r
697     CXFA_Node*          GetExclGroupNode();\r
698     CXFA_Node*          GetSelectedMember();\r
699     CXFA_Node*          SetSelectedMember(FX_WSTR wsName, FX_BOOL bNotify = TRUE);\r
700     void                SetSelectedMemberByValue(FX_WSTR wsValue, \r
701                                                  FX_BOOL bNotify = TRUE,\r
702                                                  FX_BOOL bScriptModify = FALSE,\r
703                                                  FX_BOOL bSyncData = TRUE);\r
704     CXFA_Node*          GetExclGroupFirstMember();\r
705     CXFA_Node*          GetExclGroupNextMember(CXFA_Node* pNode);\r
706     int32_t            GetChoiceListCommitOn();\r
707     FX_BOOL             IsChoiceListAllowTextEntry();\r
708     int32_t            GetChoiceListOpen();\r
709     FX_BOOL             IsListBox();\r
710     int32_t            CountChoiceListItems(FX_BOOL bSaveValue = FALSE);\r
711     FX_BOOL             GetChoiceListItem(CFX_WideString &wsText, int32_t nIndex, FX_BOOL bSaveValue = FALSE);\r
712     void                GetChoiceListItems(CFX_WideStringArray &wsTextArray, FX_BOOL bSaveValue = FALSE);\r
713     int32_t            CountSelectedItems();\r
714     int32_t            GetSelectedItem(int32_t nIndex = 0);\r
715     void                GetSelectedItems(CFX_Int32Array &iSelArray);\r
716     void                GetSelectedItemsValue(CFX_WideStringArray &wsSelTextArray);\r
717     FX_BOOL             GetItemState(int32_t nIndex);\r
718     void                SetItemState(int32_t nIndex, FX_BOOL bSelected, \r
719                                      FX_BOOL bNotify = FALSE, FX_BOOL bScriptModify = FALSE, \r
720                                      FX_BOOL bSyncData = TRUE);\r
721     void                SetSelectdItems(CFX_Int32Array &iSelArray, FX_BOOL bNotify = FALSE,\r
722                                         FX_BOOL bScriptModify = FALSE, FX_BOOL bSyncData = TRUE);\r
723     void                ClearAllSelections();\r
724     void                InsertItem(const CFX_WideString &wsLabel, const CFX_WideString &wsValue,\r
725                                    int32_t nIndex = -1, FX_BOOL bNotify = FALSE);\r
726     void                GetItemLabel(FX_WSTR wsValue, CFX_WideString &wsLabel);\r
727     void                GetItemValue(FX_WSTR wsLabel, CFX_WideString &wsValue);\r
728     FX_BOOL             DeleteItem(int32_t nIndex, FX_BOOL bNotify = FALSE,\r
729                                    FX_BOOL bScriptModify = FALSE, FX_BOOL bSyncData = TRUE);\r
730     int32_t            GetHorizontalScrollPolicy();\r
731     int32_t            GetNumberOfCells();\r
732     FX_BOOL             IsDateTimeEditUsePicker();\r
733     FX_BOOL             SetValue(const CFX_WideString& wsValue, XFA_VALUEPICTURE eValueType);\r
734     FX_BOOL             GetPictureContent(CFX_WideString &wsPicture, XFA_VALUEPICTURE ePicture);\r
735     IFX_Locale*         GetLocal();\r
736     FX_BOOL             GetValue(CFX_WideString &wsValue, XFA_VALUEPICTURE eValueType);\r
737     FX_BOOL             GetNormalizeDataValue(FX_WSTR wsValue, CFX_WideString &wsNormalizeValue);\r
738     FX_BOOL             GetFormatDataValue(FX_WSTR wsValue, CFX_WideString &wsFormatedValue);\r
739     void                NormalizeNumStr(const CFX_WideString& wsValue, CFX_WideString& wsOutput);\r
740     CFX_WideString      GetBarcodeType();\r
741     FX_BOOL             GetBarcodeAttribute_CharEncoding(int32_t& val);\r
742     FX_BOOL             GetBarcodeAttribute_Checksum(int32_t& val);\r
743     FX_BOOL             GetBarcodeAttribute_DataLength(int32_t& val);\r
744     FX_BOOL             GetBarcodeAttribute_StartChar(FX_CHAR& val);\r
745     FX_BOOL             GetBarcodeAttribute_EndChar(FX_CHAR& val);\r
746     FX_BOOL             GetBarcodeAttribute_ECLevel(int32_t& val);\r
747     FX_BOOL             GetBarcodeAttribute_ModuleWidth(int32_t& val);\r
748     FX_BOOL             GetBarcodeAttribute_ModuleHeight(int32_t& val);\r
749     FX_BOOL             GetBarcodeAttribute_PrintChecksum(FX_BOOL& val);\r
750     FX_BOOL             GetBarcodeAttribute_TextLocation(int32_t& val);\r
751     FX_BOOL             GetBarcodeAttribute_Truncate(FX_BOOL& val);\r
752     FX_BOOL             GetBarcodeAttribute_WideNarrowRatio(FX_FLOAT& val);\r
753     void                GetPasswordChar(CFX_WideString &wsPassWord);\r
754     FX_BOOL             IsAllowRichText();\r
755     FX_BOOL             IsMultiLine();\r
756     int32_t            GetVerticalScrollPolicy();\r
757     int32_t            GetMaxChars(XFA_ELEMENT& eType);\r
758     FX_BOOL             GetFracDigits(int32_t &iFracDigits);\r
759     FX_BOOL             GetLeadDigits(int32_t &iLeadDigits);\r
760     CXFA_Filter         GetFilter(FX_BOOL bModified = FALSE);\r
761     CXFA_Manifest       GetManifest(FX_BOOL bModified = FALSE);\r
762 \r
763     FX_BOOL             m_bIsNull;\r
764     FX_BOOL             m_bPreNull;\r
765 protected:\r
766     void                SyncValue(const CFX_WideString& wsValue, FX_BOOL bNotify);\r
767     void                InsertListTextItem(CXFA_Node* pItems, FX_WSTR wsText, int32_t nIndex = -1);\r
768     void                FormatNumStr(const CFX_WideString& wsValue, IFX_Locale* pLocale, CFX_WideString& wsOutput);\r
769 \r
770     CXFA_Node*          m_pUiChildNode;\r
771     XFA_ELEMENT         m_eUIType;\r
772 };\r
773 class CXFA_Occur : public CXFA_Data\r
774 {\r
775 public:\r
776     CXFA_Occur(CXFA_Node* pNode);\r
777     int32_t     GetMax();\r
778     int32_t     GetMin();\r
779     int32_t     GetInitial();\r
780     FX_BOOL             GetOccurInfo(int32_t& iMin, int32_t& iMax, int32_t& iInit);\r
781     void                SetMax(int32_t iMax);\r
782     void                SetMin(int32_t iMin);\r
783 };\r
784 class CXFA_Filter : public CXFA_Data\r
785 {\r
786 public:\r
787     CXFA_Filter(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
788     CFX_WideString                      GetFilterString(XFA_ATTRIBUTE eAttribute);\r
789     XFA_ATTRIBUTEENUM           GetAppearanceFilterType();\r
790     CFX_WideString                      GetAppearanceFilterContent();\r
791     XFA_ATTRIBUTEENUM           GetCertificatesCredentialServerPolicy();\r
792     CFX_WideString                      GetCertificatesURL();\r
793     CFX_WideString                      GetCertificatesURLPolicy();\r
794     CXFA_WrapCertificate        GetCertificatesEncryption(FX_BOOL bModified = FALSE);\r
795     CXFA_WrapCertificate        GetCertificatesIssuers(FX_BOOL bModified = FALSE);\r
796     CFX_WideString                      GetCertificatesKeyUsageString(XFA_ATTRIBUTE eAttribute);\r
797     CXFA_Oids                           GetCertificatesOids();\r
798     CXFA_WrapCertificate        GetCertificatesSigning(FX_BOOL bModified = FALSE);\r
799     CXFA_DigestMethods          GetDigestMethods(FX_BOOL bModified = FALSE);\r
800     CXFA_Encodings                      GetEncodings(FX_BOOL bModified = FALSE);\r
801     CXFA_EncryptionMethods      GetEncryptionMethods(FX_BOOL bModified = FALSE);\r
802     XFA_ATTRIBUTEENUM           GetHandlerType();\r
803     CFX_WideString                      GetHandlerContent();\r
804     XFA_ATTRIBUTEENUM           GetlockDocumentType();\r
805     CFX_WideString                      GetlockDocumentContent();\r
806     int32_t                             GetMDPPermissions();\r
807     XFA_ATTRIBUTEENUM           GetMDPSignatureType();\r
808 \r
809     CXFA_Reasons                        GetReasons(FX_BOOL bModified = FALSE);\r
810     CFX_WideString                      GetTimeStampServer();\r
811     XFA_ATTRIBUTEENUM           GetTimeStampType();\r
812 };\r
813 class CXFA_Certificate : public CXFA_Data\r
814 {\r
815 public:\r
816     CXFA_Certificate(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
817     CFX_WideString              GetCertificateName();\r
818     CFX_WideString              GetCertificateContent();\r
819 };\r
820 class CXFA_WrapCertificate : public CXFA_Data\r
821 {\r
822 public:\r
823     CXFA_WrapCertificate(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
824     XFA_ATTRIBUTEENUM   GetType();\r
825     int32_t                     CountCertificates();\r
826     CXFA_Certificate    GetCertificate(int32_t nIndex);\r
827 };\r
828 class CXFA_Oids : public CXFA_Data\r
829 {\r
830 public:\r
831     CXFA_Oids(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
832     XFA_ATTRIBUTEENUM   GetOidsType();\r
833     int32_t                     CountOids();\r
834     CFX_WideString              GetOidContent(int32_t nIndex);\r
835 };\r
836 class CXFA_SubjectDNs : public CXFA_Data\r
837 {\r
838 public:\r
839     CXFA_SubjectDNs(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
840     XFA_ATTRIBUTEENUM   GetSubjectDNsType();\r
841     int32_t                             CountSubjectDNs();\r
842     CFX_WideString                      GetSubjectDNString(int32_t nIndex, XFA_ATTRIBUTE eAttribute);\r
843     CFX_WideString                      GetSubjectDNContent(int32_t nIndex);\r
844 };\r
845 class CXFA_DigestMethods : public CXFA_Data\r
846 {\r
847 public:\r
848     CXFA_DigestMethods(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
849     XFA_ATTRIBUTEENUM   GetDigestMethodsType();\r
850     int32_t                             CountDigestMethods();\r
851     CFX_WideString                      GetDigestMethodContent(int32_t nIndex);\r
852 };\r
853 class CXFA_Encodings : public CXFA_Data\r
854 {\r
855 public:\r
856     CXFA_Encodings(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
857     XFA_ATTRIBUTEENUM           GetEncodingsType();\r
858     int32_t                             CountEncodings();\r
859     CFX_WideString                      GetEncodingContent(int32_t nIndex);\r
860 };\r
861 class CXFA_EncryptionMethods : public CXFA_Data\r
862 {\r
863 public:\r
864     CXFA_EncryptionMethods(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
865     XFA_ATTRIBUTEENUM           GetEncryptionMethodsType();\r
866     int32_t                             CountEncryptionMethods();\r
867     CFX_WideString                      GetEncryptionMethodContent(int32_t nIndex);\r
868 };\r
869 class CXFA_Reasons : public CXFA_Data\r
870 {\r
871 public:\r
872     CXFA_Reasons(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
873     XFA_ATTRIBUTEENUM           GetReasonsType();\r
874     int32_t                             CountReasons();\r
875     CFX_WideString                      GetReasonContent(int32_t nIndex);\r
876 };\r
877 class CXFA_Manifest : public CXFA_Data\r
878 {\r
879 public:\r
880     CXFA_Manifest(CXFA_Node* pNode) : CXFA_Data(pNode) {}\r
881     XFA_ATTRIBUTEENUM   GetAction();\r
882     int32_t                     CountReives();\r
883     CFX_WideString              GetRefContent(int32_t nIndex);\r
884 };\r
885 #endif\r