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