14d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Copyright 2016 PDFium Authors. All rights reserved.
24d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be
34d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// found in the LICENSE file.
44d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
54d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
64d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef XFA_FXFA_PARSER_CXFA_WIDGETDATA_H_
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define XFA_FXFA_PARSER_CXFA_WIDGETDATA_H_
94d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector>
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_string.h"
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_system.h"
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_assist.h"
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_bind.h"
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_border.h"
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_calculate.h"
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_caption.h"
194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_data.h"
204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_font.h"
214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_margin.h"
224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_para.h"
234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/cxfa_validate.h"
244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "xfa/fxfa/parser/xfa_object.h"
254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannenum XFA_CHECKSTATE {
274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_CHECKSTATE_On = 0,
284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_CHECKSTATE_Off = 1,
294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_CHECKSTATE_Neutral = 2,
304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannenum XFA_VALUEPICTURE {
334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_VALUEPICTURE_Raw = 0,
344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_VALUEPICTURE_Display,
354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_VALUEPICTURE_Edit,
364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_VALUEPICTURE_DataBind,
374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CXFA_Node;
404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass IFX_Locale;
414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CXFA_WidgetData : public CXFA_Data {
434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann public:
444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  explicit CXFA_WidgetData(CXFA_Node* pNode);
454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Node* GetUIChild();
474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_Element GetUIType();
484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString GetRawValue();
494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetAccess(bool bTemplate = false);
504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetRotate();
514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Border GetBorder(bool bModified = false);
524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Caption GetCaption(bool bModified = false);
534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Font GetFont(bool bModified = false);
544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Margin GetMargin(bool bModified = false);
554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Para GetPara(bool bModified = false);
564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void GetEventList(CXFA_NodeArray& events);
574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetEventByActivity(int32_t iActivity,
584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                             CXFA_NodeArray& events,
594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                             bool bIsFormReady = false);
604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Value GetDefaultValue(bool bModified = false);
614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Value GetFormValue(bool bModified = false);
624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Calculate GetCalculate(bool bModified = false);
634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Validate GetValidate(bool bModified = false);
644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Bind GetBind(bool bModified = false);
654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Assist GetAssist(bool bModified = false);
664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetWidth(FX_FLOAT& fWidth);
674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetHeight(FX_FLOAT& fHeight);
684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetMinWidth(FX_FLOAT& fMinWidth);
694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetMinHeight(FX_FLOAT& fMinHeight);
704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetMaxWidth(FX_FLOAT& fMaxWidth);
714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetMaxHeight(FX_FLOAT& fMaxHeight);
724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Border GetUIBorder();
734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_RectF GetUIMargin();
744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetButtonHighlight();
754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetButtonRollover(CFX_WideString& wsRollover, bool& bRichText);
764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetButtonDown(CFX_WideString& wsDown, bool& bRichText);
774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetCheckButtonShape();
784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetCheckButtonMark();
794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FX_FLOAT GetCheckButtonSize();
804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsAllowNeutral();
814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsRadioButton();
824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_CHECKSTATE GetCheckState();
834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetCheckState(XFA_CHECKSTATE eCheckState, bool bNotify);
844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Node* GetExclGroupNode();
854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Node* GetSelectedMember();
864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Node* SetSelectedMember(const CFX_WideStringC& wsName, bool bNotify);
874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetSelectedMemberByValue(const CFX_WideStringC& wsValue,
884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                bool bNotify,
894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                bool bScriptModify,
904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                                bool bSyncData);
914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Node* GetExclGroupFirstMember();
924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Node* GetExclGroupNextMember(CXFA_Node* pNode);
934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetChoiceListCommitOn();
944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsChoiceListAllowTextEntry();
954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetChoiceListOpen();
964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsListBox();
974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t CountChoiceListItems(bool bSaveValue = false);
984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetChoiceListItem(CFX_WideString& wsText,
994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                         int32_t nIndex,
1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                         bool bSaveValue = false);
1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void GetChoiceListItems(std::vector<CFX_WideString>& wsTextArray,
1024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                          bool bSaveValue = false);
1034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t CountSelectedItems();
1044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetSelectedItem(int32_t nIndex = 0);
1055ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void GetSelectedItems(CFX_ArrayTemplate<int32_t>& iSelArray);
1064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void GetSelectedItemsValue(std::vector<CFX_WideString>& wsSelTextArray);
1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetItemState(int32_t nIndex);
1084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetItemState(int32_t nIndex,
1094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    bool bSelected,
1104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    bool bNotify,
1114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    bool bScriptModify,
1124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    bool bSyncData);
1135ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void SetSelectedItems(CFX_ArrayTemplate<int32_t>& iSelArray,
1144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                        bool bNotify,
1154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                        bool bScriptModify,
1164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                        bool bSyncData);
1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void ClearAllSelections();
1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void InsertItem(const CFX_WideString& wsLabel,
1194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  const CFX_WideString& wsValue,
1204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  int32_t nIndex = -1,
1214d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  bool bNotify = false);
1224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void GetItemLabel(const CFX_WideStringC& wsValue, CFX_WideString& wsLabel);
1234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void GetItemValue(const CFX_WideStringC& wsLabel, CFX_WideString& wsValue);
1244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool DeleteItem(int32_t nIndex,
1254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  bool bNotify = false,
1264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  bool bScriptModify = false,
1274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                  bool bSyncData = true);
1284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetHorizontalScrollPolicy();
1294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetNumberOfCells();
1304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool SetValue(const CFX_WideString& wsValue, XFA_VALUEPICTURE eValueType);
1314d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetPictureContent(CFX_WideString& wsPicture, XFA_VALUEPICTURE ePicture);
1324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  IFX_Locale* GetLocal();
1334d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetValue(CFX_WideString& wsValue, XFA_VALUEPICTURE eValueType);
1344d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetNormalizeDataValue(const CFX_WideString& wsValue,
1354d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                             CFX_WideString& wsNormalizeValue);
1364d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetFormatDataValue(const CFX_WideString& wsValue,
1374d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                          CFX_WideString& wsFormattedValue);
1384d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void NormalizeNumStr(const CFX_WideString& wsValue, CFX_WideString& wsOutput);
1394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString GetBarcodeType();
1404d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_CharEncoding(int32_t& val);
1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_Checksum(bool& val);
1424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_DataLength(int32_t& val);
1434d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_StartChar(FX_CHAR& val);
1444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_EndChar(FX_CHAR& val);
1454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_ECLevel(int32_t& val);
1464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_ModuleWidth(int32_t& val);
1474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_ModuleHeight(int32_t& val);
1484d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_PrintChecksum(bool& val);
1494d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_TextLocation(int32_t& val);
1504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_Truncate(bool& val);
1514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetBarcodeAttribute_WideNarrowRatio(FX_FLOAT& val);
1524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void GetPasswordChar(CFX_WideString& wsPassWord);
1534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsMultiLine();
1544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetVerticalScrollPolicy();
1554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  int32_t GetMaxChars(XFA_Element& eType);
1564d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetFracDigits(int32_t& iFracDigits);
1574d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool GetLeadDigits(int32_t& iLeadDigits);
1584d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_WideString NumericLimit(const CFX_WideString& wsValue,
1604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                              int32_t iLead,
1614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                              int32_t iTread) const;
1624d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bIsNull;
1644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bPreNull;
1654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann protected:
1674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SyncValue(const CFX_WideString& wsValue, bool bNotify);
1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void InsertListTextItem(CXFA_Node* pItems,
1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                          const CFX_WideString& wsText,
1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                          int32_t nIndex = -1);
1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void FormatNumStr(const CFX_WideString& wsValue,
1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    IFX_Locale* pLocale,
1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                    CFX_WideString& wsOutput);
1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CXFA_Node* m_pUiChildNode;
1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  XFA_Element m_eUIType;
1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann};
1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // XFA_FXFA_PARSER_CXFA_WIDGETDATA_H_
180