| Index: xfa/src/fxfa/src/parser/xfa_objectacc_imp.cpp
|
| diff --git a/xfa/src/fxfa/src/parser/xfa_objectacc_imp.cpp b/xfa/src/fxfa/src/parser/xfa_objectacc_imp.cpp
|
| index 6eb0adf64755dedf01bfe196abe8983bbe76a4da..c9bf21f0c59cb39ec1ed22d019d7591dd78b0d73 100644
|
| --- a/xfa/src/fxfa/src/parser/xfa_objectacc_imp.cpp
|
| +++ b/xfa/src/fxfa/src/parser/xfa_objectacc_imp.cpp
|
| @@ -1,3806 +1,3806 @@
|
| -// Copyright 2014 PDFium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| -
|
| -#include "xfa/src/foxitlib.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_utils.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_object.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_document.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_parser.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_script.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_docdata.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_doclayout.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_localemgr.h"
|
| -#include "xfa/src/fxfa/src/common/xfa_fm2jsapi.h"
|
| -static FX_ARGB XFA_WStringToColor(const CFX_WideStringC& wsValue) {
|
| - uint8_t r = 0, g = 0, b = 0;
|
| - if (wsValue.GetLength() == 0) {
|
| - return 0xff000000;
|
| - }
|
| - int cc = 0;
|
| - const FX_WCHAR* str = wsValue.GetPtr();
|
| - int len = wsValue.GetLength();
|
| - while (XFA_IsSpace(str[cc]) && cc < len) {
|
| - cc++;
|
| - }
|
| - if (cc >= len) {
|
| - return 0xff000000;
|
| - }
|
| - while (cc < len) {
|
| - if (str[cc] == ',' || !XFA_IsDigit(str[cc])) {
|
| - break;
|
| - }
|
| - r = r * 10 + str[cc] - '0';
|
| - cc++;
|
| - }
|
| - if (cc < len && str[cc] == ',') {
|
| - cc++;
|
| - while (XFA_IsSpace(str[cc]) && cc < len) {
|
| - cc++;
|
| - }
|
| - while (cc < len) {
|
| - if (str[cc] == ',' || !XFA_IsDigit(str[cc])) {
|
| - break;
|
| - }
|
| - g = g * 10 + str[cc] - '0';
|
| - cc++;
|
| - }
|
| - if (cc < len && str[cc] == ',') {
|
| - cc++;
|
| - while (XFA_IsSpace(str[cc]) && cc < len) {
|
| - cc++;
|
| - }
|
| - while (cc < len) {
|
| - if (str[cc] == ',' || !XFA_IsDigit(str[cc])) {
|
| - break;
|
| - }
|
| - b = b * 10 + str[cc] - '0';
|
| - cc++;
|
| - }
|
| - }
|
| - }
|
| - return (0xff << 24) | (r << 16) | (g << 8) | b;
|
| -}
|
| -XFA_ELEMENT CXFA_Data::GetClassID() const {
|
| - return m_pNode ? m_pNode->GetClassID() : XFA_ELEMENT_UNKNOWN;
|
| -}
|
| -FX_BOOL CXFA_Data::TryMeasure(XFA_ATTRIBUTE eAttr,
|
| - FX_FLOAT& fValue,
|
| - FX_BOOL bUseDefault) const {
|
| - CXFA_Measurement ms;
|
| - if (m_pNode->TryMeasure(eAttr, ms, bUseDefault)) {
|
| - fValue = ms.ToUnit(XFA_UNIT_Pt);
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_Data::SetMeasure(XFA_ATTRIBUTE eAttr, FX_FLOAT fValue) {
|
| - CXFA_Measurement ms(fValue, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(eAttr, ms);
|
| -}
|
| -CXFA_Fill::CXFA_Fill(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -CXFA_Fill::~CXFA_Fill() {}
|
| -int32_t CXFA_Fill::GetPresence() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Presence);
|
| -}
|
| -void CXFA_Fill::SetColor(FX_ARGB color) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| - CFX_WideString wsColor;
|
| - int a, r, g, b;
|
| - ArgbDecode(color, a, r, g, b);
|
| - wsColor.Format(L"%d,%d,%d", r, g, b);
|
| - pNode->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| -}
|
| -FX_ARGB CXFA_Fill::GetColor(FX_BOOL bText) {
|
| - if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| - CFX_WideStringC wsColor;
|
| - if (pNode->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE)) {
|
| - return XFA_WStringToColor(wsColor);
|
| - }
|
| - }
|
| - if (bText) {
|
| - return 0xFF000000;
|
| - }
|
| - return 0xFFFFFFFF;
|
| -}
|
| -int32_t CXFA_Fill::GetFillType() {
|
| - CXFA_Node* pChild = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - while (pChild) {
|
| - int32_t eType = pChild->GetClassID();
|
| - if (eType != XFA_ELEMENT_Color && eType != XFA_ELEMENT_Extras) {
|
| - return eType;
|
| - }
|
| - pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - return XFA_ELEMENT_Solid;
|
| -}
|
| -int32_t CXFA_Fill::GetPattern(FX_ARGB& foreColor) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Pattern);
|
| - if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| - CFX_WideStringC wsColor;
|
| - pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE);
|
| - foreColor = XFA_WStringToColor(wsColor);
|
| - } else {
|
| - foreColor = 0xFF000000;
|
| - }
|
| - return pNode->GetEnum(XFA_ATTRIBUTE_Type);
|
| -}
|
| -int32_t CXFA_Fill::GetStipple(FX_ARGB& stippleColor) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Stipple);
|
| - int32_t eAttr = 50;
|
| - pNode->TryInteger(XFA_ATTRIBUTE_Rate, eAttr);
|
| - if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| - CFX_WideStringC wsColor;
|
| - pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE);
|
| - stippleColor = XFA_WStringToColor(wsColor);
|
| - } else {
|
| - stippleColor = 0xFF000000;
|
| - }
|
| - return eAttr;
|
| -}
|
| -int32_t CXFA_Fill::GetLinear(FX_ARGB& endColor) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Linear);
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_ToRight;
|
| - pNode->TryEnum(XFA_ATTRIBUTE_Type, eAttr);
|
| - if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| - CFX_WideStringC wsColor;
|
| - pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE);
|
| - endColor = XFA_WStringToColor(wsColor);
|
| - } else {
|
| - endColor = 0xFF000000;
|
| - }
|
| - return eAttr;
|
| -}
|
| -int32_t CXFA_Fill::GetRadial(FX_ARGB& endColor) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Radial);
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_ToEdge;
|
| - pNode->TryEnum(XFA_ATTRIBUTE_Type, eAttr);
|
| - if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| - CFX_WideStringC wsColor;
|
| - pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE);
|
| - endColor = XFA_WStringToColor(wsColor);
|
| - } else {
|
| - endColor = 0xFF000000;
|
| - }
|
| - return eAttr;
|
| -}
|
| -FX_BOOL CXFA_Fill::SetPresence(int32_t iPresence) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Presence, (XFA_ATTRIBUTEENUM)iPresence);
|
| -}
|
| -FX_BOOL CXFA_Fill::SetFillType(int32_t iType) {
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_Fill::SetPattern(int32_t iPattern, FX_ARGB foreColor) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Pattern);
|
| - CXFA_Node* pColor = pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| - CFX_WideString wsColor;
|
| - int a, r, g, b;
|
| - ArgbDecode(foreColor, a, r, g, b);
|
| - wsColor.Format(L"%d,%d,%d", r, g, b);
|
| - pColor->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| - return pNode->SetEnum(XFA_ATTRIBUTE_Type, (XFA_ATTRIBUTEENUM)iPattern);
|
| -}
|
| -FX_BOOL CXFA_Fill::SetStipple(int32_t iStipple, FX_ARGB stippleColor) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Stipple);
|
| - CXFA_Node* pColor = pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| - CFX_WideString wsColor;
|
| - int a, r, g, b;
|
| - ArgbDecode(stippleColor, a, r, g, b);
|
| - wsColor.Format(L"%d,%d,%d", r, g, b);
|
| - pColor->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| - return pNode->SetEnum(XFA_ATTRIBUTE_Rate, (XFA_ATTRIBUTEENUM)iStipple);
|
| -}
|
| -FX_BOOL CXFA_Fill::SetLinear(int32_t iLinear, FX_ARGB endColor) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Linear);
|
| - CXFA_Node* pColor = pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| - CFX_WideString wsColor;
|
| - int a, r, g, b;
|
| - ArgbDecode(endColor, a, r, g, b);
|
| - wsColor.Format(L"%d,%d,%d", r, g, b);
|
| - pColor->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| - return pNode->SetEnum(XFA_ATTRIBUTE_Type, (XFA_ATTRIBUTEENUM)iLinear);
|
| -}
|
| -FX_BOOL CXFA_Fill::SetRadial(int32_t iRadial, FX_ARGB endColor) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Radial);
|
| - CXFA_Node* pColor = pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| - CFX_WideString wsColor;
|
| - int a, r, g, b;
|
| - ArgbDecode(endColor, a, r, g, b);
|
| - wsColor.Format(L"%d,%d,%d", r, g, b);
|
| - pColor->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| - return pNode->SetEnum(XFA_ATTRIBUTE_Type, (XFA_ATTRIBUTEENUM)iRadial);
|
| -}
|
| -CXFA_Margin::CXFA_Margin(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -FX_BOOL CXFA_Margin::GetLeftInset(FX_FLOAT& fInset, FX_FLOAT fDefInset) const {
|
| - fInset = fDefInset;
|
| - return TryMeasure(XFA_ATTRIBUTE_LeftInset, fInset);
|
| -}
|
| -FX_BOOL CXFA_Margin::GetTopInset(FX_FLOAT& fInset, FX_FLOAT fDefInset) const {
|
| - fInset = fDefInset;
|
| - return TryMeasure(XFA_ATTRIBUTE_TopInset, fInset);
|
| -}
|
| -FX_BOOL CXFA_Margin::GetRightInset(FX_FLOAT& fInset, FX_FLOAT fDefInset) const {
|
| - fInset = fDefInset;
|
| - return TryMeasure(XFA_ATTRIBUTE_RightInset, fInset);
|
| -}
|
| -FX_BOOL CXFA_Margin::GetBottomInset(FX_FLOAT& fInset,
|
| - FX_FLOAT fDefInset) const {
|
| - fInset = fDefInset;
|
| - return TryMeasure(XFA_ATTRIBUTE_BottomInset, fInset);
|
| -}
|
| -FX_BOOL CXFA_Margin::SetLeftInset(FX_FLOAT fInset) {
|
| - return SetMeasure(XFA_ATTRIBUTE_LeftInset, fInset);
|
| -}
|
| -FX_BOOL CXFA_Margin::SetTopInset(FX_FLOAT fInset) {
|
| - return SetMeasure(XFA_ATTRIBUTE_TopInset, fInset);
|
| -}
|
| -FX_BOOL CXFA_Margin::SetRightInset(FX_FLOAT fInset) {
|
| - return SetMeasure(XFA_ATTRIBUTE_RightInset, fInset);
|
| -}
|
| -FX_BOOL CXFA_Margin::SetBottomInset(FX_FLOAT fInset) {
|
| - return SetMeasure(XFA_ATTRIBUTE_BottomInset, fInset);
|
| -}
|
| -CXFA_Font::CXFA_Font(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -FX_FLOAT CXFA_Font::GetBaselineShift() {
|
| - return m_pNode->GetMeasure(XFA_ATTRIBUTE_BaselineShift).ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -FX_FLOAT CXFA_Font::GetHorizontalScale() {
|
| - CFX_WideString wsValue;
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_FontHorizontalScale, wsValue);
|
| - int32_t iScale = FXSYS_wtoi((const FX_WCHAR*)wsValue);
|
| - return iScale > 0 ? (FX_FLOAT)iScale : 100.0f;
|
| -}
|
| -FX_FLOAT CXFA_Font::GetVerticalScale() {
|
| - CFX_WideString wsValue;
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_FontVerticalScale, wsValue);
|
| - int32_t iScale = FXSYS_wtoi((const FX_WCHAR*)wsValue);
|
| - return iScale > 0 ? (FX_FLOAT)iScale : 100.0f;
|
| -}
|
| -FX_FLOAT CXFA_Font::GetLetterSpacing() {
|
| - CFX_WideStringC wsValue;
|
| - if (!m_pNode->TryCData(XFA_ATTRIBUTE_LetterSpacing, wsValue)) {
|
| - return 0;
|
| - }
|
| - CXFA_Measurement ms(wsValue);
|
| - if (ms.GetUnit() == XFA_UNIT_Em) {
|
| - return ms.GetValue() * GetFontSize();
|
| - }
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -int32_t CXFA_Font::GetLineThrough() {
|
| - int32_t iValue = 0;
|
| - m_pNode->TryInteger(XFA_ATTRIBUTE_LineThrough, iValue);
|
| - return iValue;
|
| -}
|
| -int32_t CXFA_Font::GetLineThroughPeriod() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_All;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_LineThroughPeriod, eAttr);
|
| - return eAttr;
|
| -}
|
| -int32_t CXFA_Font::GetOverline() {
|
| - int32_t iValue = 0;
|
| - m_pNode->TryInteger(XFA_ATTRIBUTE_Overline, iValue);
|
| - return iValue;
|
| -}
|
| -int32_t CXFA_Font::GetOverlinePeriod() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_All;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_OverlinePeriod, eAttr);
|
| - return eAttr;
|
| -}
|
| -int32_t CXFA_Font::GetUnderline() {
|
| - int32_t iValue = 0;
|
| - m_pNode->TryInteger(XFA_ATTRIBUTE_Underline, iValue);
|
| - return iValue;
|
| -}
|
| -int32_t CXFA_Font::GetUnderlinePeriod() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_All;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_UnderlinePeriod, eAttr);
|
| - return eAttr;
|
| -}
|
| -FX_FLOAT CXFA_Font::GetFontSize() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_Size, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -void CXFA_Font::GetTypeface(CFX_WideStringC& wsTypeFace) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Typeface, wsTypeFace);
|
| -}
|
| -FX_BOOL CXFA_Font::IsBold() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Normal;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_Weight, eAttr);
|
| - return eAttr == XFA_ATTRIBUTEENUM_Bold;
|
| -}
|
| -FX_BOOL CXFA_Font::IsItalic() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Normal;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_Posture, eAttr);
|
| - return eAttr == XFA_ATTRIBUTEENUM_Italic;
|
| -}
|
| -FX_BOOL CXFA_Font::IsUseKerning() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_None;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_KerningMode, eAttr);
|
| - return eAttr == XFA_ATTRIBUTEENUM_Pair;
|
| -}
|
| -void CXFA_Font::SetColor(FX_ARGB color) {
|
| - CXFA_Fill fill = m_pNode->GetProperty(0, XFA_ELEMENT_Fill);
|
| - fill.SetColor(color);
|
| -}
|
| -FX_ARGB CXFA_Font::GetColor() {
|
| - if (CXFA_Fill fill = m_pNode->GetChild(0, XFA_ELEMENT_Fill)) {
|
| - return fill.GetColor(TRUE);
|
| - }
|
| - return 0xFF000000;
|
| -}
|
| -FX_BOOL CXFA_Font::SetBaselineShift(FX_FLOAT fBaselineShift) {
|
| - CXFA_Measurement ms(fBaselineShift, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_BaselineShift, ms);
|
| -}
|
| -FX_BOOL CXFA_Font::SetHorizontalScale(FX_FLOAT fHorizontalScale) {
|
| - CFX_WideString wsValue;
|
| - wsValue.Format(L"%d", (int32_t)fHorizontalScale);
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_FontHorizontalScale, wsValue);
|
| -}
|
| -FX_BOOL CXFA_Font::SetVerticalScale(FX_FLOAT fVerticalScale) {
|
| - CFX_WideString wsValue;
|
| - wsValue.Format(L"%d", (int32_t)fVerticalScale);
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_FontVerticalScale, wsValue);
|
| -}
|
| -FX_BOOL CXFA_Font::SetLetterSpacing(FX_FLOAT fLetterSpacing, XFA_UNIT eUnit) {
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_Font::SetLineThrough(int32_t iLineThrough) {
|
| - return m_pNode->SetInteger(XFA_ATTRIBUTE_LineThrough, iLineThrough);
|
| -}
|
| -FX_BOOL CXFA_Font::SetLineThroughPeriod(int32_t iLineThroughPeriod) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_LineThroughPeriod,
|
| - (XFA_ATTRIBUTEENUM)iLineThroughPeriod);
|
| -}
|
| -FX_BOOL CXFA_Font::SetOverline(int32_t iOverline) {
|
| - return m_pNode->SetInteger(XFA_ATTRIBUTE_Overline, iOverline);
|
| -}
|
| -FX_BOOL CXFA_Font::SetOverlinePeriod(int32_t iOverlinePeriod) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_OverlinePeriod,
|
| - (XFA_ATTRIBUTEENUM)iOverlinePeriod);
|
| -}
|
| -FX_BOOL CXFA_Font::SetUnderline(int32_t iUnderline) {
|
| - return m_pNode->SetInteger(XFA_ATTRIBUTE_Underline, iUnderline);
|
| -}
|
| -FX_BOOL CXFA_Font::SetUnderlinePeriod(int32_t iUnderlinePeriod) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_UnderlinePeriod,
|
| - (XFA_ATTRIBUTEENUM)iUnderlinePeriod);
|
| -}
|
| -CXFA_Caption::CXFA_Caption(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -int32_t CXFA_Caption::GetPresence() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Visible;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_Presence, eAttr);
|
| - return eAttr;
|
| -}
|
| -int32_t CXFA_Caption::GetPlacementType() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Left;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_Placement, eAttr);
|
| - return eAttr;
|
| -}
|
| -FX_FLOAT CXFA_Caption::GetReserve() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_Reserve, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -CXFA_Margin CXFA_Caption::GetMargin() {
|
| - return CXFA_Margin(m_pNode ? m_pNode->GetChild(0, XFA_ELEMENT_Margin) : NULL);
|
| -}
|
| -CXFA_Font CXFA_Caption::GetFont() {
|
| - return CXFA_Font(m_pNode ? m_pNode->GetChild(0, XFA_ELEMENT_Font) : NULL);
|
| -}
|
| -CXFA_Value CXFA_Caption::GetValue() {
|
| - return CXFA_Value(m_pNode ? m_pNode->GetChild(0, XFA_ELEMENT_Value) : NULL);
|
| -}
|
| -CXFA_Para CXFA_Caption::GetPara() {
|
| - return CXFA_Para(m_pNode ? m_pNode->GetChild(0, XFA_ELEMENT_Para) : NULL);
|
| -}
|
| -FX_BOOL CXFA_Caption::SetPresence(int32_t iPresence) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Presence, (XFA_ATTRIBUTEENUM)iPresence);
|
| -}
|
| -FX_BOOL CXFA_Caption::SetPlacementType(int32_t iType) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Placement, (XFA_ATTRIBUTEENUM)iType);
|
| -}
|
| -FX_BOOL CXFA_Caption::SetReserve(FX_FLOAT fReserve) {
|
| - CXFA_Measurement ms(fReserve, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_Reserve, ms);
|
| -}
|
| -CXFA_Para::CXFA_Para(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -int32_t CXFA_Para::GetHorizontalAlign() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Left;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_HAlign, eAttr);
|
| - return eAttr;
|
| -}
|
| -int32_t CXFA_Para::GetVerticalAlign() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Top;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_VAlign, eAttr);
|
| - return eAttr;
|
| -}
|
| -FX_FLOAT CXFA_Para::GetLineHeight() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_LineHeight, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -FX_FLOAT CXFA_Para::GetMarginLeft() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_MarginLeft, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -FX_FLOAT CXFA_Para::GetMarginRight() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_MarginRight, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -int32_t CXFA_Para::GetOrphans() {
|
| - int32_t iValue = 0;
|
| - m_pNode->TryInteger(XFA_ATTRIBUTE_Orphans, iValue);
|
| - return iValue;
|
| -}
|
| -FX_FLOAT CXFA_Para::GetRadixOffset() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_RadixOffset, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -FX_FLOAT CXFA_Para::GetSpaceAbove() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_SpaceAbove, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -FX_FLOAT CXFA_Para::GetSpaceBelow() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_SpaceBelow, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -FX_FLOAT CXFA_Para::GetTextIndent() {
|
| - CXFA_Measurement ms;
|
| - m_pNode->TryMeasure(XFA_ATTRIBUTE_TextIndent, ms);
|
| - return ms.ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -int32_t CXFA_Para::GetWidows() {
|
| - int32_t iValue = 0;
|
| - m_pNode->TryInteger(XFA_ATTRIBUTE_Widows, iValue);
|
| - return iValue;
|
| -}
|
| -FX_BOOL CXFA_Para::SetHorizontalAlign(int32_t iHorizontalAlign) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_HAlign,
|
| - (XFA_ATTRIBUTEENUM)iHorizontalAlign);
|
| -}
|
| -FX_BOOL CXFA_Para::SetVerticalAlign(int32_t iVerticalAlign) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_VAlign,
|
| - (XFA_ATTRIBUTEENUM)iVerticalAlign);
|
| -}
|
| -FX_BOOL CXFA_Para::SetLineHeight(FX_FLOAT fLineHeight) {
|
| - CXFA_Measurement ms;
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_LineHeight, ms);
|
| -}
|
| -FX_BOOL CXFA_Para::SetMarginLeft(FX_FLOAT fMarginLeft) {
|
| - CXFA_Measurement ms(fMarginLeft, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_MarginLeft, ms);
|
| -}
|
| -FX_BOOL CXFA_Para::SetMarginRight(FX_FLOAT fMarginRight) {
|
| - CXFA_Measurement ms(fMarginRight, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_MarginRight, ms);
|
| -}
|
| -FX_BOOL CXFA_Para::SetOrphans(int32_t iOrphans) {
|
| - return m_pNode->SetInteger(XFA_ATTRIBUTE_Orphans, iOrphans);
|
| -}
|
| -FX_BOOL CXFA_Para::SetRadixOffset(FX_FLOAT fRadixOffset) {
|
| - CXFA_Measurement ms(fRadixOffset, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_RadixOffset, ms);
|
| -}
|
| -FX_BOOL CXFA_Para::SetSpaceAbove(FX_FLOAT fSpaceAbove) {
|
| - CXFA_Measurement ms(fSpaceAbove, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_SpaceAbove, ms);
|
| -}
|
| -FX_BOOL CXFA_Para::SetSpaceBelow(FX_FLOAT fSpaceBelow) {
|
| - CXFA_Measurement ms(fSpaceBelow, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_SpaceBelow, ms);
|
| -}
|
| -FX_BOOL CXFA_Para::SetTextIndent(FX_FLOAT fTextIndent) {
|
| - CXFA_Measurement ms(fTextIndent, XFA_UNIT_Pt);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_TextIndent, ms);
|
| -}
|
| -FX_BOOL CXFA_Para::SetWidows(int32_t iWidows) {
|
| - return m_pNode->SetInteger(XFA_ATTRIBUTE_Widows, iWidows);
|
| -}
|
| -CXFA_Keep::CXFA_Keep(CXFA_Node* pNode, CXFA_Node* pParent)
|
| - : CXFA_Data(pNode), m_pParent(pParent) {}
|
| -int32_t CXFA_Keep::GetIntact() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_None;
|
| - switch (m_pParent->GetClassID()) {
|
| - case XFA_ELEMENT_Subform: {
|
| - XFA_ATTRIBUTEENUM eAttrSubForm;
|
| - m_pParent->TryEnum(XFA_ATTRIBUTE_Layout, eAttrSubForm);
|
| - if (eAttrSubForm == XFA_ATTRIBUTEENUM_Position ||
|
| - eAttrSubForm == XFA_ATTRIBUTEENUM_Row) {
|
| - eAttr = XFA_ATTRIBUTEENUM_ContentArea;
|
| - }
|
| - } break;
|
| - case XFA_ELEMENT_Draw:
|
| - eAttr = XFA_ATTRIBUTEENUM_ContentArea;
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_Intact, eAttr, FALSE);
|
| - return eAttr;
|
| -}
|
| -int32_t CXFA_Keep::GetNext() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_None;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_Next, eAttr);
|
| - return eAttr;
|
| -}
|
| -int32_t CXFA_Keep::GetPrevious() {
|
| - XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_None;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_Previous, eAttr);
|
| - return eAttr;
|
| -}
|
| -FX_BOOL CXFA_Keep::SetIntact(int32_t iIntact) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Intact, (XFA_ATTRIBUTEENUM)iIntact);
|
| -}
|
| -FX_BOOL CXFA_Keep::SetNext(int32_t iNext) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Next, (XFA_ATTRIBUTEENUM)iNext);
|
| -}
|
| -FX_BOOL CXFA_Keep::SetPrevious(int32_t iPrevious) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Previous, (XFA_ATTRIBUTEENUM)iPrevious);
|
| -}
|
| -CXFA_Event::CXFA_Event(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -int32_t CXFA_Event::GetActivity() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Activity);
|
| -}
|
| -int32_t CXFA_Event::GetEventType() {
|
| - CXFA_Node* pChild = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - while (pChild) {
|
| - int32_t eType = pChild->GetClassID();
|
| - if (eType != XFA_ELEMENT_Extras) {
|
| - return eType;
|
| - }
|
| - pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - return XFA_ELEMENT_UNKNOWN;
|
| -}
|
| -void CXFA_Event::GetRef(CFX_WideStringC& wsRef) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| -}
|
| -int32_t CXFA_Event::GetExecuteRunAt() {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| - return pNode->GetEnum(XFA_ATTRIBUTE_RunAt);
|
| -}
|
| -int32_t CXFA_Event::GetExecuteType() {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| - return pNode->GetEnum(XFA_ATTRIBUTE_ExecuteType);
|
| -}
|
| -void CXFA_Event::GetExecuteConnection(CFX_WideString& wsConnection) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| - CFX_WideStringC cData;
|
| - pNode->TryCData(XFA_ATTRIBUTE_Connection, cData);
|
| - wsConnection = cData;
|
| -}
|
| -CXFA_Script CXFA_Event::GetScript() {
|
| - return m_pNode->GetChild(0, XFA_ELEMENT_Script);
|
| -}
|
| -CXFA_Submit CXFA_Event::GetSubmit() {
|
| - return m_pNode->GetChild(0, XFA_ELEMENT_Submit);
|
| -}
|
| -int32_t CXFA_Event::GetSignDataOperation() {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_SignData);
|
| - return pNode->GetEnum(XFA_ATTRIBUTE_Operation);
|
| -}
|
| -void CXFA_Event::GetSignDataTarget(CFX_WideString& wsTarget) {
|
| - if (CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_SignData)) {
|
| - CFX_WideStringC wsCData;
|
| - pNode->TryCData(XFA_ATTRIBUTE_Target, wsCData);
|
| - wsTarget = wsCData;
|
| - }
|
| -}
|
| -FX_BOOL CXFA_Event::SetActivity(int32_t iActivity) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Activity, (XFA_ATTRIBUTEENUM)iActivity);
|
| -}
|
| -FX_BOOL CXFA_Event::SetEventType(int32_t iEventType) {
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_Event::SetExecuteRunAt(int32_t iExecuteRunAt) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| - return pNode->SetEnum(XFA_ATTRIBUTE_RunAt, (XFA_ATTRIBUTEENUM)iExecuteRunAt);
|
| -}
|
| -FX_BOOL CXFA_Event::SetExecuteType(int32_t iExecuteType) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| - return pNode->SetEnum(XFA_ATTRIBUTE_ExecuteType,
|
| - (XFA_ATTRIBUTEENUM)iExecuteType);
|
| -}
|
| -FX_BOOL CXFA_Event::SetExecuteConnection(const CFX_WideString& wsConnection) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| - return pNode->SetCData(XFA_ATTRIBUTE_Connection, wsConnection);
|
| -}
|
| -FX_BOOL CXFA_Event::SetSignDataOperation(int32_t iOperation) {
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_SignData);
|
| - return pNode->SetEnum(XFA_ATTRIBUTE_Operation, (XFA_ATTRIBUTEENUM)iOperation);
|
| -}
|
| -FX_BOOL CXFA_Event::SetSignDataTarget(const CFX_WideString& wsTarget) {
|
| - if (CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_SignData)) {
|
| - return pNode->SetCData(XFA_ATTRIBUTE_Target, wsTarget);
|
| - }
|
| - return FALSE;
|
| -}
|
| -CXFA_Script::CXFA_Script(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -void CXFA_Script::GetBinding(CFX_WideString& wsBinding) {
|
| - CFX_WideStringC cData;
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Binding, cData);
|
| - wsBinding = cData;
|
| -}
|
| -XFA_SCRIPTTYPE CXFA_Script::GetContentType() {
|
| - CFX_WideStringC cData;
|
| - if (m_pNode->TryCData(XFA_ATTRIBUTE_ContentType, cData, FALSE)) {
|
| - if (cData == FX_WSTRC(L"application/x-javascript")) {
|
| - return XFA_SCRIPTTYPE_Javascript;
|
| - } else if (cData == FX_WSTRC(L"application/x-formcalc")) {
|
| - return XFA_SCRIPTTYPE_Formcalc;
|
| - } else {
|
| - return XFA_SCRIPTTYPE_Unkown;
|
| - }
|
| - }
|
| - return XFA_SCRIPTTYPE_Formcalc;
|
| -}
|
| -int32_t CXFA_Script::GetRunAt() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_RunAt);
|
| -}
|
| -void CXFA_Script::GetExpression(CFX_WideString& wsExpression) {
|
| - m_pNode->TryContent(wsExpression);
|
| -}
|
| -FX_BOOL CXFA_Script::SetBinding(const CFX_WideString& wsBinding) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Binding, wsBinding);
|
| -}
|
| -FX_BOOL CXFA_Script::SetContentType(XFA_SCRIPTTYPE eType) {
|
| - CFX_WideString wsType;
|
| - switch (eType) {
|
| - case XFA_SCRIPTTYPE_Javascript:
|
| - wsType = L"application/x-javascript";
|
| - break;
|
| - case XFA_SCRIPTTYPE_Formcalc:
|
| - wsType = L"application/x-formcalc";
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_ContentType, wsType);
|
| -}
|
| -FX_BOOL CXFA_Script::SetRunAt(int32_t iRunAt) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_RunAt, (XFA_ATTRIBUTEENUM)iRunAt);
|
| -}
|
| -FX_BOOL CXFA_Script::SetExpression(const CFX_WideString& wsExpression) {
|
| - return m_pNode->SetContent(wsExpression, wsExpression);
|
| -}
|
| -CXFA_Submit::CXFA_Submit(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -FX_BOOL CXFA_Submit::IsSubmitEmbedPDF() {
|
| - return m_pNode->GetBoolean(XFA_ATTRIBUTE_EmbedPDF);
|
| -}
|
| -int32_t CXFA_Submit::GetSubmitFormat() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Format);
|
| -}
|
| -void CXFA_Submit::GetSubmitTarget(CFX_WideStringC& wsTarget) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Target, wsTarget);
|
| -}
|
| -XFA_TEXTENCODING CXFA_Submit::GetSubmitTextEncoding() {
|
| - CFX_WideStringC wsCData;
|
| - if (!m_pNode->TryCData(XFA_ATTRIBUTE_TextEncoding, wsCData)) {
|
| - return XFA_TEXTENCODING_None;
|
| - }
|
| - CFX_WideString wsValue(wsCData);
|
| - if (wsValue == L"Big-Five") {
|
| - return XFA_TEXTENCODING_Big5;
|
| - } else if (wsValue == L"fontSpecific") {
|
| - return XFA_TEXTENCODING_FontSpecific;
|
| - } else if (wsValue == L"GBK") {
|
| - return XFA_TEXTENCODING_GBK;
|
| - } else if (wsValue == L"GB-18030") {
|
| - return XFA_TEXTENCODING_GB18030;
|
| - } else if (wsValue == L"GB-2312") {
|
| - return XFA_TEXTENCODING_GB2312;
|
| - } else if (wsValue == L"ISO-8859-NN") {
|
| - return XFA_TEXTENCODING_ISO8859NN;
|
| - } else if (wsValue == L"KSC-5601") {
|
| - return XFA_TEXTENCODING_KSC5601;
|
| - } else if (wsValue == L"Shift-JIS") {
|
| - return XFA_TEXTENCODING_ShiftJIS;
|
| - } else if (wsValue == L"UCS-2") {
|
| - return XFA_TEXTENCODING_UCS2;
|
| - } else if (wsValue == L"UTF-16") {
|
| - return XFA_TEXTENCODING_UTF16;
|
| - } else if (wsValue == L"UTF-8") {
|
| - return XFA_TEXTENCODING_UTF8;
|
| - }
|
| - return XFA_TEXTENCODING_None;
|
| -}
|
| -void CXFA_Submit::GetSubmitXDPContent(CFX_WideStringC& wsContent) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_XdpContent, wsContent);
|
| -}
|
| -FX_BOOL CXFA_Submit::SetSubmitFormat(int32_t iSubmitFormat) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Format,
|
| - (XFA_ATTRIBUTEENUM)iSubmitFormat);
|
| -}
|
| -FX_BOOL CXFA_Submit::SetSubmitTarget(const CFX_WideString& wsTarget) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Target, wsTarget);
|
| -}
|
| -FX_BOOL CXFA_Submit::SetSubmitTextEncoding(XFA_TEXTENCODING eTextEncoding) {
|
| - CFX_WideString wsValue;
|
| - switch (eTextEncoding) {
|
| - case XFA_TEXTENCODING_Big5:
|
| - wsValue = L"Big-Five";
|
| - break;
|
| - case XFA_TEXTENCODING_FontSpecific:
|
| - wsValue = L"fontSpecific";
|
| - break;
|
| - case XFA_TEXTENCODING_GBK:
|
| - wsValue = L"GBK";
|
| - break;
|
| - case XFA_TEXTENCODING_GB18030:
|
| - wsValue = L"GB-18030";
|
| - break;
|
| - case XFA_TEXTENCODING_GB2312:
|
| - wsValue = L"GB-2312";
|
| - break;
|
| - case XFA_TEXTENCODING_ISO8859NN:
|
| - wsValue = L"ISO-8859-NN";
|
| - break;
|
| - case XFA_TEXTENCODING_KSC5601:
|
| - wsValue = L"KSC-5601";
|
| - break;
|
| - case XFA_TEXTENCODING_ShiftJIS:
|
| - wsValue = L"Shift-JIS";
|
| - break;
|
| - case XFA_TEXTENCODING_UCS2:
|
| - wsValue = L"UCS-2";
|
| - break;
|
| - case XFA_TEXTENCODING_UTF16:
|
| - wsValue = L"UTF-16";
|
| - break;
|
| - case XFA_TEXTENCODING_UTF8:
|
| - wsValue = L"UTF-8";
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_TextEncoding, wsValue);
|
| -}
|
| -FX_BOOL CXFA_Submit::SetSubmitXDPContent(const CFX_WideString& wsContent) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_XdpContent, wsContent);
|
| -}
|
| -XFA_ELEMENT CXFA_Value::GetChildValueClassID() {
|
| - if (!m_pNode) {
|
| - return XFA_ELEMENT_UNKNOWN;
|
| - }
|
| - if (CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| - return pNode->GetClassID();
|
| - }
|
| - return XFA_ELEMENT_UNKNOWN;
|
| -}
|
| -FX_BOOL CXFA_Value::GetChildValueContent(CFX_WideString& wsContent) {
|
| - if (!m_pNode) {
|
| - return FALSE;
|
| - }
|
| - if (CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| - return pNode->TryContent(wsContent);
|
| - }
|
| - return FALSE;
|
| -}
|
| -CXFA_Arc CXFA_Value::GetArc() {
|
| - return m_pNode ? CXFA_Arc(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| - : NULL;
|
| -}
|
| -CXFA_Line CXFA_Value::GetLine() {
|
| - return m_pNode ? CXFA_Line(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| - : NULL;
|
| -}
|
| -CXFA_Rectangle CXFA_Value::GetRectangle() {
|
| - return m_pNode ? CXFA_Rectangle(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| - : NULL;
|
| -}
|
| -CXFA_Text CXFA_Value::GetText() {
|
| - return m_pNode ? CXFA_Text(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| - : NULL;
|
| -}
|
| -CXFA_ExData CXFA_Value::GetExData() {
|
| - return m_pNode ? CXFA_ExData(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| - : NULL;
|
| -}
|
| -CXFA_Image CXFA_Value::GetImage() {
|
| - return CXFA_Image(
|
| - m_pNode ? (m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) : NULL, TRUE);
|
| -}
|
| -FX_BOOL CXFA_Value::SetChildValueContent(const CFX_WideString& wsContent,
|
| - FX_BOOL bNotify,
|
| - XFA_ELEMENT iType) {
|
| - if (!m_pNode) {
|
| - return FALSE;
|
| - }
|
| - CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - if (!pNode) {
|
| - if (iType == XFA_ELEMENT_UNKNOWN) {
|
| - return FALSE;
|
| - }
|
| - pNode = m_pNode->GetProperty(0, iType);
|
| - }
|
| - CFX_WideString wsFormatContent(wsContent);
|
| - CXFA_WidgetData* pContainerWidgetData = pNode->GetContainerWidgetData();
|
| - if (pContainerWidgetData) {
|
| - pContainerWidgetData->GetFormatDataValue(wsContent, wsFormatContent);
|
| - }
|
| - return pNode->SetContent(wsContent, wsFormatContent, bNotify);
|
| -}
|
| -int32_t CXFA_Line::GetHand() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Hand);
|
| -}
|
| -FX_BOOL CXFA_Line::GetSlop() {
|
| - XFA_ATTRIBUTEENUM eSlop = m_pNode->GetEnum(XFA_ATTRIBUTE_Slope);
|
| - return eSlop == XFA_ATTRIBUTEENUM_Slash;
|
| -}
|
| -CXFA_Edge CXFA_Line::GetEdge() {
|
| - return CXFA_Edge(m_pNode->GetChild(0, XFA_ELEMENT_Edge));
|
| -}
|
| -FX_BOOL CXFA_Line::SetHand(int32_t iHand) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Hand, (XFA_ATTRIBUTEENUM)iHand);
|
| -}
|
| -FX_BOOL CXFA_Line::SetSlop(int32_t iSlop) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Slope, (XFA_ATTRIBUTEENUM)iSlop);
|
| -}
|
| -CXFA_Text::CXFA_Text(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -void CXFA_Text::GetName(CFX_WideStringC& wsName) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| -}
|
| -int32_t CXFA_Text::GetMaxChars() {
|
| - return m_pNode->GetInteger(XFA_ATTRIBUTE_MaxChars);
|
| -}
|
| -void CXFA_Text::GetRid(CFX_WideStringC& wsRid) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Rid, wsRid);
|
| -}
|
| -void CXFA_Text::GetContent(CFX_WideString& wsText) {
|
| - m_pNode->TryContent(wsText);
|
| -}
|
| -void CXFA_Text::SetContent(CFX_WideString wsText, FX_BOOL bNotify) {
|
| - CFX_WideString wsFormatValue(wsText);
|
| - CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData();
|
| - if (pContainerWidgetData) {
|
| - pContainerWidgetData->GetFormatDataValue(wsText, wsFormatValue);
|
| - }
|
| - m_pNode->SetContent(wsText, wsFormatValue, bNotify);
|
| -}
|
| -FX_BOOL CXFA_Text::SetName(const CFX_WideString& wsName) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Name, wsName);
|
| -}
|
| -FX_BOOL CXFA_Text::SetMaxChars(int32_t iMaxChars) {
|
| - return m_pNode->SetInteger(XFA_ATTRIBUTE_MaxChars, iMaxChars);
|
| -}
|
| -FX_BOOL CXFA_Text::SetRid(const CFX_WideString& wsRid) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Rid, wsRid);
|
| -}
|
| -CXFA_ExData::CXFA_ExData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -void CXFA_ExData::GetContentType(CFX_WideStringC& wsContentType) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_ContentType, wsContentType);
|
| -}
|
| -void CXFA_ExData::GetHref(CFX_WideStringC& wsHref) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Href, wsHref);
|
| -}
|
| -int32_t CXFA_ExData::GetMaxLength() {
|
| - return m_pNode->GetInteger(XFA_ATTRIBUTE_MaxLength);
|
| -}
|
| -void CXFA_ExData::GetRid(CFX_WideStringC& wsRid) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Rid, wsRid);
|
| -}
|
| -int32_t CXFA_ExData::GetTransferEncoding() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_TransferEncoding);
|
| -}
|
| -void CXFA_ExData::GetContent(CFX_WideString& wsText) {
|
| - m_pNode->TryContent(wsText);
|
| -}
|
| -FX_BOOL CXFA_ExData::SetContentType(const CFX_WideString& wsContentType) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_ContentType, wsContentType);
|
| -}
|
| -FX_BOOL CXFA_ExData::SetHref(const CFX_WideString& wsHref) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Href, wsHref);
|
| -}
|
| -FX_BOOL CXFA_ExData::SetMaxLength(int32_t iMaxLength) {
|
| - return m_pNode->SetInteger(XFA_ATTRIBUTE_MaxLength, iMaxLength);
|
| -}
|
| -FX_BOOL CXFA_ExData::SetRid(const CFX_WideString& wsRid) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Rid, wsRid);
|
| -}
|
| -FX_BOOL CXFA_ExData::SetTransferEncoding(int32_t iTransferEncoding) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_TransferEncoding,
|
| - (XFA_ATTRIBUTEENUM)iTransferEncoding);
|
| -}
|
| -FX_BOOL CXFA_ExData::SetContent(const CFX_WideString& wsText,
|
| - FX_BOOL bNotify,
|
| - FX_BOOL bScriptModify,
|
| - FX_BOOL bSyncData) {
|
| - CFX_WideString wsFormatValue(wsText);
|
| - CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData();
|
| - if (pContainerWidgetData) {
|
| - pContainerWidgetData->GetFormatDataValue(wsText, wsFormatValue);
|
| - }
|
| - return m_pNode->SetContent(wsText, wsFormatValue, bNotify, bScriptModify,
|
| - bSyncData);
|
| -}
|
| -CXFA_Image::CXFA_Image(CXFA_Node* pNode, FX_BOOL bDefValue)
|
| - : CXFA_Data(pNode), m_bDefValue(bDefValue) {}
|
| -int32_t CXFA_Image::GetAspect() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Aspect);
|
| -}
|
| -FX_BOOL CXFA_Image::GetContentType(CFX_WideString& wsContentType) {
|
| - return m_pNode->TryCData(XFA_ATTRIBUTE_ContentType, wsContentType);
|
| -}
|
| -FX_BOOL CXFA_Image::GetHref(CFX_WideString& wsHref) {
|
| - if (m_bDefValue) {
|
| - return m_pNode->TryCData(XFA_ATTRIBUTE_Href, wsHref);
|
| - }
|
| - return m_pNode->GetAttribute(FX_WSTRC(L"href"), wsHref);
|
| -}
|
| -int32_t CXFA_Image::GetTransferEncoding() {
|
| - if (m_bDefValue) {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_TransferEncoding);
|
| - }
|
| - return XFA_ATTRIBUTEENUM_Base64;
|
| -}
|
| -FX_BOOL CXFA_Image::GetContent(CFX_WideString& wsText) {
|
| - return m_pNode->TryContent(wsText);
|
| -}
|
| -FX_BOOL CXFA_Image::SetAspect(int32_t iAspect) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Aspect, (XFA_ATTRIBUTEENUM)iAspect);
|
| -}
|
| -FX_BOOL CXFA_Image::SetContentType(const CFX_WideString& wsContentType) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_ContentType, wsContentType);
|
| -}
|
| -FX_BOOL CXFA_Image::SetHref(const CFX_WideString& wsHref) {
|
| - if (m_bDefValue) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Href, wsHref);
|
| - }
|
| - return m_pNode->SetAttribute(XFA_ATTRIBUTE_Href, wsHref);
|
| -}
|
| -FX_BOOL CXFA_Image::SetTransferEncoding(int32_t iTransferEncoding) {
|
| - if (m_bDefValue) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_TransferEncoding,
|
| - (XFA_ATTRIBUTEENUM)iTransferEncoding);
|
| - }
|
| - return TRUE;
|
| -}
|
| -FX_BOOL CXFA_Image::SetContent(const CFX_WideString& wsText) {
|
| - CFX_WideString wsFormatValue(wsText);
|
| - CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData();
|
| - if (pContainerWidgetData) {
|
| - pContainerWidgetData->GetFormatDataValue(wsText, wsFormatValue);
|
| - }
|
| - return m_pNode->SetContent(wsText, wsFormatValue);
|
| -}
|
| -CXFA_Calculate::CXFA_Calculate(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -int32_t CXFA_Calculate::GetOverride() {
|
| - XFA_ATTRIBUTEENUM eAtt = XFA_ATTRIBUTEENUM_Error;
|
| - m_pNode->TryEnum(XFA_ATTRIBUTE_Override, eAtt, FALSE);
|
| - return eAtt;
|
| -}
|
| -CXFA_Script CXFA_Calculate::GetScript() {
|
| - return m_pNode->GetChild(0, XFA_ELEMENT_Script);
|
| -}
|
| -void CXFA_Calculate::GetMessageText(CFX_WideString& wsMessage) {
|
| - if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Message)) {
|
| - CXFA_Text text(pNode->GetChild(0, XFA_ELEMENT_Text));
|
| - if (text) {
|
| - text.GetContent(wsMessage);
|
| - }
|
| - }
|
| -}
|
| -FX_BOOL CXFA_Calculate::SetOverride(int32_t iOverride) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Override, (XFA_ATTRIBUTEENUM)iOverride);
|
| -}
|
| -FX_BOOL CXFA_Calculate::SetMessageText(const CFX_WideString& wsMessage) {
|
| - if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Message)) {
|
| - CXFA_Node* pChildNode = pNode->GetProperty(0, XFA_ELEMENT_Text);
|
| - return pChildNode->SetContent(wsMessage, wsMessage);
|
| - }
|
| - return FALSE;
|
| -}
|
| -CXFA_Validate::CXFA_Validate(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -int32_t CXFA_Validate::GetFormatTest() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_FormatTest);
|
| -}
|
| -FX_BOOL CXFA_Validate::SetTestValue(int32_t iType,
|
| - CFX_WideString& wsValue,
|
| - XFA_ATTRIBUTEENUM eName) {
|
| - XFA_LPCATTRIBUTEENUMINFO pInfo = XFA_GetAttributeEnumByName(wsValue);
|
| - if (pInfo) {
|
| - eName = pInfo->eName;
|
| - }
|
| - m_pNode->SetEnum((XFA_ATTRIBUTE)iType, eName, FALSE);
|
| - return TRUE;
|
| -}
|
| -FX_BOOL CXFA_Validate::SetFormatTest(CFX_WideString wsValue) {
|
| - return SetTestValue(XFA_ATTRIBUTE_FormatTest, wsValue,
|
| - XFA_ATTRIBUTEENUM_Warning);
|
| -}
|
| -FX_BOOL CXFA_Validate::SetNullTest(CFX_WideString wsValue) {
|
| - return SetTestValue(XFA_ATTRIBUTE_NullTest, wsValue,
|
| - XFA_ATTRIBUTEENUM_Disabled);
|
| -}
|
| -int32_t CXFA_Validate::GetNullTest() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_NullTest);
|
| -}
|
| -int32_t CXFA_Validate::GetScriptTest() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_ScriptTest);
|
| -}
|
| -void CXFA_Validate::GetMessageText(CFX_WideString& wsMessage,
|
| - const CFX_WideStringC& wsMessageType) {
|
| - if (CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Message, FALSE)) {
|
| - CXFA_Node* pItemNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pItemNode;
|
| - pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pItemNode->GetClassID() != XFA_ELEMENT_Text) {
|
| - continue;
|
| - }
|
| - CFX_WideStringC wsName;
|
| - pItemNode->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| - if (wsName.IsEmpty() || wsName == wsMessageType) {
|
| - pItemNode->TryContent(wsMessage);
|
| - return;
|
| - }
|
| - }
|
| - }
|
| -}
|
| -void CXFA_Validate::SetFormatMessageText(CFX_WideString wsMessage) {
|
| - SetMessageText(wsMessage, FX_WSTRC(L"formatTest"));
|
| -}
|
| -void CXFA_Validate::GetFormatMessageText(CFX_WideString& wsMessage) {
|
| - GetMessageText(wsMessage, FX_WSTRC(L"formatTest"));
|
| -}
|
| -void CXFA_Validate::SetNullMessageText(CFX_WideString wsMessage) {
|
| - SetMessageText(wsMessage, FX_WSTRC(L"nullTest"));
|
| -}
|
| -void CXFA_Validate::GetNullMessageText(CFX_WideString& wsMessage) {
|
| - GetMessageText(wsMessage, FX_WSTRC(L"nullTest"));
|
| -}
|
| -void CXFA_Validate::SetMessageText(CFX_WideString& wsMessage,
|
| - const CFX_WideStringC& wsMessageType) {
|
| - if (CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Message, TRUE)) {
|
| - CXFA_Node* pItemNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pItemNode;
|
| - pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pItemNode->GetClassID() != XFA_ELEMENT_Text) {
|
| - continue;
|
| - }
|
| - CFX_WideStringC wsName;
|
| - pItemNode->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| - if (wsName.IsEmpty() || wsName == wsMessageType) {
|
| - pItemNode->SetContent(wsMessage, wsMessage, FALSE);
|
| - return;
|
| - }
|
| - }
|
| - CXFA_Node* pTextNode = pNode->CreateSamePacketNode(XFA_ELEMENT_Text);
|
| - pNode->InsertChild(pTextNode);
|
| - pTextNode->SetCData(XFA_ATTRIBUTE_Name, wsMessageType, FALSE);
|
| - pTextNode->SetContent(wsMessage, wsMessage, FALSE);
|
| - }
|
| -}
|
| -void CXFA_Validate::GetScriptMessageText(CFX_WideString& wsMessage) {
|
| - GetMessageText(wsMessage, FX_WSTRC(L"scriptTest"));
|
| -}
|
| -void CXFA_Validate::SetScriptMessageText(CFX_WideString wsMessage) {
|
| - SetMessageText(wsMessage, FX_WSTRC(L"scriptTest"));
|
| -}
|
| -void CXFA_Validate::GetPicture(CFX_WideString& wsPicture) {
|
| - if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Picture)) {
|
| - pNode->TryContent(wsPicture);
|
| - }
|
| -}
|
| -CXFA_Script CXFA_Validate::GetScript() {
|
| - return m_pNode->GetChild(0, XFA_ELEMENT_Script);
|
| -}
|
| -CXFA_Variables::CXFA_Variables(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -int32_t CXFA_Variables::CountScripts() {
|
| - return m_pNode->CountChildren(XFA_ELEMENT_Script);
|
| -}
|
| -CXFA_Script CXFA_Variables::GetScript(int32_t nIndex) {
|
| - return m_pNode->GetChild(nIndex, XFA_ELEMENT_Script);
|
| -}
|
| -CXFA_Bind::CXFA_Bind(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -int32_t CXFA_Bind::GetMatch() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Match);
|
| -}
|
| -void CXFA_Bind::GetRef(CFX_WideStringC& wsRef) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| -}
|
| -void CXFA_Bind::GetPicture(CFX_WideString& wsPicture) {
|
| - if (CXFA_Node* pPicture = m_pNode->GetChild(0, XFA_ELEMENT_Picture)) {
|
| - pPicture->TryContent(wsPicture);
|
| - }
|
| -}
|
| -FX_BOOL CXFA_Bind::SetMatch(int32_t iMatch) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Match, (XFA_ATTRIBUTEENUM)iMatch);
|
| -}
|
| -FX_BOOL CXFA_Bind::SetRef(const CFX_WideString& wsRef) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| -}
|
| -FX_BOOL CXFA_Bind::SetPicture(const CFX_WideString& wsPicture) {
|
| - if (CXFA_Node* pPicture = m_pNode->GetChild(0, XFA_ELEMENT_Picture)) {
|
| - return pPicture->SetContent(wsPicture, wsPicture);
|
| - }
|
| - return FALSE;
|
| -}
|
| -CXFA_Assist::CXFA_Assist(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -CXFA_ToolTip CXFA_Assist::GetToolTip() {
|
| - return m_pNode->GetChild(0, XFA_ELEMENT_ToolTip);
|
| -}
|
| -CXFA_ToolTip::CXFA_ToolTip(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -FX_BOOL CXFA_ToolTip::GetTip(CFX_WideString& wsTip) {
|
| - return m_pNode->TryContent(wsTip);
|
| -}
|
| -FX_BOOL CXFA_ToolTip::SetTip(const CFX_WideString& wsTip) {
|
| - return m_pNode->SetContent(wsTip, wsTip);
|
| -}
|
| -CXFA_BindItems::CXFA_BindItems(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -void CXFA_BindItems::GetConnection(CFX_WideStringC& wsConnection) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Connection, wsConnection);
|
| -}
|
| -void CXFA_BindItems::GetLabelRef(CFX_WideStringC& wsLabelRef) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_LabelRef, wsLabelRef);
|
| -}
|
| -void CXFA_BindItems::GetValueRef(CFX_WideStringC& wsValueRef) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_ValueRef, wsValueRef);
|
| -}
|
| -void CXFA_BindItems::GetRef(CFX_WideStringC& wsRef) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| -}
|
| -FX_BOOL CXFA_BindItems::SetConnection(const CFX_WideString& wsConnection) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Connection, wsConnection);
|
| -}
|
| -FX_BOOL CXFA_BindItems::SetLabelRef(const CFX_WideString& wsLabelRef) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_LabelRef, wsLabelRef);
|
| -}
|
| -FX_BOOL CXFA_BindItems::SetValueRef(const CFX_WideString& wsValueRef) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_ValueRef, wsValueRef);
|
| -}
|
| -FX_BOOL CXFA_BindItems::SetRef(const CFX_WideString& wsRef) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| -}
|
| -int32_t CXFA_Box::GetBreak() const {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Close;
|
| - }
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Break);
|
| -}
|
| -int32_t CXFA_Box::GetHand() const {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Even;
|
| - }
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Hand);
|
| -}
|
| -int32_t CXFA_Box::GetPresence() const {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Hidden;
|
| - }
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Presence);
|
| -}
|
| -int32_t CXFA_Box::CountCorners() const {
|
| - if (!m_pNode) {
|
| - return 0;
|
| - }
|
| - return m_pNode->CountChildren(XFA_ELEMENT_Corner);
|
| -}
|
| -CXFA_Corner CXFA_Box::GetCorner(int32_t nIndex) const {
|
| - if (!m_pNode) {
|
| - return NULL;
|
| - }
|
| - return CXFA_Corner(
|
| - m_pNode->GetProperty(nIndex, XFA_ELEMENT_Corner, nIndex == 0));
|
| -}
|
| -int32_t CXFA_Box::CountEdges() const {
|
| - if (!m_pNode) {
|
| - return 0;
|
| - }
|
| - return m_pNode->CountChildren(XFA_ELEMENT_Edge);
|
| -}
|
| -CXFA_Edge CXFA_Box::GetEdge(int32_t nIndex) const {
|
| - if (!m_pNode) {
|
| - return NULL;
|
| - }
|
| - return CXFA_Edge(m_pNode->GetProperty(nIndex, XFA_ELEMENT_Edge, nIndex == 0));
|
| -}
|
| -static void XFA_BOX_GetStrokes(CXFA_Node* pNode,
|
| - CXFA_StrokeArray& strokes,
|
| - FX_BOOL bNULL) {
|
| - strokes.RemoveAll();
|
| - if (!pNode) {
|
| - return;
|
| - }
|
| - strokes.SetSize(8);
|
| - int32_t i, j;
|
| - for (i = 0, j = 0; i < 4; i++) {
|
| - CXFA_Corner corner =
|
| - CXFA_Corner(pNode->GetProperty(i, XFA_ELEMENT_Corner, i == 0));
|
| - if (corner.IsExistInXML() || i == 0) {
|
| - strokes.SetAt(j, corner);
|
| - } else if (bNULL) {
|
| - strokes.SetAt(j, NULL);
|
| - } else if (i == 1) {
|
| - strokes.SetAt(j, strokes[0]);
|
| - } else if (i == 2) {
|
| - strokes.SetAt(j, strokes[0]);
|
| - } else {
|
| - strokes.SetAt(j, strokes[2]);
|
| - }
|
| - j++;
|
| - CXFA_Edge edge = CXFA_Edge(pNode->GetProperty(i, XFA_ELEMENT_Edge, i == 0));
|
| - if (edge.IsExistInXML() || i == 0) {
|
| - strokes.SetAt(j, edge);
|
| - } else if (bNULL) {
|
| - strokes.SetAt(j, NULL);
|
| - } else if (i == 1) {
|
| - strokes.SetAt(j, strokes[1]);
|
| - } else if (i == 2) {
|
| - strokes.SetAt(j, strokes[1]);
|
| - } else {
|
| - strokes.SetAt(j, strokes[3]);
|
| - }
|
| - j++;
|
| - }
|
| -}
|
| -void CXFA_Box::GetStrokes(CXFA_StrokeArray& strokes) const {
|
| - XFA_BOX_GetStrokes(m_pNode, strokes, FALSE);
|
| -}
|
| -FX_BOOL CXFA_Box::IsCircular() const {
|
| - if (!m_pNode) {
|
| - return FALSE;
|
| - }
|
| - return m_pNode->GetBoolean(XFA_ATTRIBUTE_Circular);
|
| -}
|
| -FX_BOOL CXFA_Box::GetStartAngle(FX_FLOAT& fStartAngle) const {
|
| - fStartAngle = 0;
|
| - if (!m_pNode) {
|
| - return FALSE;
|
| - }
|
| - CXFA_Measurement ms;
|
| - FX_BOOL bRet = m_pNode->TryMeasure(XFA_ATTRIBUTE_StartAngle, ms, FALSE);
|
| - if (bRet) {
|
| - fStartAngle = ms.GetValue();
|
| - }
|
| - return bRet;
|
| -}
|
| -FX_BOOL CXFA_Box::GetSweepAngle(FX_FLOAT& fSweepAngle) const {
|
| - fSweepAngle = 360;
|
| - if (!m_pNode) {
|
| - return FALSE;
|
| - }
|
| - CXFA_Measurement ms;
|
| - FX_BOOL bRet = m_pNode->TryMeasure(XFA_ATTRIBUTE_SweepAngle, ms, FALSE);
|
| - if (bRet) {
|
| - fSweepAngle = ms.GetValue();
|
| - }
|
| - return bRet;
|
| -}
|
| -CXFA_Fill CXFA_Box::GetFill(FX_BOOL bModified) const {
|
| - if (!m_pNode) {
|
| - return NULL;
|
| - }
|
| - CXFA_Node* pFillNode = m_pNode->GetProperty(0, XFA_ELEMENT_Fill, bModified);
|
| - return CXFA_Fill(pFillNode);
|
| -}
|
| -CXFA_Margin CXFA_Box::GetMargin() const {
|
| - if (!m_pNode) {
|
| - return NULL;
|
| - }
|
| - return CXFA_Margin(m_pNode->GetChild(0, XFA_ELEMENT_Margin));
|
| -}
|
| -static FX_BOOL XFA_BOX_SameStyles(const CXFA_StrokeArray& strokes) {
|
| - int32_t iCount = strokes.GetSize();
|
| - if (iCount < 1) {
|
| - return TRUE;
|
| - }
|
| - CXFA_Stroke stroke1 = strokes[0];
|
| - for (int32_t i = 1; i < iCount; i++) {
|
| - CXFA_Stroke stroke2 = strokes[i];
|
| - if (!stroke2.IsExistInXML()) {
|
| - continue;
|
| - }
|
| - if (!stroke1.IsExistInXML()) {
|
| - stroke1 = stroke2;
|
| - } else if (!stroke1.SameStyles(stroke2)) {
|
| - return FALSE;
|
| - }
|
| - }
|
| - return TRUE;
|
| -}
|
| -FX_BOOL CXFA_Box::SameStyles() const {
|
| - if (IsArc()) {
|
| - return TRUE;
|
| - }
|
| - CXFA_StrokeArray strokes;
|
| - XFA_BOX_GetStrokes(m_pNode, strokes, TRUE);
|
| - return XFA_BOX_SameStyles(strokes);
|
| -}
|
| -static int32_t XFA_BOX_3DStyle(const CXFA_StrokeArray& strokes,
|
| - CXFA_Stroke& stroke) {
|
| - int32_t iCount = strokes.GetSize();
|
| - if (iCount < 1) {
|
| - return 0;
|
| - }
|
| - stroke = strokes[0];
|
| - for (int32_t i = 1; i < iCount; i++) {
|
| - CXFA_Stroke find = strokes[i];
|
| - if (!find.IsExistInXML()) {
|
| - continue;
|
| - }
|
| - if (!stroke.IsExistInXML()) {
|
| - stroke = find;
|
| - } else if (stroke.GetStrokeType() != find.GetStrokeType()) {
|
| - stroke = find;
|
| - break;
|
| - }
|
| - }
|
| - int32_t iType = stroke.GetStrokeType();
|
| - if (iType == XFA_ATTRIBUTEENUM_Lowered || iType == XFA_ATTRIBUTEENUM_Raised ||
|
| - iType == XFA_ATTRIBUTEENUM_Etched ||
|
| - iType == XFA_ATTRIBUTEENUM_Embossed) {
|
| - return iType;
|
| - }
|
| - return 0;
|
| -}
|
| -int32_t CXFA_Box::Get3DStyle(FX_BOOL& bVisible, FX_FLOAT& fThickness) const {
|
| - if (IsArc()) {
|
| - return 0;
|
| - }
|
| - CXFA_StrokeArray strokes;
|
| - XFA_BOX_GetStrokes(m_pNode, strokes, TRUE);
|
| - CXFA_Stroke stroke(NULL);
|
| - int32_t iType = XFA_BOX_3DStyle(strokes, stroke);
|
| - if (iType) {
|
| - bVisible = stroke.IsVisible();
|
| - fThickness = stroke.GetThickness();
|
| - }
|
| - return iType;
|
| -}
|
| -int32_t CXFA_Stroke::GetPresence() const {
|
| - return m_pNode ? m_pNode->GetEnum(XFA_ATTRIBUTE_Presence)
|
| - : XFA_ATTRIBUTEENUM_Invisible;
|
| -}
|
| -int32_t CXFA_Stroke::GetCapType() const {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Square;
|
| - }
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Cap);
|
| -}
|
| -int32_t CXFA_Stroke::GetStrokeType() const {
|
| - return m_pNode ? m_pNode->GetEnum(XFA_ATTRIBUTE_Stroke)
|
| - : XFA_ATTRIBUTEENUM_Solid;
|
| -}
|
| -FX_FLOAT CXFA_Stroke::GetThickness() const {
|
| - return GetMSThickness().ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -CXFA_Measurement CXFA_Stroke::GetMSThickness() const {
|
| - return m_pNode ? m_pNode->GetMeasure(XFA_ATTRIBUTE_Thickness)
|
| - : XFA_GetAttributeDefaultValue_Measure(XFA_ELEMENT_Edge,
|
| - XFA_ATTRIBUTE_Thickness,
|
| - XFA_XDPPACKET_Form);
|
| -}
|
| -void CXFA_Stroke::SetThickness(FX_FLOAT fThickness) {
|
| - if (!m_pNode) {
|
| - return;
|
| - }
|
| - CXFA_Measurement thickness(fThickness, XFA_UNIT_Pt);
|
| - m_pNode->SetMeasure(XFA_ATTRIBUTE_Thickness, thickness);
|
| -}
|
| -void CXFA_Stroke::SetMSThickness(CXFA_Measurement msThinkness) {
|
| - if (!m_pNode) {
|
| - return;
|
| - }
|
| - m_pNode->SetMeasure(XFA_ATTRIBUTE_Thickness, msThinkness);
|
| -}
|
| -FX_ARGB CXFA_Stroke::GetColor() const {
|
| - if (!m_pNode) {
|
| - return 0xFF000000;
|
| - }
|
| - CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Color);
|
| - if (!pNode) {
|
| - return 0xFF000000;
|
| - }
|
| - CFX_WideStringC wsColor;
|
| - pNode->TryCData(XFA_ATTRIBUTE_Value, wsColor);
|
| - return XFA_WStringToColor(wsColor);
|
| -}
|
| -void CXFA_Stroke::SetColor(FX_ARGB argb) {
|
| - if (!m_pNode) {
|
| - return;
|
| - }
|
| - CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| - CFX_WideString wsColor;
|
| - int a, r, g, b;
|
| - ArgbDecode(argb, a, r, g, b);
|
| - wsColor.Format(L"%d,%d,%d", r, g, b);
|
| - pNode->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| -}
|
| -int32_t CXFA_Stroke::GetJoinType() const {
|
| - return m_pNode ? m_pNode->GetEnum(XFA_ATTRIBUTE_Join)
|
| - : XFA_ATTRIBUTEENUM_Square;
|
| -}
|
| -FX_BOOL CXFA_Stroke::IsInverted() const {
|
| - return m_pNode ? m_pNode->GetBoolean(XFA_ATTRIBUTE_Inverted) : FALSE;
|
| -}
|
| -FX_FLOAT CXFA_Stroke::GetRadius() const {
|
| - return m_pNode ? m_pNode->GetMeasure(XFA_ATTRIBUTE_Radius).ToUnit(XFA_UNIT_Pt)
|
| - : 0;
|
| -}
|
| -FX_BOOL CXFA_Stroke::SameStyles(CXFA_Stroke stroke, FX_DWORD dwFlags) const {
|
| - if (m_pNode == (CXFA_Node*)stroke) {
|
| - return TRUE;
|
| - }
|
| - if (FXSYS_fabs(GetThickness() - stroke.GetThickness()) >= 0.01f) {
|
| - return FALSE;
|
| - }
|
| - if ((dwFlags & XFA_STROKE_SAMESTYLE_NoPresence) == 0 &&
|
| - IsVisible() != stroke.IsVisible()) {
|
| - return FALSE;
|
| - }
|
| - if (GetStrokeType() != stroke.GetStrokeType()) {
|
| - return FALSE;
|
| - }
|
| - if (GetColor() != stroke.GetColor()) {
|
| - return FALSE;
|
| - }
|
| - if ((dwFlags & XFA_STROKE_SAMESTYLE_Corner) != 0 &&
|
| - FXSYS_fabs(GetRadius() - stroke.GetRadius()) >= 0.01f) {
|
| - return FALSE;
|
| - }
|
| - return TRUE;
|
| -}
|
| -FX_FLOAT XFA_GetEdgeThickness(const CXFA_StrokeArray& strokes,
|
| - FX_BOOL b3DStyle,
|
| - int32_t nIndex) {
|
| - FX_FLOAT fThickness = 0;
|
| - {
|
| - if (strokes[nIndex * 2 + 1].GetPresence() == XFA_ATTRIBUTEENUM_Visible) {
|
| - if (nIndex == 0) {
|
| - fThickness += 2.5f;
|
| - }
|
| - fThickness += strokes[nIndex * 2 + 1].GetThickness() * (b3DStyle ? 4 : 2);
|
| - }
|
| - }
|
| - return fThickness;
|
| -}
|
| -CXFA_WidgetData::CXFA_WidgetData(CXFA_Node* pNode)
|
| - : CXFA_Data(pNode),
|
| - m_bIsNull(TRUE),
|
| - m_bPreNull(TRUE),
|
| - m_pUiChildNode(NULL),
|
| - m_eUIType(XFA_ELEMENT_UNKNOWN) {}
|
| -CXFA_Node* CXFA_WidgetData::GetUIChild() {
|
| - if (m_eUIType == XFA_ELEMENT_UNKNOWN) {
|
| - m_pUiChildNode = XFA_CreateUIChild(m_pNode, m_eUIType);
|
| - }
|
| - return m_pUiChildNode;
|
| -}
|
| -XFA_ELEMENT CXFA_WidgetData::GetUIType() {
|
| - GetUIChild();
|
| - return m_eUIType;
|
| -}
|
| -CFX_WideString CXFA_WidgetData::GetRawValue() {
|
| - return m_pNode->GetContent();
|
| -}
|
| -int32_t CXFA_WidgetData::GetAccess(FX_BOOL bTemplate) {
|
| - if (bTemplate) {
|
| - CXFA_Node* pNode = m_pNode->GetTemplateNode();
|
| - if (pNode) {
|
| - return pNode->GetEnum(XFA_ATTRIBUTE_Access);
|
| - }
|
| - return XFA_ATTRIBUTEENUM_Open;
|
| - }
|
| - CXFA_Node* pNode = m_pNode;
|
| - while (pNode) {
|
| - int32_t iAcc = pNode->GetEnum(XFA_ATTRIBUTE_Access);
|
| - if (iAcc != XFA_ATTRIBUTEENUM_Open) {
|
| - return iAcc;
|
| - }
|
| - pNode =
|
| - pNode->GetNodeItem(XFA_NODEITEM_Parent, XFA_OBJECTTYPE_ContainerNode);
|
| - }
|
| - return XFA_ATTRIBUTEENUM_Open;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetAccessKey(CFX_WideStringC& wsAccessKey) {
|
| - return m_pNode->TryCData(XFA_ATTRIBUTE_AccessKey, wsAccessKey);
|
| -}
|
| -int32_t CXFA_WidgetData::GetAnchorType() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_AnchorType);
|
| -}
|
| -int32_t CXFA_WidgetData::GetColSpan() {
|
| - return m_pNode->GetInteger(XFA_ATTRIBUTE_ColSpan);
|
| -}
|
| -int32_t CXFA_WidgetData::GetPresence() {
|
| - return m_pNode->GetEnum(XFA_ATTRIBUTE_Presence);
|
| - CXFA_Node* pNode = m_pNode;
|
| - while (pNode && pNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode) {
|
| - int32_t iAcc = pNode->GetEnum(XFA_ATTRIBUTE_Presence);
|
| - if (iAcc != XFA_ATTRIBUTEENUM_Visible) {
|
| - return iAcc;
|
| - }
|
| - pNode = pNode->GetNodeItem(XFA_NODEITEM_Parent);
|
| - }
|
| - return XFA_ATTRIBUTEENUM_Visible;
|
| -}
|
| -int32_t CXFA_WidgetData::GetRotate() {
|
| - CXFA_Measurement ms;
|
| - if (!m_pNode->TryMeasure(XFA_ATTRIBUTE_Rotate, ms, FALSE)) {
|
| - return 0;
|
| - }
|
| - int32_t iRotate = FXSYS_round(ms.GetValue());
|
| - iRotate = XFA_MapRotation(iRotate);
|
| - return iRotate / 90 * 90;
|
| -}
|
| -CXFA_Border CXFA_WidgetData::GetBorder(FX_BOOL bModified) {
|
| - return CXFA_Border(m_pNode->GetProperty(0, XFA_ELEMENT_Border, bModified));
|
| -}
|
| -CXFA_Caption CXFA_WidgetData::GetCaption(FX_BOOL bModified) {
|
| - return CXFA_Caption(m_pNode->GetProperty(0, XFA_ELEMENT_Caption, bModified));
|
| -}
|
| -CXFA_Font CXFA_WidgetData::GetFont(FX_BOOL bModified) {
|
| - return CXFA_Font(m_pNode->GetProperty(0, XFA_ELEMENT_Font, bModified));
|
| -}
|
| -CXFA_Margin CXFA_WidgetData::GetMargin(FX_BOOL bModified) {
|
| - return CXFA_Margin(m_pNode->GetProperty(0, XFA_ELEMENT_Margin, bModified));
|
| -}
|
| -CXFA_Para CXFA_WidgetData::GetPara(FX_BOOL bModified) {
|
| - return CXFA_Para(m_pNode->GetProperty(0, XFA_ELEMENT_Para, bModified));
|
| -}
|
| -CXFA_Keep CXFA_WidgetData::GetKeep(FX_BOOL bModified) {
|
| - return CXFA_Keep(m_pNode->GetProperty(0, XFA_ELEMENT_Keep, bModified),
|
| - m_pNode);
|
| -}
|
| -void CXFA_WidgetData::GetEventList(CXFA_NodeArray& events) {
|
| - m_pNode->GetNodeList(events, 0, XFA_ELEMENT_Event);
|
| -}
|
| -int32_t CXFA_WidgetData::GetEventByActivity(int32_t iActivity,
|
| - CXFA_NodeArray& events,
|
| - FX_BOOL bIsFormReady) {
|
| - CXFA_NodeArray allEvents;
|
| - GetEventList(allEvents);
|
| - int32_t iCount = allEvents.GetSize();
|
| - for (int32_t i = 0; i < iCount; i++) {
|
| - CXFA_Event event(allEvents[i]);
|
| - if (event.GetActivity() == iActivity) {
|
| - if (iActivity == XFA_ATTRIBUTEENUM_Ready) {
|
| - CFX_WideStringC wsRef;
|
| - event.GetRef(wsRef);
|
| - if (bIsFormReady) {
|
| - if (wsRef == CFX_WideStringC(L"$form")) {
|
| - events.Add(allEvents[i]);
|
| - }
|
| - } else {
|
| - if (wsRef == CFX_WideStringC(L"$layout")) {
|
| - events.Add(allEvents[i]);
|
| - }
|
| - }
|
| - } else {
|
| - events.Add(allEvents[i]);
|
| - }
|
| - }
|
| - }
|
| - return events.GetSize();
|
| -}
|
| -CXFA_Value CXFA_WidgetData::GetDefaultValue(FX_BOOL bModified) {
|
| - CXFA_Node* pTemNode = m_pNode->GetTemplateNode();
|
| - return pTemNode ? pTemNode->GetProperty(0, XFA_ELEMENT_Value, bModified)
|
| - : NULL;
|
| -}
|
| -CXFA_Value CXFA_WidgetData::GetFormValue(FX_BOOL bModified) {
|
| - return m_pNode->GetProperty(0, XFA_ELEMENT_Value, bModified);
|
| -}
|
| -CXFA_Calculate CXFA_WidgetData::GetCalculate(FX_BOOL bModified) {
|
| - return m_pNode->GetProperty(0, XFA_ELEMENT_Calculate, bModified);
|
| -}
|
| -CXFA_Validate CXFA_WidgetData::GetValidate(FX_BOOL bModified) {
|
| - return m_pNode->GetProperty(0, XFA_ELEMENT_Validate, bModified);
|
| -}
|
| -CXFA_Variables CXFA_WidgetData::GetVariables(FX_BOOL bModified) {
|
| - return m_pNode->GetProperty(0, XFA_ELEMENT_Variables, bModified);
|
| -}
|
| -CXFA_Bind CXFA_WidgetData::GetBind(FX_BOOL bModified) {
|
| - return m_pNode->GetProperty(0, XFA_ELEMENT_Bind, bModified);
|
| -}
|
| -CXFA_Assist CXFA_WidgetData::GetAssist(FX_BOOL bModified) {
|
| - return m_pNode->GetProperty(0, XFA_ELEMENT_Assist, bModified);
|
| -}
|
| -void CXFA_WidgetData::GetRelevant(CFX_WideStringC& wsRelevant) {
|
| - m_pNode->TryCData(XFA_ATTRIBUTE_Relevant, wsRelevant);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetWidth(FX_FLOAT& fWidth) {
|
| - return TryMeasure(XFA_ATTRIBUTE_W, fWidth);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetHeight(FX_FLOAT& fHeight) {
|
| - return TryMeasure(XFA_ATTRIBUTE_H, fHeight);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetMinWidth(FX_FLOAT& fMinWidth) {
|
| - return TryMeasure(XFA_ATTRIBUTE_MinW, fMinWidth);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetMinHeight(FX_FLOAT& fMinHeight) {
|
| - return TryMeasure(XFA_ATTRIBUTE_MinH, fMinHeight);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetMaxWidth(FX_FLOAT& fMaxWidth) {
|
| - return TryMeasure(XFA_ATTRIBUTE_MaxW, fMaxWidth);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetMaxHeight(FX_FLOAT& fMaxHeight) {
|
| - return TryMeasure(XFA_ATTRIBUTE_MaxH, fMaxHeight);
|
| -}
|
| -CXFA_BindItems CXFA_WidgetData::GetBindItems() {
|
| - return m_pNode->GetChild(0, XFA_ELEMENT_BindItems);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetAccess(int32_t iAccess, FX_BOOL bNotify) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Access, (XFA_ATTRIBUTEENUM)iAccess,
|
| - bNotify);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetAccessKey(const CFX_WideString& wsAccessKey) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_AccessKey, wsAccessKey);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetAnchorType(int32_t iType) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_AnchorType, (XFA_ATTRIBUTEENUM)iType);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetColSpan(int32_t iColSpan) {
|
| - return m_pNode->SetInteger(XFA_ATTRIBUTE_ColSpan,
|
| - (XFA_ATTRIBUTEENUM)iColSpan);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetPresence(int32_t iPresence) {
|
| - return m_pNode->SetEnum(XFA_ATTRIBUTE_Presence, (XFA_ATTRIBUTEENUM)iPresence);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetRotate(int32_t iRotate) {
|
| - iRotate = XFA_MapRotation(iRotate);
|
| - CXFA_Measurement ms((FX_FLOAT)iRotate, XFA_UNIT_Angle);
|
| - return m_pNode->SetMeasure(XFA_ATTRIBUTE_Rotate, ms);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetRelevant(const CFX_WideString& wsRelevant) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Relevant, wsRelevant);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetStatus(FX_DWORD dwStatus) {
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetWidth(FX_FLOAT fWidth) {
|
| - return SetMeasure(XFA_ATTRIBUTE_W, fWidth);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetHeight(FX_FLOAT fHeight) {
|
| - return SetMeasure(XFA_ATTRIBUTE_H, fHeight);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetMinWidth(FX_FLOAT fMinWidth) {
|
| - return SetMeasure(XFA_ATTRIBUTE_MinW, fMinWidth);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetMinHeight(FX_FLOAT fMinHeight) {
|
| - return SetMeasure(XFA_ATTRIBUTE_MinH, fMinHeight);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetMaxWidth(FX_FLOAT fMaxWidth) {
|
| - return SetMeasure(XFA_ATTRIBUTE_MaxW, fMaxWidth);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetMaxHeight(FX_FLOAT fMaxHeight) {
|
| - return SetMeasure(XFA_ATTRIBUTE_MaxH, fMaxHeight);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetPos(FX_FLOAT x, FX_FLOAT y) {
|
| - return SetMeasure(XFA_ATTRIBUTE_X, x) && SetMeasure(XFA_ATTRIBUTE_Y, y);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetName(const CFX_WideString& wsName) {
|
| - return m_pNode->SetCData(XFA_ATTRIBUTE_Name, wsName);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetButtonHighlight(int32_t iButtonHighlight) {
|
| - CXFA_Node* pUiChildNode = GetUIChild();
|
| - return pUiChildNode->SetEnum(XFA_ATTRIBUTE_Highlight,
|
| - (XFA_ATTRIBUTEENUM)iButtonHighlight);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetButtonRollover(const CFX_WideString& wsRollover,
|
| - FX_BOOL bRichText) {
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetButtonDown(const CFX_WideString& wsDown,
|
| - FX_BOOL bRichText) {
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetCheckButtonShape(int32_t iCheckButtonShape) {
|
| - CXFA_Node* pUiChildNode = GetUIChild();
|
| - return pUiChildNode->SetEnum(XFA_ATTRIBUTE_Shape,
|
| - (XFA_ATTRIBUTEENUM)iCheckButtonShape);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetCheckButtonMark(int32_t iCheckButtonMark) {
|
| - CXFA_Node* pUiChildNode = GetUIChild();
|
| - return pUiChildNode->SetEnum(XFA_ATTRIBUTE_Mark,
|
| - (XFA_ATTRIBUTEENUM)iCheckButtonMark);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetCheckButtonSize(FX_FLOAT fCheckButtonMark) {
|
| - CXFA_Node* pUiChildNode = GetUIChild();
|
| - if (pUiChildNode) {
|
| - CXFA_Measurement ms(fCheckButtonMark, XFA_UNIT_Pt);
|
| - return pUiChildNode->SetMeasure(XFA_ATTRIBUTE_Size, ms);
|
| - }
|
| - return FALSE;
|
| -}
|
| -CXFA_Border CXFA_WidgetData::GetUIBorder(FX_BOOL bModified) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - return pUIChild ? pUIChild->GetProperty(0, XFA_ELEMENT_Border, bModified)
|
| - : NULL;
|
| -}
|
| -CXFA_Margin CXFA_WidgetData::GetUIMargin(FX_BOOL bModified) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - return pUIChild ? pUIChild->GetProperty(0, XFA_ELEMENT_Margin, bModified)
|
| - : NULL;
|
| -}
|
| -void CXFA_WidgetData::GetUIMargin(CFX_RectF& rtUIMargin) {
|
| - rtUIMargin.Reset();
|
| - CXFA_Margin mgUI = GetUIMargin();
|
| - if (!mgUI) {
|
| - return;
|
| - }
|
| - CXFA_Border border = GetUIBorder();
|
| - if (border && border.GetPresence() != XFA_ATTRIBUTEENUM_Visible) {
|
| - return;
|
| - }
|
| - FX_FLOAT fLeftInset, fTopInset, fRightInset, fBottomInset;
|
| - FX_BOOL bLeft = mgUI.GetLeftInset(fLeftInset);
|
| - FX_BOOL bTop = mgUI.GetTopInset(fTopInset);
|
| - FX_BOOL bRight = mgUI.GetRightInset(fRightInset);
|
| - FX_BOOL bBottom = mgUI.GetBottomInset(fBottomInset);
|
| - if (border) {
|
| - FX_BOOL bVisible = FALSE;
|
| - FX_FLOAT fThickness = 0;
|
| - border.Get3DStyle(bVisible, fThickness);
|
| - if (!bLeft || !bTop || !bRight || !bBottom) {
|
| - CXFA_StrokeArray strokes;
|
| - border.GetStrokes(strokes);
|
| - if (!bTop) {
|
| - fTopInset = XFA_GetEdgeThickness(strokes, bVisible, 0);
|
| - }
|
| - if (!bRight) {
|
| - fRightInset = XFA_GetEdgeThickness(strokes, bVisible, 1);
|
| - }
|
| - if (!bBottom) {
|
| - fBottomInset = XFA_GetEdgeThickness(strokes, bVisible, 2);
|
| - }
|
| - if (!bLeft) {
|
| - fLeftInset = XFA_GetEdgeThickness(strokes, bVisible, 3);
|
| - }
|
| - }
|
| - }
|
| - rtUIMargin.Set(fLeftInset, fTopInset, fRightInset, fBottomInset);
|
| -}
|
| -int32_t CXFA_WidgetData::GetButtonHighlight() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetEnum(XFA_ATTRIBUTE_Highlight);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Enum(
|
| - XFA_ELEMENT_Button, XFA_ATTRIBUTE_Highlight, XFA_XDPPACKET_Form);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetButtonRollover(CFX_WideString& wsRollover,
|
| - FX_BOOL& bRichText) {
|
| - if (CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| - CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - while (pText) {
|
| - CFX_WideStringC wsName;
|
| - pText->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| - if (wsName == FX_WSTRC(L"rollover")) {
|
| - pText->TryContent(wsRollover);
|
| - bRichText = pText->GetClassID() == XFA_ELEMENT_ExData;
|
| - return !wsRollover.IsEmpty();
|
| - }
|
| - pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetButtonDown(CFX_WideString& wsDown,
|
| - FX_BOOL& bRichText) {
|
| - if (CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| - CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - while (pText) {
|
| - CFX_WideStringC wsName;
|
| - pText->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| - if (wsName == FX_WSTRC(L"down")) {
|
| - pText->TryContent(wsDown);
|
| - bRichText = pText->GetClassID() == XFA_ELEMENT_ExData;
|
| - return !wsDown.IsEmpty();
|
| - }
|
| - pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -int32_t CXFA_WidgetData::GetCheckButtonShape() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetEnum(XFA_ATTRIBUTE_Shape);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Enum(
|
| - XFA_ELEMENT_CheckButton, XFA_ATTRIBUTE_Shape, XFA_XDPPACKET_Form);
|
| -}
|
| -int32_t CXFA_WidgetData::GetCheckButtonMark() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetEnum(XFA_ATTRIBUTE_Mark);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Enum(
|
| - XFA_ELEMENT_CheckButton, XFA_ATTRIBUTE_Mark, XFA_XDPPACKET_Form);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::IsRadioButton() {
|
| - if (CXFA_Node* pParent = m_pNode->GetNodeItem(XFA_NODEITEM_Parent)) {
|
| - return pParent->GetClassID() == XFA_ELEMENT_ExclGroup;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_FLOAT CXFA_WidgetData::GetCheckButtonSize() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetMeasure(XFA_ATTRIBUTE_Size).ToUnit(XFA_UNIT_Pt);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Measure(
|
| - XFA_ELEMENT_CheckButton, XFA_ATTRIBUTE_Size, XFA_XDPPACKET_Form)
|
| - .ToUnit(XFA_UNIT_Pt);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::IsAllowNeutral() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetBoolean(XFA_ATTRIBUTE_AllowNeutral);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Boolean(
|
| - XFA_ELEMENT_CheckButton, XFA_ATTRIBUTE_AllowNeutral, XFA_XDPPACKET_Form);
|
| -}
|
| -XFA_CHECKSTATE CXFA_WidgetData::GetCheckState() {
|
| - CFX_WideString wsValue = GetRawValue();
|
| - if (wsValue.IsEmpty()) {
|
| - return XFA_CHECKSTATE_Off;
|
| - }
|
| - if (CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| - CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - int32_t i = 0;
|
| - while (pText) {
|
| - CFX_WideString wsContent;
|
| - if (pText->TryContent(wsContent) && (wsContent == wsValue)) {
|
| - return (XFA_CHECKSTATE)i;
|
| - }
|
| - i++;
|
| - pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - }
|
| - return XFA_CHECKSTATE_Off;
|
| -}
|
| -void CXFA_WidgetData::SetCheckState(XFA_CHECKSTATE eCheckState,
|
| - FX_BOOL bNotify) {
|
| - if (CXFA_WidgetData exclGroup = GetExclGroupNode()) {
|
| - CFX_WideString wsValue;
|
| - if (eCheckState != XFA_CHECKSTATE_Off) {
|
| - if (CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| - CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - if (pText) {
|
| - pText->TryContent(wsValue);
|
| - }
|
| - }
|
| - }
|
| - CXFA_Node* pChild =
|
| - ((CXFA_Node*)exclGroup)->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pChild->GetClassID() != XFA_ELEMENT_Field) {
|
| - continue;
|
| - }
|
| - CXFA_Node* pItem = pChild->GetChild(0, XFA_ELEMENT_Items);
|
| - if (!pItem) {
|
| - continue;
|
| - }
|
| - CXFA_Node* pItemchild = pItem->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - if (!pItemchild) {
|
| - continue;
|
| - }
|
| - CFX_WideString text = pItemchild->GetContent();
|
| - CFX_WideString wsChildValue = text;
|
| - if (wsValue != text) {
|
| - pItemchild = pItemchild->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - if (pItemchild) {
|
| - wsChildValue = pItemchild->GetContent();
|
| - } else {
|
| - wsChildValue.Empty();
|
| - }
|
| - }
|
| - CXFA_WidgetData ch(pChild);
|
| - ch.SyncValue(wsChildValue, bNotify);
|
| - }
|
| - exclGroup.SyncValue(wsValue, bNotify);
|
| - } else {
|
| - CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items);
|
| - if (!pItems) {
|
| - return;
|
| - }
|
| - int32_t i = -1;
|
| - CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - CFX_WideString wsContent;
|
| - while (pText) {
|
| - i++;
|
| - if (i == eCheckState) {
|
| - pText->TryContent(wsContent);
|
| - break;
|
| - }
|
| - pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - SyncValue(wsContent, bNotify);
|
| - }
|
| -}
|
| -CXFA_Node* CXFA_WidgetData::GetExclGroupNode() {
|
| - CXFA_Node* pExcl = (CXFA_Node*)m_pNode->GetNodeItem(XFA_NODEITEM_Parent);
|
| - if (!pExcl || pExcl->GetClassID() != XFA_ELEMENT_ExclGroup) {
|
| - return NULL;
|
| - }
|
| - return pExcl;
|
| -}
|
| -CXFA_Node* CXFA_WidgetData::GetSelectedMember() {
|
| - CXFA_Node* pSelectedMember = NULL;
|
| - CFX_WideString wsState = GetRawValue();
|
| - if (wsState.IsEmpty()) {
|
| - return pSelectedMember;
|
| - }
|
| - for (CXFA_Node* pNode =
|
| - (CXFA_Node*)m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - pNode != NULL; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - CXFA_WidgetData widgetData(pNode);
|
| - if (widgetData.GetCheckState() == XFA_CHECKSTATE_On) {
|
| - pSelectedMember = pNode;
|
| - break;
|
| - }
|
| - }
|
| - return pSelectedMember;
|
| -}
|
| -CXFA_Node* CXFA_WidgetData::SetSelectedMember(const CFX_WideStringC& wsName,
|
| - FX_BOOL bNotify) {
|
| - CXFA_Node* pSelectedMember = NULL;
|
| - FX_DWORD nameHash =
|
| - FX_HashCode_String_GetW(wsName.GetPtr(), wsName.GetLength());
|
| - for (CXFA_Node* pNode =
|
| - (CXFA_Node*)m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - pNode != NULL; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pNode->GetNameHash() == nameHash) {
|
| - CXFA_WidgetData widgetData(pNode);
|
| - widgetData.SetCheckState(XFA_CHECKSTATE_On, bNotify);
|
| - pSelectedMember = pNode;
|
| - break;
|
| - }
|
| - }
|
| - return pSelectedMember;
|
| -}
|
| -void CXFA_WidgetData::SetSelectedMemberByValue(const CFX_WideStringC& wsValue,
|
| - FX_BOOL bNotify,
|
| - FX_BOOL bScriptModify,
|
| - FX_BOOL bSyncData) {
|
| - CFX_WideString wsExclGroup;
|
| - for (CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild); pNode;
|
| - pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pNode->GetClassID() != XFA_ELEMENT_Field) {
|
| - continue;
|
| - }
|
| - CXFA_Node* pItem = pNode->GetChild(0, XFA_ELEMENT_Items);
|
| - if (!pItem) {
|
| - continue;
|
| - }
|
| - CXFA_Node* pItemchild = pItem->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - if (!pItemchild) {
|
| - continue;
|
| - }
|
| - CFX_WideString wsChildValue = pItemchild->GetContent();
|
| - if (wsValue != wsChildValue) {
|
| - pItemchild = pItemchild->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - if (pItemchild) {
|
| - wsChildValue = pItemchild->GetContent();
|
| - } else {
|
| - wsChildValue.Empty();
|
| - }
|
| - } else {
|
| - wsExclGroup = wsValue;
|
| - }
|
| - pNode->SetContent(wsChildValue, wsChildValue, bNotify, bScriptModify,
|
| - FALSE);
|
| - }
|
| - if (m_pNode) {
|
| - m_pNode->SetContent(wsExclGroup, wsExclGroup, bNotify, bScriptModify,
|
| - bSyncData);
|
| - }
|
| -}
|
| -CXFA_Node* CXFA_WidgetData::GetExclGroupFirstMember() {
|
| - CXFA_Node* pExcl = GetNode();
|
| - if (!pExcl) {
|
| - return NULL;
|
| - }
|
| - CXFA_Node* pNode = pExcl->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - while (pNode) {
|
| - if (pNode->GetClassID() == XFA_ELEMENT_Field) {
|
| - return pNode;
|
| - }
|
| - pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - return NULL;
|
| -}
|
| -CXFA_Node* CXFA_WidgetData::GetExclGroupNextMember(CXFA_Node* pNode) {
|
| - if (!pNode) {
|
| - return NULL;
|
| - }
|
| - CXFA_Node* pNodeField = pNode->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - while (pNodeField) {
|
| - if (pNodeField->GetClassID() == XFA_ELEMENT_Field) {
|
| - return pNodeField;
|
| - }
|
| - pNodeField = pNodeField->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - return NULL;
|
| -}
|
| -int32_t CXFA_WidgetData::GetChoiceListCommitOn() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetEnum(XFA_ATTRIBUTE_CommitOn);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Enum(
|
| - XFA_ELEMENT_ChoiceList, XFA_ATTRIBUTE_CommitOn, XFA_XDPPACKET_Form);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::IsChoiceListAllowTextEntry() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetBoolean(XFA_ATTRIBUTE_TextEntry);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Boolean(
|
| - XFA_ELEMENT_ChoiceList, XFA_ATTRIBUTE_TextEntry, XFA_XDPPACKET_Form);
|
| -}
|
| -int32_t CXFA_WidgetData::GetChoiceListOpen() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetEnum(XFA_ATTRIBUTE_Open);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Enum(
|
| - XFA_ELEMENT_ChoiceList, XFA_ATTRIBUTE_Open, XFA_XDPPACKET_Form);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::IsListBox() {
|
| - int32_t iOpenMode = GetChoiceListOpen();
|
| - return (iOpenMode == XFA_ATTRIBUTEENUM_Always ||
|
| - iOpenMode == XFA_ATTRIBUTEENUM_MultiSelect);
|
| -}
|
| -int32_t CXFA_WidgetData::CountChoiceListItems(FX_BOOL bSaveValue) {
|
| - CXFA_NodeArray pItems;
|
| - CXFA_Node* pItem = NULL;
|
| - int32_t iCount = 0;
|
| - CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pNode->GetClassID() != XFA_ELEMENT_Items) {
|
| - continue;
|
| - }
|
| - iCount++;
|
| - pItems.Add(pNode);
|
| - if (iCount == 2) {
|
| - break;
|
| - }
|
| - }
|
| - if (iCount == 0) {
|
| - return 0;
|
| - }
|
| - pItem = pItems[0];
|
| - if (iCount > 1) {
|
| - FX_BOOL bItemOneHasSave = pItems[0]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - FX_BOOL bItemTwoHasSave = pItems[1]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - if (bItemOneHasSave != bItemTwoHasSave && bSaveValue == bItemTwoHasSave) {
|
| - pItem = pItems[1];
|
| - }
|
| - }
|
| - pItems.RemoveAll();
|
| - return pItem->CountChildren(XFA_ELEMENT_UNKNOWN);
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetChoiceListItem(CFX_WideString& wsText,
|
| - int32_t nIndex,
|
| - FX_BOOL bSaveValue) {
|
| - wsText.Empty();
|
| - CXFA_NodeArray pItemsArray;
|
| - CXFA_Node* pItems = NULL;
|
| - int32_t iCount = 0;
|
| - CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pNode->GetClassID() != XFA_ELEMENT_Items) {
|
| - continue;
|
| - }
|
| - iCount++;
|
| - pItemsArray.Add(pNode);
|
| - if (iCount == 2) {
|
| - break;
|
| - }
|
| - }
|
| - if (iCount == 0) {
|
| - return FALSE;
|
| - }
|
| - pItems = pItemsArray[0];
|
| - if (iCount > 1) {
|
| - FX_BOOL bItemOneHasSave = pItemsArray[0]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - FX_BOOL bItemTwoHasSave = pItemsArray[1]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - if (bItemOneHasSave != bItemTwoHasSave && bSaveValue == bItemTwoHasSave) {
|
| - pItems = pItemsArray[1];
|
| - }
|
| - }
|
| - if (pItems) {
|
| - CXFA_Node* pItem = pItems->GetChild(nIndex, XFA_ELEMENT_UNKNOWN);
|
| - if (pItem != NULL) {
|
| - pItem->TryContent(wsText);
|
| - return TRUE;
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -void CXFA_WidgetData::GetChoiceListItems(CFX_WideStringArray& wsTextArray,
|
| - FX_BOOL bSaveValue) {
|
| - CXFA_NodeArray pItems;
|
| - CXFA_Node* pItem = NULL;
|
| - int32_t iCount = 0;
|
| - CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pNode->GetClassID() != XFA_ELEMENT_Items) {
|
| - continue;
|
| - }
|
| - iCount++;
|
| - pItems.Add(pNode);
|
| - if (iCount == 2) {
|
| - break;
|
| - }
|
| - }
|
| - if (iCount == 0) {
|
| - return;
|
| - }
|
| - pItem = pItems[0];
|
| - if (iCount > 1) {
|
| - FX_BOOL bItemOneHasSave = pItems[0]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - FX_BOOL bItemTwoHasSave = pItems[1]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - if (bItemOneHasSave != bItemTwoHasSave && bSaveValue == bItemTwoHasSave) {
|
| - pItem = pItems[1];
|
| - }
|
| - }
|
| - pItems.RemoveAll();
|
| - pNode = pItem->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - pNode->TryContent(wsTextArray.Add());
|
| - }
|
| -}
|
| -int32_t CXFA_WidgetData::CountSelectedItems() {
|
| - CFX_WideStringArray wsValueArray;
|
| - GetSelectedItemsValue(wsValueArray);
|
| - if (IsListBox() || !IsChoiceListAllowTextEntry()) {
|
| - return wsValueArray.GetSize();
|
| - }
|
| - int32_t iSelected = 0;
|
| - CFX_WideStringArray wsSaveTextArray;
|
| - GetChoiceListItems(wsSaveTextArray, TRUE);
|
| - int32_t iValues = wsValueArray.GetSize();
|
| - for (int32_t i = 0; i < iValues; i++) {
|
| - int32_t iSaves = wsSaveTextArray.GetSize();
|
| - for (int32_t j = 0; j < iSaves; j++) {
|
| - if (wsValueArray[i] == wsSaveTextArray[j]) {
|
| - iSelected++;
|
| - break;
|
| - }
|
| - }
|
| - }
|
| - return iSelected;
|
| -}
|
| -int32_t CXFA_WidgetData::GetSelectedItem(int32_t nIndex) {
|
| - CFX_WideStringArray wsValueArray;
|
| - GetSelectedItemsValue(wsValueArray);
|
| - CFX_WideStringArray wsSaveTextArray;
|
| - GetChoiceListItems(wsSaveTextArray, TRUE);
|
| - int32_t iSaves = wsSaveTextArray.GetSize();
|
| - for (int32_t j = 0; j < iSaves; j++) {
|
| - if (wsValueArray[nIndex] == wsSaveTextArray[j]) {
|
| - return j;
|
| - }
|
| - }
|
| - return -1;
|
| -}
|
| -void CXFA_WidgetData::GetSelectedItems(CFX_Int32Array& iSelArray) {
|
| - CFX_WideStringArray wsValueArray;
|
| - GetSelectedItemsValue(wsValueArray);
|
| - int32_t iValues = wsValueArray.GetSize();
|
| - if (iValues < 1) {
|
| - return;
|
| - }
|
| - CFX_WideStringArray wsSaveTextArray;
|
| - GetChoiceListItems(wsSaveTextArray, TRUE);
|
| - int32_t iSaves = wsSaveTextArray.GetSize();
|
| - for (int32_t i = 0; i < iValues; i++) {
|
| - for (int32_t j = 0; j < iSaves; j++) {
|
| - if (wsValueArray[i] == wsSaveTextArray[j]) {
|
| - iSelArray.Add(j);
|
| - break;
|
| - }
|
| - }
|
| - }
|
| -}
|
| -void CXFA_WidgetData::GetSelectedItemsValue(
|
| - CFX_WideStringArray& wsSelTextArray) {
|
| - CFX_WideString wsValue = GetRawValue();
|
| - if (GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) {
|
| - if (!wsValue.IsEmpty()) {
|
| - int32_t iStart = 0;
|
| - int32_t iLength = wsValue.GetLength();
|
| - int32_t iEnd = wsValue.Find(L'\n', iStart);
|
| - iEnd = (iEnd == -1) ? iLength : iEnd;
|
| - while (iEnd >= iStart) {
|
| - wsSelTextArray.Add(wsValue.Mid(iStart, iEnd - iStart));
|
| - iStart = iEnd + 1;
|
| - if (iStart >= iLength) {
|
| - break;
|
| - }
|
| - iEnd = wsValue.Find(L'\n', iStart);
|
| - if (iEnd < 0) {
|
| - wsSelTextArray.Add(wsValue.Mid(iStart, iLength - iStart));
|
| - }
|
| - }
|
| - }
|
| - } else {
|
| - wsSelTextArray.Add(wsValue);
|
| - }
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetItemState(int32_t nIndex) {
|
| - if (nIndex < 0) {
|
| - return FALSE;
|
| - }
|
| - CFX_WideStringArray wsSaveTextArray;
|
| - GetChoiceListItems(wsSaveTextArray, TRUE);
|
| - if (wsSaveTextArray.GetSize() <= nIndex) {
|
| - return FALSE;
|
| - }
|
| - CFX_WideStringArray wsValueArray;
|
| - GetSelectedItemsValue(wsValueArray);
|
| - int32_t iValues = wsValueArray.GetSize();
|
| - for (int32_t j = 0; j < iValues; j++) {
|
| - if (wsValueArray[j] == wsSaveTextArray[nIndex]) {
|
| - return TRUE;
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -void CXFA_WidgetData::SetItemState(int32_t nIndex,
|
| - FX_BOOL bSelected,
|
| - FX_BOOL bNotify,
|
| - FX_BOOL bScriptModify,
|
| - FX_BOOL bSyncData) {
|
| - if (nIndex < 0) {
|
| - return;
|
| - }
|
| - CFX_WideStringArray wsSaveTextArray;
|
| - GetChoiceListItems(wsSaveTextArray, TRUE);
|
| - if (wsSaveTextArray.GetSize() <= nIndex) {
|
| - return;
|
| - }
|
| - int32_t iSel = -1;
|
| - CFX_WideStringArray wsValueArray;
|
| - GetSelectedItemsValue(wsValueArray);
|
| - int32_t iValues = wsValueArray.GetSize();
|
| - for (int32_t j = 0; j < iValues; j++) {
|
| - if (wsValueArray[j] == wsSaveTextArray[nIndex]) {
|
| - iSel = j;
|
| - break;
|
| - }
|
| - }
|
| - if (GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) {
|
| - if (bSelected) {
|
| - if (iSel < 0) {
|
| - CFX_WideString wsValue = GetRawValue();
|
| - if (!wsValue.IsEmpty()) {
|
| - wsValue += L"\n";
|
| - }
|
| - wsValue += wsSaveTextArray[nIndex];
|
| - m_pNode->SetContent(wsValue, wsValue, bNotify, bScriptModify,
|
| - bSyncData);
|
| - }
|
| - } else if (iSel >= 0) {
|
| - CFX_Int32Array iSelArray;
|
| - GetSelectedItems(iSelArray);
|
| - for (int32_t i = 0; i < iSelArray.GetSize(); i++) {
|
| - if (iSelArray[i] == nIndex) {
|
| - iSelArray.RemoveAt(i);
|
| - break;
|
| - }
|
| - }
|
| - SetSelectdItems(iSelArray, bNotify, bScriptModify, bSyncData);
|
| - }
|
| - } else {
|
| - if (bSelected) {
|
| - if (iSel < 0) {
|
| - CFX_WideString wsSaveText = wsSaveTextArray[nIndex];
|
| - CFX_WideString wsFormatText(wsSaveText);
|
| - GetFormatDataValue(wsSaveText, wsFormatText);
|
| - m_pNode->SetContent(wsSaveText, wsFormatText, bNotify, bScriptModify,
|
| - bSyncData);
|
| - }
|
| - } else if (iSel >= 0) {
|
| - m_pNode->SetContent(CFX_WideString(), CFX_WideString(), bNotify,
|
| - bScriptModify, bSyncData);
|
| - }
|
| - }
|
| -}
|
| -void CXFA_WidgetData::SetSelectdItems(CFX_Int32Array& iSelArray,
|
| - FX_BOOL bNotify,
|
| - FX_BOOL bScriptModify,
|
| - FX_BOOL bSyncData) {
|
| - CFX_WideString wsValue;
|
| - int32_t iSize = iSelArray.GetSize();
|
| - if (iSize >= 1) {
|
| - CFX_WideStringArray wsSaveTextArray;
|
| - GetChoiceListItems(wsSaveTextArray, TRUE);
|
| - CFX_WideString wsItemValue;
|
| - for (int32_t i = 0; i < iSize; i++) {
|
| - wsItemValue = (iSize == 1)
|
| - ? wsSaveTextArray[iSelArray[i]]
|
| - : wsSaveTextArray[iSelArray[i]] + FX_WSTRC(L"\n");
|
| - wsValue += wsItemValue;
|
| - }
|
| - }
|
| - CFX_WideString wsFormat(wsValue);
|
| - if (GetChoiceListOpen() != XFA_ATTRIBUTEENUM_MultiSelect) {
|
| - GetFormatDataValue(wsValue, wsFormat);
|
| - }
|
| - m_pNode->SetContent(wsValue, wsFormat, bNotify, bScriptModify, bSyncData);
|
| -}
|
| -void CXFA_WidgetData::ClearAllSelections() {
|
| - CXFA_Node* pBind = m_pNode->GetBindData();
|
| - if (pBind && GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) {
|
| - while (CXFA_Node* pChildNode =
|
| - pBind->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| - pBind->RemoveChild(pChildNode);
|
| - }
|
| - } else {
|
| - SyncValue(CFX_WideString(), FALSE);
|
| - }
|
| -}
|
| -void CXFA_WidgetData::InsertItem(const CFX_WideString& wsLabel,
|
| - const CFX_WideString& wsValue,
|
| - int32_t nIndex,
|
| - FX_BOOL bNotify) {
|
| - CFX_WideString wsNewValue(wsValue);
|
| - if (wsNewValue.IsEmpty()) {
|
| - wsNewValue = wsLabel;
|
| - }
|
| - CXFA_NodeArray listitems;
|
| - int32_t iCount = 0;
|
| - CXFA_Node* pItemNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pItemNode;
|
| - pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pItemNode->GetClassID() != XFA_ELEMENT_Items) {
|
| - continue;
|
| - }
|
| - listitems.Add(pItemNode);
|
| - iCount++;
|
| - }
|
| - if (iCount < 1) {
|
| - CXFA_Node* pItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items);
|
| - m_pNode->InsertChild(-1, pItems);
|
| - InsertListTextItem(pItems, wsLabel, nIndex);
|
| - CXFA_Node* pSaveItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items);
|
| - m_pNode->InsertChild(-1, pSaveItems);
|
| - pSaveItems->SetBoolean(XFA_ATTRIBUTE_Save, TRUE);
|
| - InsertListTextItem(pSaveItems, wsNewValue, nIndex);
|
| - } else if (iCount > 1) {
|
| - for (int32_t i = 0; i < 2; i++) {
|
| - CXFA_Node* pNode = listitems[i];
|
| - FX_BOOL bHasSave = pNode->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - if (bHasSave) {
|
| - InsertListTextItem(pNode, wsNewValue, nIndex);
|
| - } else {
|
| - InsertListTextItem(pNode, wsLabel, nIndex);
|
| - }
|
| - }
|
| - } else {
|
| - CXFA_Node* pNode = listitems[0];
|
| - pNode->SetBoolean(XFA_ATTRIBUTE_Save, FALSE);
|
| - pNode->SetEnum(XFA_ATTRIBUTE_Presence, XFA_ATTRIBUTEENUM_Visible);
|
| - CXFA_Node* pSaveItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items);
|
| - m_pNode->InsertChild(-1, pSaveItems);
|
| - pSaveItems->SetBoolean(XFA_ATTRIBUTE_Save, TRUE);
|
| - pSaveItems->SetEnum(XFA_ATTRIBUTE_Presence, XFA_ATTRIBUTEENUM_Hidden);
|
| - listitems.RemoveAll();
|
| - CXFA_Node* pListNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - int32_t i = 0;
|
| - while (pListNode) {
|
| - CFX_WideString wsOldValue;
|
| - pListNode->TryContent(wsOldValue);
|
| - InsertListTextItem(pSaveItems, wsOldValue, i);
|
| - i++;
|
| - pListNode = pListNode->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - InsertListTextItem(pNode, wsLabel, nIndex);
|
| - InsertListTextItem(pSaveItems, wsNewValue, nIndex);
|
| - }
|
| - if (!bNotify) {
|
| - return;
|
| - }
|
| - m_pNode->GetDocument()->GetNotify()->OnWidgetDataEvent(
|
| - this, XFA_WIDGETEVENT_ListItemAdded, (void*)(const FX_WCHAR*)wsLabel,
|
| - (void*)(const FX_WCHAR*)wsValue, (void*)(uintptr_t)nIndex);
|
| -}
|
| -void CXFA_WidgetData::GetItemLabel(const CFX_WideStringC& wsValue,
|
| - CFX_WideString& wsLabel) {
|
| - int32_t iCount = 0;
|
| - CXFA_NodeArray listitems;
|
| - CXFA_Node* pItems = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pItems; pItems = pItems->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pItems->GetClassID() != XFA_ELEMENT_Items) {
|
| - continue;
|
| - }
|
| - iCount++;
|
| - listitems.Add(pItems);
|
| - }
|
| - if (iCount <= 1) {
|
| - wsLabel = wsValue;
|
| - } else {
|
| - CXFA_Node* pLabelItems = listitems[0];
|
| - FX_BOOL bSave = pLabelItems->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - CXFA_Node* pSaveItems = NULL;
|
| - if (bSave) {
|
| - pSaveItems = pLabelItems;
|
| - pLabelItems = listitems[1];
|
| - } else {
|
| - pSaveItems = listitems[1];
|
| - }
|
| - iCount = 0;
|
| - int32_t iSearch = -1;
|
| - CFX_WideString wsContent;
|
| - CXFA_Node* pChildItem = pSaveItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pChildItem;
|
| - pChildItem = pChildItem->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - pChildItem->TryContent(wsContent);
|
| - if (wsContent == wsValue) {
|
| - iSearch = iCount;
|
| - break;
|
| - }
|
| - iCount++;
|
| - }
|
| - if (iSearch < 0) {
|
| - return;
|
| - }
|
| - if (CXFA_Node* pText =
|
| - pLabelItems->GetChild(iSearch, XFA_ELEMENT_UNKNOWN)) {
|
| - pText->TryContent(wsLabel);
|
| - }
|
| - }
|
| -}
|
| -void CXFA_WidgetData::GetItemValue(const CFX_WideStringC& wsLabel,
|
| - CFX_WideString& wsValue) {
|
| - int32_t iCount = 0;
|
| - CXFA_NodeArray listitems;
|
| - CXFA_Node* pItems = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pItems; pItems = pItems->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pItems->GetClassID() != XFA_ELEMENT_Items) {
|
| - continue;
|
| - }
|
| - iCount++;
|
| - listitems.Add(pItems);
|
| - }
|
| - if (iCount <= 1) {
|
| - wsValue = wsLabel;
|
| - } else {
|
| - CXFA_Node* pLabelItems = listitems[0];
|
| - FX_BOOL bSave = pLabelItems->GetBoolean(XFA_ATTRIBUTE_Save);
|
| - CXFA_Node* pSaveItems = NULL;
|
| - if (bSave) {
|
| - pSaveItems = pLabelItems;
|
| - pLabelItems = listitems[1];
|
| - } else {
|
| - pSaveItems = listitems[1];
|
| - }
|
| - iCount = 0;
|
| - int32_t iSearch = -1;
|
| - CFX_WideString wsContent;
|
| - CXFA_Node* pChildItem = pLabelItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pChildItem;
|
| - pChildItem = pChildItem->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - pChildItem->TryContent(wsContent);
|
| - if (wsContent == wsLabel) {
|
| - iSearch = iCount;
|
| - break;
|
| - }
|
| - iCount++;
|
| - }
|
| - if (iSearch < 0) {
|
| - return;
|
| - }
|
| - if (CXFA_Node* pText = pSaveItems->GetChild(iSearch, XFA_ELEMENT_UNKNOWN)) {
|
| - pText->TryContent(wsValue);
|
| - }
|
| - }
|
| -}
|
| -FX_BOOL CXFA_WidgetData::DeleteItem(int32_t nIndex,
|
| - FX_BOOL bNotify,
|
| - FX_BOOL bScriptModify,
|
| - FX_BOOL bSyncData) {
|
| - FX_BOOL bSetValue = FALSE;
|
| - CXFA_Node* pItems = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pItems; pItems = pItems->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - if (pItems->GetClassID() != XFA_ELEMENT_Items) {
|
| - continue;
|
| - }
|
| - if (nIndex < 0) {
|
| - while (CXFA_Node* pNode = pItems->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| - pItems->RemoveChild(pNode);
|
| - }
|
| - } else {
|
| - if (!bSetValue && pItems->GetBoolean(XFA_ATTRIBUTE_Save)) {
|
| - SetItemState(nIndex, FALSE, TRUE, bScriptModify, bSyncData);
|
| - bSetValue = TRUE;
|
| - }
|
| - int32_t i = 0;
|
| - CXFA_Node* pNode = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - while (pNode) {
|
| - if (i == nIndex) {
|
| - pItems->RemoveChild(pNode);
|
| - break;
|
| - }
|
| - i++;
|
| - pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| - }
|
| - }
|
| - }
|
| - if (!bNotify) {
|
| - return TRUE;
|
| - }
|
| - m_pNode->GetDocument()->GetNotify()->OnWidgetDataEvent(
|
| - this, XFA_WIDGETEVENT_ListItemRemoved, (void*)(uintptr_t)nIndex);
|
| - return TRUE;
|
| -}
|
| -int32_t CXFA_WidgetData::GetHorizontalScrollPolicy() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetEnum(XFA_ATTRIBUTE_HScrollPolicy);
|
| - }
|
| - return XFA_ATTRIBUTEENUM_Auto;
|
| -}
|
| -int32_t CXFA_WidgetData::GetNumberOfCells() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (!pUIChild) {
|
| - return -1;
|
| - }
|
| - if (CXFA_Node* pNode = pUIChild->GetChild(0, XFA_ELEMENT_Comb)) {
|
| - return pNode->GetInteger(XFA_ATTRIBUTE_NumberOfCells);
|
| - }
|
| - return -1;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::IsDateTimeEditUsePicker() {
|
| - return TRUE;
|
| -}
|
| -CFX_WideString CXFA_WidgetData::GetBarcodeType() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - return pUIChild ? pUIChild->GetCData(XFA_ATTRIBUTE_Type) : NULL;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_CharEncoding(int32_t& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - CFX_WideString wsCharEncoding;
|
| - if (pUIChild->TryCData(XFA_ATTRIBUTE_CharEncoding, wsCharEncoding)) {
|
| - if (wsCharEncoding.CompareNoCase(L"UTF-16")) {
|
| - val = CHAR_ENCODING_UNICODE;
|
| - return TRUE;
|
| - } else if (wsCharEncoding.CompareNoCase(L"UTF-8")) {
|
| - val = CHAR_ENCODING_UTF8;
|
| - return TRUE;
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_Checksum(int32_t& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - XFA_ATTRIBUTEENUM eChecksum;
|
| - if (pUIChild->TryEnum(XFA_ATTRIBUTE_Checksum, eChecksum)) {
|
| - switch (eChecksum) {
|
| - case XFA_ATTRIBUTEENUM_None:
|
| - val = 0;
|
| - return TRUE;
|
| - case XFA_ATTRIBUTEENUM_Auto:
|
| - val = 1;
|
| - return TRUE;
|
| - case XFA_ATTRIBUTEENUM_1mod10:
|
| - break;
|
| - case XFA_ATTRIBUTEENUM_1mod10_1mod11:
|
| - break;
|
| - case XFA_ATTRIBUTEENUM_2mod10:
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_DataLength(int32_t& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - CFX_WideString wsDataLength;
|
| - if (pUIChild->TryCData(XFA_ATTRIBUTE_DataLength, wsDataLength)) {
|
| - val = FXSYS_wtoi(wsDataLength);
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_StartChar(FX_CHAR& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - CFX_WideStringC wsStartEndChar;
|
| - if (pUIChild->TryCData(XFA_ATTRIBUTE_StartChar, wsStartEndChar)) {
|
| - if (wsStartEndChar.GetLength()) {
|
| - val = (FX_CHAR)wsStartEndChar.GetAt(0);
|
| - return TRUE;
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_EndChar(FX_CHAR& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - CFX_WideStringC wsStartEndChar;
|
| - if (pUIChild->TryCData(XFA_ATTRIBUTE_EndChar, wsStartEndChar)) {
|
| - if (wsStartEndChar.GetLength()) {
|
| - val = (FX_CHAR)wsStartEndChar.GetAt(0);
|
| - return TRUE;
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_ECLevel(int32_t& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - CFX_WideString wsECLevel;
|
| - if (pUIChild->TryCData(XFA_ATTRIBUTE_ErrorCorrectionLevel, wsECLevel)) {
|
| - val = FXSYS_wtoi(wsECLevel);
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_ModuleWidth(int32_t& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - CXFA_Measurement mModuleWidthHeight;
|
| - if (pUIChild->TryMeasure(XFA_ATTRIBUTE_ModuleWidth, mModuleWidthHeight)) {
|
| - val = (int32_t)mModuleWidthHeight.ToUnit(XFA_UNIT_Pt);
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_ModuleHeight(int32_t& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - CXFA_Measurement mModuleWidthHeight;
|
| - if (pUIChild->TryMeasure(XFA_ATTRIBUTE_ModuleHeight, mModuleWidthHeight)) {
|
| - val = (int32_t)mModuleWidthHeight.ToUnit(XFA_UNIT_Pt);
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_PrintChecksum(FX_BOOL& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - FX_BOOL bPrintCheckDigit;
|
| - if (pUIChild->TryBoolean(XFA_ATTRIBUTE_PrintCheckDigit, bPrintCheckDigit)) {
|
| - val = bPrintCheckDigit;
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_TextLocation(int32_t& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - XFA_ATTRIBUTEENUM eTextLocation;
|
| - if (pUIChild->TryEnum(XFA_ATTRIBUTE_TextLocation, eTextLocation)) {
|
| - switch (eTextLocation) {
|
| - case XFA_ATTRIBUTEENUM_None:
|
| - val = BC_TEXT_LOC_NONE;
|
| - return TRUE;
|
| - case XFA_ATTRIBUTEENUM_Above:
|
| - val = BC_TEXT_LOC_ABOVE;
|
| - return TRUE;
|
| - case XFA_ATTRIBUTEENUM_Below:
|
| - val = BC_TEXT_LOC_BELOW;
|
| - return TRUE;
|
| - case XFA_ATTRIBUTEENUM_AboveEmbedded:
|
| - val = BC_TEXT_LOC_ABOVEEMBED;
|
| - return TRUE;
|
| - case XFA_ATTRIBUTEENUM_BelowEmbedded:
|
| - val = BC_TEXT_LOC_BELOWEMBED;
|
| - return TRUE;
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_Truncate(FX_BOOL& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - FX_BOOL bTruncate;
|
| - if (pUIChild->TryBoolean(XFA_ATTRIBUTE_Truncate, bTruncate)) {
|
| - val = bTruncate;
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_WideNarrowRatio(FX_FLOAT& val) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - CFX_WideString wsWideNarrowRatio;
|
| - if (pUIChild->TryCData(XFA_ATTRIBUTE_WideNarrowRatio, wsWideNarrowRatio)) {
|
| - FX_STRSIZE ptPos = wsWideNarrowRatio.Find(':');
|
| - FX_FLOAT fRatio = 0;
|
| - if (ptPos >= 0) {
|
| - fRatio = (FX_FLOAT)FXSYS_wtoi(wsWideNarrowRatio);
|
| - } else {
|
| - int32_t fA, fB;
|
| - fA = FXSYS_wtoi(wsWideNarrowRatio.Left(ptPos));
|
| - fB = FXSYS_wtoi(wsWideNarrowRatio.Mid(ptPos + 1));
|
| - if (fB) {
|
| - fRatio = (FX_FLOAT)fA / fB;
|
| - }
|
| - }
|
| - val = fRatio;
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -void CXFA_WidgetData::GetPasswordChar(CFX_WideString& wsPassWord) {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - pUIChild->TryCData(XFA_ATTRIBUTE_PasswordChar, wsPassWord);
|
| - } else {
|
| - wsPassWord = XFA_GetAttributeDefaultValue_Cdata(XFA_ELEMENT_PasswordEdit,
|
| - XFA_ATTRIBUTE_PasswordChar,
|
| - XFA_XDPPACKET_Form);
|
| - }
|
| -}
|
| -FX_BOOL CXFA_WidgetData::IsAllowRichText() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - FX_BOOL bValue = FALSE;
|
| - if (pUIChild &&
|
| - pUIChild->TryBoolean(XFA_ATTRIBUTE_AllowRichText, bValue, FALSE)) {
|
| - return bValue;
|
| - }
|
| - if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Value)) {
|
| - if (CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| - return pChild->GetClassID() == XFA_ELEMENT_ExData;
|
| - }
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::IsMultiLine() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetBoolean(XFA_ATTRIBUTE_MultiLine);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Boolean(
|
| - XFA_ELEMENT_TextEdit, XFA_ATTRIBUTE_MultiLine, XFA_XDPPACKET_Form);
|
| -}
|
| -int32_t CXFA_WidgetData::GetVerticalScrollPolicy() {
|
| - CXFA_Node* pUIChild = GetUIChild();
|
| - if (pUIChild) {
|
| - return pUIChild->GetEnum(XFA_ATTRIBUTE_VScrollPolicy);
|
| - }
|
| - return XFA_GetAttributeDefaultValue_Enum(
|
| - XFA_ELEMENT_TextEdit, XFA_ATTRIBUTE_VScrollPolicy, XFA_XDPPACKET_Form);
|
| -}
|
| -int32_t CXFA_WidgetData::GetMaxChars(XFA_ELEMENT& eType) {
|
| - if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Value)) {
|
| - if (CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| - switch (pChild->GetClassID()) {
|
| - case XFA_ELEMENT_Text:
|
| - eType = XFA_ELEMENT_Text;
|
| - return pChild->GetInteger(XFA_ATTRIBUTE_MaxChars);
|
| - case XFA_ELEMENT_ExData: {
|
| - eType = XFA_ELEMENT_ExData;
|
| - int32_t iMax = pChild->GetInteger(XFA_ATTRIBUTE_MaxLength);
|
| - return iMax < 0 ? 0 : iMax;
|
| - }
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| - }
|
| - return 0;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetFracDigits(int32_t& iFracDigits) {
|
| - if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Value)) {
|
| - if (CXFA_Node* pChild = pNode->GetChild(0, XFA_ELEMENT_Decimal)) {
|
| - return pChild->TryInteger(XFA_ATTRIBUTE_FracDigits, iFracDigits);
|
| - }
|
| - }
|
| - iFracDigits = -1;
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetLeadDigits(int32_t& iLeadDigits) {
|
| - if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Value)) {
|
| - if (CXFA_Node* pChild = pNode->GetChild(0, XFA_ELEMENT_Decimal)) {
|
| - return pChild->TryInteger(XFA_ATTRIBUTE_LeadDigits, iLeadDigits);
|
| - }
|
| - }
|
| - iLeadDigits = -1;
|
| - return FALSE;
|
| -}
|
| -CFX_WideString XFA_NumericLimit(const CFX_WideString& wsValue,
|
| - int32_t iLead,
|
| - int32_t iTread) {
|
| - if ((iLead == -1) && (iTread == -1)) {
|
| - return wsValue;
|
| - }
|
| - CFX_WideString wsRet;
|
| - int32_t iLead_ = 0, iTread_ = -1;
|
| - int32_t iCount = wsValue.GetLength();
|
| - if (iCount == 0) {
|
| - return wsValue;
|
| - }
|
| - int32_t i = 0;
|
| - if (wsValue[i] == L'-') {
|
| - wsRet += L'-';
|
| - i++;
|
| - }
|
| - for (; i < iCount; i++) {
|
| - FX_WCHAR wc = wsValue[i];
|
| - if (XFA_IsDigit(wc)) {
|
| - if (iLead >= 0) {
|
| - iLead_++;
|
| - if (iLead_ > iLead) {
|
| - return L"0";
|
| - }
|
| - } else if (iTread_ >= 0) {
|
| - iTread_++;
|
| - if (iTread_ > iTread) {
|
| - if (iTread != -1) {
|
| - CFX_Decimal wsDeci = CFX_Decimal(wsValue);
|
| - wsDeci.SetScale(iTread);
|
| - wsRet = wsDeci;
|
| - }
|
| - return wsRet;
|
| - }
|
| - }
|
| - } else if (wc == L'.') {
|
| - iTread_ = 0;
|
| - iLead = -1;
|
| - }
|
| - wsRet += wc;
|
| - }
|
| - return wsRet;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::SetValue(const CFX_WideString& wsValue,
|
| - XFA_VALUEPICTURE eValueType) {
|
| - if (wsValue.IsEmpty()) {
|
| - SyncValue(wsValue, TRUE);
|
| - return TRUE;
|
| - }
|
| - this->m_bPreNull = this->m_bIsNull;
|
| - this->m_bIsNull = FALSE;
|
| - CFX_WideString wsNewText(wsValue);
|
| - CFX_WideString wsPicture;
|
| - GetPictureContent(wsPicture, eValueType);
|
| - FX_BOOL bValidate = TRUE;
|
| - FX_BOOL bSyncData = FALSE;
|
| - CXFA_Node* pNode = GetUIChild();
|
| - if (!pNode) {
|
| - return TRUE;
|
| - }
|
| - XFA_ELEMENT uiType = pNode->GetClassID();
|
| - if (!wsPicture.IsEmpty()) {
|
| - CXFA_LocaleMgr* pLocalMgr = m_pNode->GetDocument()->GetLocalMgr();
|
| - IFX_Locale* pLocale = GetLocal();
|
| - CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this);
|
| - bValidate =
|
| - widgetValue.ValidateValue(wsValue, wsPicture, pLocale, &wsPicture);
|
| - if (bValidate) {
|
| - widgetValue = CXFA_LocaleValue(widgetValue.GetType(), wsNewText,
|
| - wsPicture, pLocale, pLocalMgr);
|
| - wsNewText = widgetValue.GetValue();
|
| - if (uiType == XFA_ELEMENT_NumericEdit) {
|
| - int32_t iLeadDigits = 0;
|
| - int32_t iFracDigits = 0;
|
| - GetLeadDigits(iLeadDigits);
|
| - GetFracDigits(iFracDigits);
|
| - wsNewText = XFA_NumericLimit(wsNewText, iLeadDigits, iFracDigits);
|
| - }
|
| - bSyncData = TRUE;
|
| - }
|
| - } else {
|
| - if (uiType == XFA_ELEMENT_NumericEdit) {
|
| - if (wsNewText != FX_WSTRC(L"0")) {
|
| - int32_t iLeadDigits = 0;
|
| - int32_t iFracDigits = 0;
|
| - GetLeadDigits(iLeadDigits);
|
| - GetFracDigits(iFracDigits);
|
| - wsNewText = XFA_NumericLimit(wsNewText, iLeadDigits, iFracDigits);
|
| - }
|
| - bSyncData = TRUE;
|
| - }
|
| - }
|
| - if (uiType != XFA_ELEMENT_NumericEdit || bSyncData) {
|
| - SyncValue(wsNewText, TRUE);
|
| - }
|
| - return bValidate;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetPictureContent(CFX_WideString& wsPicture,
|
| - XFA_VALUEPICTURE ePicture) {
|
| - if (ePicture == XFA_VALUEPICTURE_Raw) {
|
| - return FALSE;
|
| - }
|
| - CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this);
|
| - switch (ePicture) {
|
| - case XFA_VALUEPICTURE_Display: {
|
| - if (CXFA_Node* pFormat = m_pNode->GetChild(0, XFA_ELEMENT_Format)) {
|
| - if (CXFA_Node* pPicture = pFormat->GetChild(0, XFA_ELEMENT_Picture)) {
|
| - if (pPicture->TryContent(wsPicture)) {
|
| - return TRUE;
|
| - }
|
| - }
|
| - }
|
| - CFX_WideString wsDataPicture, wsTimePicture;
|
| - IFX_Locale* pLocale = GetLocal();
|
| - if (!pLocale) {
|
| - return FALSE;
|
| - }
|
| - FX_DWORD dwType = widgetValue.GetType();
|
| - switch (dwType) {
|
| - case XFA_VT_DATE:
|
| - pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Medium,
|
| - wsPicture);
|
| - break;
|
| - case XFA_VT_TIME:
|
| - pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Medium,
|
| - wsPicture);
|
| - break;
|
| - case XFA_VT_DATETIME:
|
| - pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Medium,
|
| - wsDataPicture);
|
| - pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Medium,
|
| - wsTimePicture);
|
| - wsPicture = wsDataPicture + FX_WSTRC(L"T") + wsTimePicture;
|
| - break;
|
| - case XFA_VT_DECIMAL:
|
| - case XFA_VT_FLOAT:
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| - return TRUE;
|
| - case XFA_VALUEPICTURE_Edit: {
|
| - CXFA_Node* pUI = m_pNode->GetChild(0, XFA_ELEMENT_Ui);
|
| - if (pUI) {
|
| - if (CXFA_Node* pPicture = pUI->GetChild(0, XFA_ELEMENT_Picture)) {
|
| - if (pPicture->TryContent(wsPicture)) {
|
| - return TRUE;
|
| - }
|
| - }
|
| - }
|
| - {
|
| - CFX_WideString wsDataPicture, wsTimePicture;
|
| - IFX_Locale* pLocale = GetLocal();
|
| - if (!pLocale) {
|
| - return FALSE;
|
| - }
|
| - FX_DWORD dwType = widgetValue.GetType();
|
| - switch (dwType) {
|
| - case XFA_VT_DATE:
|
| - pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Short,
|
| - wsPicture);
|
| - break;
|
| - case XFA_VT_TIME:
|
| - pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Short,
|
| - wsPicture);
|
| - break;
|
| - case XFA_VT_DATETIME:
|
| - pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Short,
|
| - wsDataPicture);
|
| - pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Short,
|
| - wsTimePicture);
|
| - wsPicture = wsDataPicture + L"T" + wsTimePicture;
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - }
|
| - }
|
| - return TRUE;
|
| - case XFA_VALUEPICTURE_DataBind: {
|
| - if (CXFA_Bind bind = GetBind()) {
|
| - bind.GetPicture(wsPicture);
|
| - return TRUE;
|
| - }
|
| - } break;
|
| - default:
|
| - break;
|
| - }
|
| - return FALSE;
|
| -}
|
| -IFX_Locale* CXFA_WidgetData::GetLocal() {
|
| - IFX_Locale* pLocale = NULL;
|
| - if (!m_pNode) {
|
| - return pLocale;
|
| - }
|
| - FX_BOOL bLocale = FALSE;
|
| - CFX_WideString wsLocaleName;
|
| - bLocale = m_pNode->GetLocaleName(wsLocaleName);
|
| - if (bLocale) {
|
| - if (wsLocaleName.Equal(FX_WSTRC(L"ambient"))) {
|
| - pLocale = m_pNode->GetDocument()->GetLocalMgr()->GetDefLocale();
|
| - } else {
|
| - pLocale =
|
| - m_pNode->GetDocument()->GetLocalMgr()->GetLocaleByName(wsLocaleName);
|
| - }
|
| - }
|
| - return pLocale;
|
| -}
|
| -static FX_BOOL XFA_SplitDateTime(const CFX_WideString& wsDateTime,
|
| - CFX_WideString& wsDate,
|
| - CFX_WideString& wsTime) {
|
| - wsDate = L"";
|
| - wsTime = L"";
|
| - if (wsDateTime.IsEmpty()) {
|
| - return FALSE;
|
| - }
|
| - int nSplitIndex = -1;
|
| - nSplitIndex = wsDateTime.Find('T');
|
| - if (nSplitIndex < 0) {
|
| - nSplitIndex = wsDateTime.Find(' ');
|
| - }
|
| - if (nSplitIndex < 0) {
|
| - return FALSE;
|
| - }
|
| - wsDate = wsDateTime.Left(nSplitIndex);
|
| - if (!wsDate.IsEmpty()) {
|
| - int32_t iCount = wsDate.GetLength();
|
| - int32_t i = 0;
|
| - for (i = 0; i < iCount; i++) {
|
| - if (wsDate[i] >= '0' && wsDate[i] <= '9') {
|
| - break;
|
| - }
|
| - }
|
| - if (i == iCount) {
|
| - return FALSE;
|
| - }
|
| - }
|
| - wsTime = wsDateTime.Right(wsDateTime.GetLength() - nSplitIndex - 1);
|
| - if (!wsTime.IsEmpty()) {
|
| - int32_t iCount = wsTime.GetLength();
|
| - int32_t i = 0;
|
| - for (i = 0; i < iCount; i++) {
|
| - if (wsTime[i] >= '0' && wsTime[i] <= '9') {
|
| - break;
|
| - }
|
| - }
|
| - if (i == iCount) {
|
| - return FALSE;
|
| - }
|
| - }
|
| - return TRUE;
|
| -}
|
| -#ifndef XFA_PARSE_HAS_LINEIDENTIFIER
|
| -FX_BOOL CXFA_FieldNode_IsRichTextEdit(CXFA_Node* pFieldNode,
|
| - IFDE_XMLNode*& pXMLNode) {
|
| - FX_BOOL bRichTextEdit = FALSE;
|
| - pXMLNode = NULL;
|
| - if (pFieldNode->GetClassID() == XFA_ELEMENT_Field) {
|
| - CXFA_Node* pValue = pFieldNode->GetChild(0, XFA_ELEMENT_Value);
|
| - if (!pValue) {
|
| - return bRichTextEdit;
|
| - }
|
| - CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - if (!pChildValue) {
|
| - return bRichTextEdit;
|
| - }
|
| - if (pChildValue->GetClassID() == XFA_ELEMENT_ExData) {
|
| - CFX_WideString wsContentType;
|
| - pChildValue->GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType,
|
| - FALSE);
|
| - bRichTextEdit = wsContentType.Equal(FX_WSTRC(L"text/html"));
|
| - if (bRichTextEdit) {
|
| - FX_BOOL bXMLInData = FALSE;
|
| - CXFA_Node* pDataNode = pFieldNode->GetBindData();
|
| - if (pDataNode) {
|
| - IFDE_XMLNode* pBindXML = pDataNode->GetXMLMappingNode();
|
| - FXSYS_assert(pBindXML);
|
| - IFDE_XMLNode* pValueXML =
|
| - pBindXML->GetNodeItem(IFDE_XMLNode::FirstChild);
|
| - if (pValueXML && pValueXML->GetType() == FDE_XMLNODE_Element) {
|
| - pXMLNode = pValueXML;
|
| - bXMLInData = TRUE;
|
| - }
|
| - }
|
| - if (!bXMLInData) {
|
| - pXMLNode = pChildValue->GetXMLMappingNode();
|
| - }
|
| - }
|
| - }
|
| - }
|
| - return bRichTextEdit;
|
| -}
|
| -#endif
|
| -FX_BOOL CXFA_WidgetData::GetValue(CFX_WideString& wsValue,
|
| - XFA_VALUEPICTURE eValueType) {
|
| -#ifdef XFA_PARSE_HAS_LINEIDENTIFIER
|
| - wsValue = m_pNode->GetContent();
|
| -#else
|
| - IFDE_XMLNode* pXMLNode = NULL;
|
| - FX_BOOL bRichTextEdit = CXFA_FieldNode_IsRichTextEdit(m_pNode, pXMLNode);
|
| - if (bRichTextEdit) {
|
| - XFA_GetPlainTextFromRichText(pXMLNode, wsValue);
|
| - } else {
|
| - wsValue = m_pNode->GetContent();
|
| - }
|
| -#endif
|
| - if (eValueType == XFA_VALUEPICTURE_Display) {
|
| - GetItemLabel(wsValue, wsValue);
|
| - }
|
| - CFX_WideString wsPicture;
|
| - GetPictureContent(wsPicture, eValueType);
|
| - CXFA_Node* pNode = GetUIChild();
|
| - if (!pNode) {
|
| - return TRUE;
|
| - }
|
| - XFA_ELEMENT uiType = GetUIChild()->GetClassID();
|
| - switch (uiType) {
|
| - case XFA_ELEMENT_ChoiceList: {
|
| - if (eValueType == XFA_VALUEPICTURE_Display) {
|
| - int32_t iSelItemIndex = GetSelectedItem(0);
|
| - if (iSelItemIndex >= 0) {
|
| - GetChoiceListItem(wsValue, iSelItemIndex);
|
| - wsPicture.Empty();
|
| - }
|
| - }
|
| - } break;
|
| - case XFA_ELEMENT_NumericEdit:
|
| - if (eValueType != XFA_VALUEPICTURE_Raw && wsPicture.IsEmpty()) {
|
| - IFX_Locale* pLocale = GetLocal();
|
| - if (eValueType == XFA_VALUEPICTURE_Display && pLocale) {
|
| - CFX_WideString wsOutput;
|
| - NormalizeNumStr(wsValue, wsOutput);
|
| - FormatNumStr(wsOutput, pLocale, wsOutput);
|
| - wsValue = wsOutput;
|
| - }
|
| - }
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - if (wsPicture.IsEmpty()) {
|
| - return TRUE;
|
| - }
|
| - if (IFX_Locale* pLocale = GetLocal()) {
|
| - CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this);
|
| - CXFA_LocaleMgr* pLocalMgr = m_pNode->GetDocument()->GetLocalMgr();
|
| - switch (widgetValue.GetType()) {
|
| - case XFA_VT_DATE: {
|
| - CFX_WideString wsDate, wsTime;
|
| - if (XFA_SplitDateTime(wsValue, wsDate, wsTime)) {
|
| - CXFA_LocaleValue date(XFA_VT_DATE, wsDate, pLocalMgr);
|
| - if (date.FormatPatterns(wsValue, wsPicture, pLocale, eValueType)) {
|
| - return TRUE;
|
| - }
|
| - }
|
| - break;
|
| - }
|
| - case XFA_VT_TIME: {
|
| - CFX_WideString wsDate, wsTime;
|
| - if (XFA_SplitDateTime(wsValue, wsDate, wsTime)) {
|
| - CXFA_LocaleValue time(XFA_VT_TIME, wsTime, pLocalMgr);
|
| - if (time.FormatPatterns(wsValue, wsPicture, pLocale, eValueType)) {
|
| - return TRUE;
|
| - }
|
| - }
|
| - break;
|
| - }
|
| - default:
|
| - break;
|
| - }
|
| - widgetValue.FormatPatterns(wsValue, wsPicture, pLocale, eValueType);
|
| - }
|
| - return TRUE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetNormalizeDataValue(
|
| - const CFX_WideStringC& wsValue,
|
| - CFX_WideString& wsNormalizeValue) {
|
| - wsNormalizeValue = wsValue;
|
| - if (wsValue.IsEmpty()) {
|
| - return TRUE;
|
| - }
|
| - CFX_WideString wsPicture;
|
| - GetPictureContent(wsPicture, XFA_VALUEPICTURE_DataBind);
|
| - if (wsPicture.IsEmpty()) {
|
| - return TRUE;
|
| - }
|
| - FXSYS_assert(GetNode());
|
| - CXFA_LocaleMgr* pLocalMgr = GetNode()->GetDocument()->GetLocalMgr();
|
| - IFX_Locale* pLocale = GetLocal();
|
| - CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this);
|
| - if (widgetValue.ValidateValue(wsValue, wsPicture, pLocale, &wsPicture)) {
|
| - widgetValue = CXFA_LocaleValue(widgetValue.GetType(), wsNormalizeValue,
|
| - wsPicture, pLocale, pLocalMgr);
|
| - wsNormalizeValue = widgetValue.GetValue();
|
| - return TRUE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL CXFA_WidgetData::GetFormatDataValue(const CFX_WideStringC& wsValue,
|
| - CFX_WideString& wsFormatedValue) {
|
| - wsFormatedValue = wsValue;
|
| - if (wsValue.IsEmpty()) {
|
| - return TRUE;
|
| - }
|
| - CFX_WideString wsPicture;
|
| - GetPictureContent(wsPicture, XFA_VALUEPICTURE_DataBind);
|
| - if (wsPicture.IsEmpty()) {
|
| - return TRUE;
|
| - }
|
| - if (IFX_Locale* pLocale = GetLocal()) {
|
| - FXSYS_assert(GetNode());
|
| - CXFA_Node* pNodeValue = GetNode()->GetChild(0, XFA_ELEMENT_Value);
|
| - if (!pNodeValue) {
|
| - return FALSE;
|
| - }
|
| - CXFA_Node* pValueChild = pNodeValue->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - if (!pValueChild) {
|
| - return FALSE;
|
| - }
|
| - int32_t iVTType = XFA_VT_NULL;
|
| - XFA_ELEMENT eType = pValueChild->GetClassID();
|
| - switch (eType) {
|
| - case XFA_ELEMENT_Decimal:
|
| - iVTType = XFA_VT_DECIMAL;
|
| - break;
|
| - case XFA_ELEMENT_Float:
|
| - iVTType = XFA_VT_FLOAT;
|
| - break;
|
| - case XFA_ELEMENT_Date:
|
| - iVTType = XFA_VT_DATE;
|
| - break;
|
| - case XFA_ELEMENT_Time:
|
| - iVTType = XFA_VT_TIME;
|
| - break;
|
| - case XFA_ELEMENT_DateTime:
|
| - iVTType = XFA_VT_DATETIME;
|
| - break;
|
| - case XFA_ELEMENT_Boolean:
|
| - iVTType = XFA_VT_BOOLEAN;
|
| - break;
|
| - case XFA_ELEMENT_Integer:
|
| - iVTType = XFA_VT_INTEGER;
|
| - break;
|
| - case XFA_ELEMENT_Text:
|
| - iVTType = XFA_VT_TEXT;
|
| - break;
|
| - default:
|
| - iVTType = XFA_VT_NULL;
|
| - break;
|
| - }
|
| - CXFA_LocaleMgr* pLocalMgr = GetNode()->GetDocument()->GetLocalMgr();
|
| - CXFA_LocaleValue widgetValue(iVTType, wsValue, pLocalMgr);
|
| - switch (widgetValue.GetType()) {
|
| - case XFA_VT_DATE: {
|
| - CFX_WideString wsDate, wsTime;
|
| - if (XFA_SplitDateTime(wsValue, wsDate, wsTime)) {
|
| - CXFA_LocaleValue date(XFA_VT_DATE, wsDate, pLocalMgr);
|
| - if (date.FormatPatterns(wsFormatedValue, wsPicture, pLocale,
|
| - XFA_VALUEPICTURE_DataBind)) {
|
| - return TRUE;
|
| - }
|
| - }
|
| - break;
|
| - }
|
| - case XFA_VT_TIME: {
|
| - CFX_WideString wsDate, wsTime;
|
| - if (XFA_SplitDateTime(wsValue, wsDate, wsTime)) {
|
| - CXFA_LocaleValue time(XFA_VT_TIME, wsTime, pLocalMgr);
|
| - if (time.FormatPatterns(wsFormatedValue, wsPicture, pLocale,
|
| - XFA_VALUEPICTURE_DataBind)) {
|
| - return TRUE;
|
| - }
|
| - }
|
| - break;
|
| - }
|
| - default:
|
| - break;
|
| - }
|
| - widgetValue.FormatPatterns(wsFormatedValue, wsPicture, pLocale,
|
| - XFA_VALUEPICTURE_DataBind);
|
| - }
|
| - return FALSE;
|
| -}
|
| -void CXFA_WidgetData::NormalizeNumStr(const CFX_WideString& wsValue,
|
| - CFX_WideString& wsOutput) {
|
| - if (wsValue.IsEmpty()) {
|
| - return;
|
| - }
|
| - wsOutput = wsValue;
|
| - wsOutput.TrimLeft('0');
|
| - int32_t dot_index = wsOutput.Find('.');
|
| - int32_t iFracDigits = 0;
|
| - if (!wsOutput.IsEmpty() && dot_index >= 0 &&
|
| - (!GetFracDigits(iFracDigits) || iFracDigits != -1)) {
|
| - wsOutput.TrimRight(L"0");
|
| - wsOutput.TrimRight(L".");
|
| - }
|
| - if (wsOutput.IsEmpty() || wsOutput[0] == '.') {
|
| - wsOutput.Insert(0, '0');
|
| - }
|
| -}
|
| -void CXFA_WidgetData::FormatNumStr(const CFX_WideString& wsValue,
|
| - IFX_Locale* pLocale,
|
| - CFX_WideString& wsOutput) {
|
| - if (wsValue.IsEmpty()) {
|
| - return;
|
| - }
|
| - CFX_WideString wsSrcNum = wsValue;
|
| - CFX_WideString wsGroupSymbol;
|
| - pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Grouping, wsGroupSymbol);
|
| - FX_BOOL bNeg = FALSE;
|
| - if (wsSrcNum[0] == '-') {
|
| - bNeg = TRUE;
|
| - wsSrcNum.Delete(0, 1);
|
| - }
|
| - int32_t len = wsSrcNum.GetLength();
|
| - int32_t dot_index = wsSrcNum.Find('.');
|
| - if (dot_index == -1) {
|
| - dot_index = len;
|
| - }
|
| - int32_t cc = dot_index - 1;
|
| - if (cc >= 0) {
|
| - int nPos = dot_index % 3;
|
| - wsOutput.Empty();
|
| - for (int32_t i = 0; i < dot_index; i++) {
|
| - if (i % 3 == nPos && i != 0) {
|
| - wsOutput += wsGroupSymbol;
|
| - }
|
| - wsOutput += wsSrcNum[i];
|
| - }
|
| - if (dot_index < len) {
|
| - CFX_WideString wsSymbol;
|
| - pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Decimal, wsSymbol);
|
| - wsOutput += wsSymbol;
|
| - wsOutput += wsSrcNum.Right(len - dot_index - 1);
|
| - }
|
| - if (bNeg) {
|
| - CFX_WideString wsMinusymbol;
|
| - pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Minus, wsMinusymbol);
|
| - wsOutput = wsMinusymbol + wsOutput;
|
| - }
|
| - }
|
| -}
|
| -void CXFA_WidgetData::SyncValue(const CFX_WideString& wsValue,
|
| - FX_BOOL bNotify) {
|
| - if (!m_pNode) {
|
| - return;
|
| - }
|
| - CFX_WideString wsFormatValue(wsValue);
|
| - CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData();
|
| - if (pContainerWidgetData) {
|
| - pContainerWidgetData->GetFormatDataValue(wsValue, wsFormatValue);
|
| - }
|
| - m_pNode->SetContent(wsValue, wsFormatValue, bNotify);
|
| -}
|
| -void CXFA_WidgetData::InsertListTextItem(CXFA_Node* pItems,
|
| - const CFX_WideStringC& wsText,
|
| - int32_t nIndex) {
|
| - CXFA_Node* pText = pItems->CreateSamePacketNode(XFA_ELEMENT_Text);
|
| - pItems->InsertChild(nIndex, pText);
|
| - pText->SetContent(wsText, wsText, FALSE, FALSE, FALSE);
|
| -}
|
| -CXFA_Filter CXFA_WidgetData::GetFilter(FX_BOOL bModified) {
|
| - if (!m_pUiChildNode) {
|
| - return CXFA_Filter(NULL);
|
| - }
|
| - return m_pUiChildNode->GetProperty(0, XFA_ELEMENT_Filter, bModified);
|
| -}
|
| -CXFA_Manifest CXFA_WidgetData::GetManifest(FX_BOOL bModified) {
|
| - if (!m_pUiChildNode) {
|
| - return CXFA_Manifest(NULL);
|
| - }
|
| - return m_pUiChildNode->GetProperty(0, XFA_ELEMENT_Manifest, bModified);
|
| -}
|
| -CXFA_Occur::CXFA_Occur(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| -int32_t CXFA_Occur::GetMax() {
|
| - int32_t iMax = 1;
|
| - if (m_pNode) {
|
| - if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, TRUE)) {
|
| - iMax = GetMin();
|
| - }
|
| - }
|
| - return iMax;
|
| -}
|
| -int32_t CXFA_Occur::GetMin() {
|
| - int32_t iMin = 1;
|
| - if (m_pNode) {
|
| - if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, TRUE) || iMin < 0) {
|
| - iMin = 1;
|
| - }
|
| - }
|
| - return iMin;
|
| -}
|
| -int32_t CXFA_Occur::GetInitial() {
|
| - int32_t iInit = 1;
|
| - if (m_pNode) {
|
| - int32_t iMin = GetMin();
|
| - if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Initial, iInit, TRUE) ||
|
| - iInit < iMin) {
|
| - iInit = iMin;
|
| - }
|
| - }
|
| - return iInit;
|
| -}
|
| -FX_BOOL CXFA_Occur::GetOccurInfo(int32_t& iMin, int32_t& iMax, int32_t& iInit) {
|
| - if (!m_pNode) {
|
| - return FALSE;
|
| - }
|
| - if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE) || iMin < 0) {
|
| - iMin = 1;
|
| - }
|
| - if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE)) {
|
| - if (iMin == 0) {
|
| - iMax = 1;
|
| - } else {
|
| - iMax = iMin;
|
| - }
|
| - }
|
| - if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Initial, iInit, FALSE) ||
|
| - iInit < iMin) {
|
| - iInit = iMin;
|
| - }
|
| - return TRUE;
|
| -}
|
| -void CXFA_Occur::SetMax(int32_t iMax) {
|
| - iMax = (iMax != -1 && iMax < 1) ? 1 : iMax;
|
| - m_pNode->SetInteger(XFA_ATTRIBUTE_Max, iMax, FALSE);
|
| - int32_t iMin = GetMin();
|
| - if (iMax != -1 && iMax < iMin) {
|
| - iMin = iMax;
|
| - m_pNode->SetInteger(XFA_ATTRIBUTE_Min, iMin, FALSE);
|
| - }
|
| -}
|
| -void CXFA_Occur::SetMin(int32_t iMin) {
|
| - iMin = (iMin < 0) ? 1 : iMin;
|
| - m_pNode->SetInteger(XFA_ATTRIBUTE_Min, iMin, FALSE);
|
| - int32_t iMax = GetMax();
|
| - if (iMax > 0 && iMax < iMin) {
|
| - iMax = iMin;
|
| - m_pNode->SetInteger(XFA_ATTRIBUTE_Max, iMax, FALSE);
|
| - }
|
| -}
|
| -XFA_ATTRIBUTEENUM XFA_GetEnumTypeAttribute(
|
| - CXFA_Node* pNode,
|
| - XFA_ATTRIBUTE attributeValue = XFA_ATTRIBUTE_Type,
|
| - XFA_ATTRIBUTEENUM eDefaultValue = XFA_ATTRIBUTEENUM_Optional) {
|
| - XFA_ATTRIBUTEENUM eType = eDefaultValue;
|
| - if (pNode) {
|
| - if (!pNode->TryEnum(attributeValue, eType, TRUE)) {
|
| - eType = eDefaultValue;
|
| - }
|
| - }
|
| - return eType;
|
| -}
|
| -CFX_WideString CXFA_Filter::GetFilterString(XFA_ATTRIBUTE eAttribute) {
|
| - CFX_WideString wsStringValue;
|
| - if (m_pNode) {
|
| - m_pNode->GetAttribute(eAttribute, wsStringValue, FALSE);
|
| - }
|
| - return wsStringValue;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Filter::GetAppearanceFilterType() {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Optional;
|
| - }
|
| - CXFA_Node* pAppearanceFilterNode =
|
| - m_pNode->GetProperty(0, XFA_ELEMENT_AppearanceFilter);
|
| - return XFA_GetEnumTypeAttribute(pAppearanceFilterNode);
|
| -}
|
| -CFX_WideString CXFA_Filter::GetAppearanceFilterContent() {
|
| - CFX_WideString wsContent;
|
| - if (m_pNode) {
|
| - CXFA_Node* pAppearanceFilterNode =
|
| - m_pNode->GetProperty(0, XFA_ELEMENT_AppearanceFilter);
|
| - pAppearanceFilterNode->TryContent(wsContent);
|
| - }
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Filter::GetCertificatesCredentialServerPolicy() {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Optional;
|
| - }
|
| - CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| - return XFA_GetEnumTypeAttribute(pCertsNode,
|
| - XFA_ATTRIBUTE_CredentialServerPolicy);
|
| -}
|
| -CFX_WideString CXFA_Filter::GetCertificatesURL() {
|
| - CFX_WideString wsURL;
|
| - if (m_pNode) {
|
| - CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| - pCertsNode->GetAttribute(XFA_ATTRIBUTE_Url, wsURL, FALSE);
|
| - }
|
| - return wsURL;
|
| -}
|
| -CFX_WideString CXFA_Filter::GetCertificatesURLPolicy() {
|
| - CFX_WideString wsURLPolicy;
|
| - if (m_pNode) {
|
| - CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| - pCertsNode->GetAttribute(XFA_ATTRIBUTE_UrlPolicy, wsURLPolicy, FALSE);
|
| - }
|
| - return wsURLPolicy;
|
| -}
|
| -CXFA_WrapCertificate CXFA_Filter::GetCertificatesEncryption(FX_BOOL bModified) {
|
| - if (!m_pNode) {
|
| - return CXFA_WrapCertificate(NULL);
|
| - }
|
| - CXFA_Node* pCertsNode =
|
| - m_pNode->GetProperty(0, XFA_ELEMENT_Certificates, bModified);
|
| - return CXFA_WrapCertificate(
|
| - pCertsNode ? pCertsNode->GetProperty(0, XFA_ELEMENT_Encryption, bModified)
|
| - : NULL);
|
| -}
|
| -CXFA_WrapCertificate CXFA_Filter::GetCertificatesIssuers(FX_BOOL bModified) {
|
| - if (!m_pNode) {
|
| - return CXFA_WrapCertificate(NULL);
|
| - }
|
| - CXFA_Node* pCertsNode =
|
| - m_pNode->GetProperty(0, XFA_ELEMENT_Certificates, bModified);
|
| - return CXFA_WrapCertificate(
|
| - pCertsNode ? pCertsNode->GetProperty(0, XFA_ELEMENT_Issuers, bModified)
|
| - : NULL);
|
| -}
|
| -CFX_WideString CXFA_Filter::GetCertificatesKeyUsageString(
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - if (!m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| - CXFA_Node* pKeyUsageNode = pCertsNode->GetProperty(0, XFA_ELEMENT_KeyUsage);
|
| - CFX_WideString wsAttributeValue;
|
| - pKeyUsageNode->GetAttribute(eAttribute, wsAttributeValue, FALSE);
|
| - return wsAttributeValue;
|
| -}
|
| -CXFA_Oids CXFA_Filter::GetCertificatesOids() {
|
| - if (!m_pNode) {
|
| - return CXFA_Oids(NULL);
|
| - }
|
| - CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| - return CXFA_Oids(pCertsNode ? pCertsNode->GetProperty(0, XFA_ELEMENT_Oids)
|
| - : NULL);
|
| -}
|
| -CXFA_WrapCertificate CXFA_Filter::GetCertificatesSigning(FX_BOOL bModified) {
|
| - if (!m_pNode) {
|
| - return CXFA_WrapCertificate(NULL);
|
| - }
|
| - CXFA_Node* pCertsNode =
|
| - m_pNode->GetProperty(0, XFA_ELEMENT_Certificates, bModified);
|
| - return CXFA_WrapCertificate(
|
| - pCertsNode ? pCertsNode->GetProperty(0, XFA_ELEMENT_Signing, bModified)
|
| - : NULL);
|
| -}
|
| -CXFA_DigestMethods CXFA_Filter::GetDigestMethods(FX_BOOL bModified) {
|
| - return CXFA_DigestMethods(
|
| - m_pNode ? m_pNode->GetProperty(0, XFA_ELEMENT_DigestMethods, bModified)
|
| - : NULL);
|
| -}
|
| -CXFA_Encodings CXFA_Filter::GetEncodings(FX_BOOL bModified) {
|
| - return CXFA_Encodings(
|
| - m_pNode ? m_pNode->GetProperty(0, XFA_ELEMENT_Encodings, bModified)
|
| - : NULL);
|
| -}
|
| -CXFA_EncryptionMethods CXFA_Filter::GetEncryptionMethods(FX_BOOL bModified) {
|
| - return CXFA_EncryptionMethods(
|
| - m_pNode
|
| - ? m_pNode->GetProperty(0, XFA_ELEMENT_EncryptionMethods, bModified)
|
| - : NULL);
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Filter::GetHandlerType() {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Optional;
|
| - }
|
| - CXFA_Node* pHandlerNode = m_pNode->GetProperty(0, XFA_ELEMENT_Handler);
|
| - return XFA_GetEnumTypeAttribute(pHandlerNode);
|
| -}
|
| -CFX_WideString CXFA_Filter::GetHandlerContent() {
|
| - CFX_WideString wsContent;
|
| - if (m_pNode) {
|
| - CXFA_Node* pHandlerNode = m_pNode->GetProperty(0, XFA_ELEMENT_Handler);
|
| - pHandlerNode->TryContent(wsContent);
|
| - }
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Filter::GetlockDocumentType() {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Optional;
|
| - }
|
| - CXFA_Node* pLockDocNode = m_pNode->GetProperty(0, XFA_ELEMENT_LockDocument);
|
| - return XFA_GetEnumTypeAttribute(pLockDocNode);
|
| -}
|
| -CFX_WideString CXFA_Filter::GetlockDocumentContent() {
|
| - CFX_WideString wsContent = FX_WSTRC(L"auto");
|
| - if (m_pNode) {
|
| - CXFA_Node* pLockDocNode = m_pNode->GetProperty(0, XFA_ELEMENT_LockDocument);
|
| - pLockDocNode->TryContent(wsContent);
|
| - }
|
| - return wsContent;
|
| -}
|
| -int32_t CXFA_Filter::GetMDPPermissions() {
|
| - int32_t iPermissions = 2;
|
| - if (m_pNode) {
|
| - CXFA_Node* pMDPNode = m_pNode->GetProperty(0, XFA_ELEMENT_Mdp);
|
| - if (!pMDPNode->TryInteger(XFA_ATTRIBUTE_Permissions, iPermissions, TRUE)) {
|
| - iPermissions = 2;
|
| - }
|
| - }
|
| - return iPermissions;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Filter::GetMDPSignatureType() {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Filter;
|
| - }
|
| - CXFA_Node* pMDPNode = m_pNode->GetProperty(0, XFA_ELEMENT_Mdp);
|
| - return XFA_GetEnumTypeAttribute(pMDPNode, XFA_ATTRIBUTE_SignatureType,
|
| - XFA_ATTRIBUTEENUM_Filter);
|
| -}
|
| -CXFA_Reasons CXFA_Filter::GetReasons(FX_BOOL bModified) {
|
| - return CXFA_Reasons(m_pNode ? m_pNode->GetProperty(0, XFA_ELEMENT_Reasons)
|
| - : NULL);
|
| -}
|
| -CFX_WideString CXFA_Filter::GetTimeStampServer() {
|
| - CFX_WideString wsServerURI;
|
| - if (m_pNode) {
|
| - CXFA_Node* pTimeStampNode = m_pNode->GetProperty(0, XFA_ELEMENT_TimeStamp);
|
| - pTimeStampNode->GetAttribute(XFA_ATTRIBUTE_Server, wsServerURI, FALSE);
|
| - }
|
| - return wsServerURI;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Filter::GetTimeStampType() {
|
| - if (!m_pNode) {
|
| - return XFA_ATTRIBUTEENUM_Optional;
|
| - }
|
| - CXFA_Node* pTimeStampNode = m_pNode->GetProperty(0, XFA_ELEMENT_TimeStamp);
|
| - return XFA_GetEnumTypeAttribute(pTimeStampNode);
|
| -}
|
| -CFX_WideString CXFA_Certificate::GetCertificateName() {
|
| - CFX_WideString wsName;
|
| - if (m_pNode) {
|
| - m_pNode->GetAttribute(XFA_ATTRIBUTE_Name, wsName, FALSE);
|
| - }
|
| - return wsName;
|
| -}
|
| -CFX_WideString CXFA_Certificate::GetCertificateContent() {
|
| - CFX_WideString wsContent;
|
| - if (m_pNode) {
|
| - m_pNode->TryContent(wsContent);
|
| - }
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_WrapCertificate::GetType() {
|
| - return XFA_GetEnumTypeAttribute(m_pNode);
|
| -}
|
| -int32_t CXFA_WrapCertificate::CountCertificates() {
|
| - return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Certificate) : 0;
|
| -}
|
| -CXFA_Certificate CXFA_WrapCertificate::GetCertificate(int32_t nIndex) {
|
| - return CXFA_Certificate(
|
| - (nIndex > -1 && m_pNode)
|
| - ? m_pNode->GetChild(nIndex, XFA_ELEMENT_Certificate)
|
| - : NULL);
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Oids::GetOidsType() {
|
| - return XFA_GetEnumTypeAttribute(m_pNode);
|
| -}
|
| -int32_t CXFA_Oids::CountOids() {
|
| - return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Oid) : 0;
|
| -}
|
| -CFX_WideString CXFA_Oids::GetOidContent(int32_t nIndex) {
|
| - if (nIndex <= -1 || !m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pOidNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_Oid);
|
| - if (!pOidNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CFX_WideString wsContent;
|
| - pOidNode->TryContent(wsContent);
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_SubjectDNs::GetSubjectDNsType() {
|
| - return XFA_GetEnumTypeAttribute(m_pNode);
|
| -}
|
| -int32_t CXFA_SubjectDNs::CountSubjectDNs() {
|
| - return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_SubjectDN) : 0;
|
| -}
|
| -CFX_WideString CXFA_SubjectDNs::GetSubjectDNString(int32_t nIndex,
|
| - XFA_ATTRIBUTE eAttribute) {
|
| - if (nIndex <= -1 || !m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pSubjectDNNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_SubjectDN);
|
| - if (!pSubjectDNNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CFX_WideString wsAttributeValue;
|
| - pSubjectDNNode->GetAttribute(eAttribute, wsAttributeValue, FALSE);
|
| - return wsAttributeValue;
|
| -}
|
| -CFX_WideString CXFA_SubjectDNs::GetSubjectDNContent(int32_t nIndex) {
|
| - if (nIndex <= -1 || !m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pSubjectDNNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_SubjectDN);
|
| - if (!pSubjectDNNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CFX_WideString wsContent;
|
| - pSubjectDNNode->TryContent(wsContent);
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_DigestMethods::GetDigestMethodsType() {
|
| - return XFA_GetEnumTypeAttribute(m_pNode);
|
| -}
|
| -int32_t CXFA_DigestMethods::CountDigestMethods() {
|
| - return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_DigestMethod) : 0;
|
| -}
|
| -CFX_WideString CXFA_DigestMethods::GetDigestMethodContent(int32_t nIndex) {
|
| - if (nIndex <= -1 || !m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pDigestMethodNode =
|
| - m_pNode->GetChild(nIndex, XFA_ELEMENT_DigestMethod);
|
| - if (!pDigestMethodNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CFX_WideString wsContent;
|
| - pDigestMethodNode->TryContent(wsContent);
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Encodings::GetEncodingsType() {
|
| - return XFA_GetEnumTypeAttribute(m_pNode);
|
| -}
|
| -int32_t CXFA_Encodings::CountEncodings() {
|
| - return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Encoding) : 0;
|
| -}
|
| -CFX_WideString CXFA_Encodings::GetEncodingContent(int32_t nIndex) {
|
| - if (nIndex <= -1 || !m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pEncodingNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_Encoding);
|
| - if (!pEncodingNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CFX_WideString wsContent;
|
| - pEncodingNode->TryContent(wsContent);
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_EncryptionMethods::GetEncryptionMethodsType() {
|
| - return XFA_GetEnumTypeAttribute(m_pNode);
|
| -}
|
| -int32_t CXFA_EncryptionMethods::CountEncryptionMethods() {
|
| - return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_EncryptionMethod) : 0;
|
| -}
|
| -CFX_WideString CXFA_EncryptionMethods::GetEncryptionMethodContent(
|
| - int32_t nIndex) {
|
| - if (nIndex <= -1 || !m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pEncryMethodNode =
|
| - m_pNode->GetChild(nIndex, XFA_ELEMENT_EncryptionMethod);
|
| - if (!pEncryMethodNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CFX_WideString wsContent;
|
| - pEncryMethodNode->TryContent(wsContent);
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Reasons::GetReasonsType() {
|
| - return XFA_GetEnumTypeAttribute(m_pNode);
|
| -}
|
| -int32_t CXFA_Reasons::CountReasons() {
|
| - return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Reason) : 0;
|
| -}
|
| -CFX_WideString CXFA_Reasons::GetReasonContent(int32_t nIndex) {
|
| - if (nIndex <= -1 || !m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pReasonNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_Reason);
|
| - if (!pReasonNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CFX_WideString wsContent;
|
| - pReasonNode->TryContent(wsContent);
|
| - return wsContent;
|
| -}
|
| -XFA_ATTRIBUTEENUM CXFA_Manifest::GetAction() {
|
| - return XFA_GetEnumTypeAttribute(m_pNode, XFA_ATTRIBUTE_Action,
|
| - XFA_ATTRIBUTEENUM_Include);
|
| -}
|
| -int32_t CXFA_Manifest::CountReives() {
|
| - return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Ref) : 0;
|
| -}
|
| -CFX_WideString CXFA_Manifest::GetRefContent(int32_t nIndex) {
|
| - if (nIndex <= -1 || !m_pNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CXFA_Node* pRefNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_Ref);
|
| - if (!pRefNode) {
|
| - return FX_WSTRC(L"");
|
| - }
|
| - CFX_WideString wsContent;
|
| - pRefNode->TryContent(wsContent);
|
| - return wsContent;
|
| -}
|
| +// Copyright 2014 PDFium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| +
|
| +#include "xfa/src/foxitlib.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_utils.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_object.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_document.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_parser.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_script.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_docdata.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_doclayout.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_localemgr.h"
|
| +#include "xfa/src/fxfa/src/common/xfa_fm2jsapi.h"
|
| +static FX_ARGB XFA_WStringToColor(const CFX_WideStringC& wsValue) {
|
| + uint8_t r = 0, g = 0, b = 0;
|
| + if (wsValue.GetLength() == 0) {
|
| + return 0xff000000;
|
| + }
|
| + int cc = 0;
|
| + const FX_WCHAR* str = wsValue.GetPtr();
|
| + int len = wsValue.GetLength();
|
| + while (XFA_IsSpace(str[cc]) && cc < len) {
|
| + cc++;
|
| + }
|
| + if (cc >= len) {
|
| + return 0xff000000;
|
| + }
|
| + while (cc < len) {
|
| + if (str[cc] == ',' || !XFA_IsDigit(str[cc])) {
|
| + break;
|
| + }
|
| + r = r * 10 + str[cc] - '0';
|
| + cc++;
|
| + }
|
| + if (cc < len && str[cc] == ',') {
|
| + cc++;
|
| + while (XFA_IsSpace(str[cc]) && cc < len) {
|
| + cc++;
|
| + }
|
| + while (cc < len) {
|
| + if (str[cc] == ',' || !XFA_IsDigit(str[cc])) {
|
| + break;
|
| + }
|
| + g = g * 10 + str[cc] - '0';
|
| + cc++;
|
| + }
|
| + if (cc < len && str[cc] == ',') {
|
| + cc++;
|
| + while (XFA_IsSpace(str[cc]) && cc < len) {
|
| + cc++;
|
| + }
|
| + while (cc < len) {
|
| + if (str[cc] == ',' || !XFA_IsDigit(str[cc])) {
|
| + break;
|
| + }
|
| + b = b * 10 + str[cc] - '0';
|
| + cc++;
|
| + }
|
| + }
|
| + }
|
| + return (0xff << 24) | (r << 16) | (g << 8) | b;
|
| +}
|
| +XFA_ELEMENT CXFA_Data::GetClassID() const {
|
| + return m_pNode ? m_pNode->GetClassID() : XFA_ELEMENT_UNKNOWN;
|
| +}
|
| +FX_BOOL CXFA_Data::TryMeasure(XFA_ATTRIBUTE eAttr,
|
| + FX_FLOAT& fValue,
|
| + FX_BOOL bUseDefault) const {
|
| + CXFA_Measurement ms;
|
| + if (m_pNode->TryMeasure(eAttr, ms, bUseDefault)) {
|
| + fValue = ms.ToUnit(XFA_UNIT_Pt);
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_Data::SetMeasure(XFA_ATTRIBUTE eAttr, FX_FLOAT fValue) {
|
| + CXFA_Measurement ms(fValue, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(eAttr, ms);
|
| +}
|
| +CXFA_Fill::CXFA_Fill(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +CXFA_Fill::~CXFA_Fill() {}
|
| +int32_t CXFA_Fill::GetPresence() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Presence);
|
| +}
|
| +void CXFA_Fill::SetColor(FX_ARGB color) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| + CFX_WideString wsColor;
|
| + int a, r, g, b;
|
| + ArgbDecode(color, a, r, g, b);
|
| + wsColor.Format(L"%d,%d,%d", r, g, b);
|
| + pNode->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| +}
|
| +FX_ARGB CXFA_Fill::GetColor(FX_BOOL bText) {
|
| + if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| + CFX_WideStringC wsColor;
|
| + if (pNode->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE)) {
|
| + return XFA_WStringToColor(wsColor);
|
| + }
|
| + }
|
| + if (bText) {
|
| + return 0xFF000000;
|
| + }
|
| + return 0xFFFFFFFF;
|
| +}
|
| +int32_t CXFA_Fill::GetFillType() {
|
| + CXFA_Node* pChild = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + while (pChild) {
|
| + int32_t eType = pChild->GetClassID();
|
| + if (eType != XFA_ELEMENT_Color && eType != XFA_ELEMENT_Extras) {
|
| + return eType;
|
| + }
|
| + pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + return XFA_ELEMENT_Solid;
|
| +}
|
| +int32_t CXFA_Fill::GetPattern(FX_ARGB& foreColor) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Pattern);
|
| + if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| + CFX_WideStringC wsColor;
|
| + pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE);
|
| + foreColor = XFA_WStringToColor(wsColor);
|
| + } else {
|
| + foreColor = 0xFF000000;
|
| + }
|
| + return pNode->GetEnum(XFA_ATTRIBUTE_Type);
|
| +}
|
| +int32_t CXFA_Fill::GetStipple(FX_ARGB& stippleColor) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Stipple);
|
| + int32_t eAttr = 50;
|
| + pNode->TryInteger(XFA_ATTRIBUTE_Rate, eAttr);
|
| + if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| + CFX_WideStringC wsColor;
|
| + pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE);
|
| + stippleColor = XFA_WStringToColor(wsColor);
|
| + } else {
|
| + stippleColor = 0xFF000000;
|
| + }
|
| + return eAttr;
|
| +}
|
| +int32_t CXFA_Fill::GetLinear(FX_ARGB& endColor) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Linear);
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_ToRight;
|
| + pNode->TryEnum(XFA_ATTRIBUTE_Type, eAttr);
|
| + if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| + CFX_WideStringC wsColor;
|
| + pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE);
|
| + endColor = XFA_WStringToColor(wsColor);
|
| + } else {
|
| + endColor = 0xFF000000;
|
| + }
|
| + return eAttr;
|
| +}
|
| +int32_t CXFA_Fill::GetRadial(FX_ARGB& endColor) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Radial);
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_ToEdge;
|
| + pNode->TryEnum(XFA_ATTRIBUTE_Type, eAttr);
|
| + if (CXFA_Node* pColor = pNode->GetChild(0, XFA_ELEMENT_Color)) {
|
| + CFX_WideStringC wsColor;
|
| + pColor->TryCData(XFA_ATTRIBUTE_Value, wsColor, FALSE);
|
| + endColor = XFA_WStringToColor(wsColor);
|
| + } else {
|
| + endColor = 0xFF000000;
|
| + }
|
| + return eAttr;
|
| +}
|
| +FX_BOOL CXFA_Fill::SetPresence(int32_t iPresence) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Presence, (XFA_ATTRIBUTEENUM)iPresence);
|
| +}
|
| +FX_BOOL CXFA_Fill::SetFillType(int32_t iType) {
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_Fill::SetPattern(int32_t iPattern, FX_ARGB foreColor) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Pattern);
|
| + CXFA_Node* pColor = pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| + CFX_WideString wsColor;
|
| + int a, r, g, b;
|
| + ArgbDecode(foreColor, a, r, g, b);
|
| + wsColor.Format(L"%d,%d,%d", r, g, b);
|
| + pColor->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| + return pNode->SetEnum(XFA_ATTRIBUTE_Type, (XFA_ATTRIBUTEENUM)iPattern);
|
| +}
|
| +FX_BOOL CXFA_Fill::SetStipple(int32_t iStipple, FX_ARGB stippleColor) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Stipple);
|
| + CXFA_Node* pColor = pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| + CFX_WideString wsColor;
|
| + int a, r, g, b;
|
| + ArgbDecode(stippleColor, a, r, g, b);
|
| + wsColor.Format(L"%d,%d,%d", r, g, b);
|
| + pColor->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| + return pNode->SetEnum(XFA_ATTRIBUTE_Rate, (XFA_ATTRIBUTEENUM)iStipple);
|
| +}
|
| +FX_BOOL CXFA_Fill::SetLinear(int32_t iLinear, FX_ARGB endColor) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Linear);
|
| + CXFA_Node* pColor = pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| + CFX_WideString wsColor;
|
| + int a, r, g, b;
|
| + ArgbDecode(endColor, a, r, g, b);
|
| + wsColor.Format(L"%d,%d,%d", r, g, b);
|
| + pColor->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| + return pNode->SetEnum(XFA_ATTRIBUTE_Type, (XFA_ATTRIBUTEENUM)iLinear);
|
| +}
|
| +FX_BOOL CXFA_Fill::SetRadial(int32_t iRadial, FX_ARGB endColor) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Radial);
|
| + CXFA_Node* pColor = pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| + CFX_WideString wsColor;
|
| + int a, r, g, b;
|
| + ArgbDecode(endColor, a, r, g, b);
|
| + wsColor.Format(L"%d,%d,%d", r, g, b);
|
| + pColor->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| + return pNode->SetEnum(XFA_ATTRIBUTE_Type, (XFA_ATTRIBUTEENUM)iRadial);
|
| +}
|
| +CXFA_Margin::CXFA_Margin(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +FX_BOOL CXFA_Margin::GetLeftInset(FX_FLOAT& fInset, FX_FLOAT fDefInset) const {
|
| + fInset = fDefInset;
|
| + return TryMeasure(XFA_ATTRIBUTE_LeftInset, fInset);
|
| +}
|
| +FX_BOOL CXFA_Margin::GetTopInset(FX_FLOAT& fInset, FX_FLOAT fDefInset) const {
|
| + fInset = fDefInset;
|
| + return TryMeasure(XFA_ATTRIBUTE_TopInset, fInset);
|
| +}
|
| +FX_BOOL CXFA_Margin::GetRightInset(FX_FLOAT& fInset, FX_FLOAT fDefInset) const {
|
| + fInset = fDefInset;
|
| + return TryMeasure(XFA_ATTRIBUTE_RightInset, fInset);
|
| +}
|
| +FX_BOOL CXFA_Margin::GetBottomInset(FX_FLOAT& fInset,
|
| + FX_FLOAT fDefInset) const {
|
| + fInset = fDefInset;
|
| + return TryMeasure(XFA_ATTRIBUTE_BottomInset, fInset);
|
| +}
|
| +FX_BOOL CXFA_Margin::SetLeftInset(FX_FLOAT fInset) {
|
| + return SetMeasure(XFA_ATTRIBUTE_LeftInset, fInset);
|
| +}
|
| +FX_BOOL CXFA_Margin::SetTopInset(FX_FLOAT fInset) {
|
| + return SetMeasure(XFA_ATTRIBUTE_TopInset, fInset);
|
| +}
|
| +FX_BOOL CXFA_Margin::SetRightInset(FX_FLOAT fInset) {
|
| + return SetMeasure(XFA_ATTRIBUTE_RightInset, fInset);
|
| +}
|
| +FX_BOOL CXFA_Margin::SetBottomInset(FX_FLOAT fInset) {
|
| + return SetMeasure(XFA_ATTRIBUTE_BottomInset, fInset);
|
| +}
|
| +CXFA_Font::CXFA_Font(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +FX_FLOAT CXFA_Font::GetBaselineShift() {
|
| + return m_pNode->GetMeasure(XFA_ATTRIBUTE_BaselineShift).ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +FX_FLOAT CXFA_Font::GetHorizontalScale() {
|
| + CFX_WideString wsValue;
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_FontHorizontalScale, wsValue);
|
| + int32_t iScale = FXSYS_wtoi((const FX_WCHAR*)wsValue);
|
| + return iScale > 0 ? (FX_FLOAT)iScale : 100.0f;
|
| +}
|
| +FX_FLOAT CXFA_Font::GetVerticalScale() {
|
| + CFX_WideString wsValue;
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_FontVerticalScale, wsValue);
|
| + int32_t iScale = FXSYS_wtoi((const FX_WCHAR*)wsValue);
|
| + return iScale > 0 ? (FX_FLOAT)iScale : 100.0f;
|
| +}
|
| +FX_FLOAT CXFA_Font::GetLetterSpacing() {
|
| + CFX_WideStringC wsValue;
|
| + if (!m_pNode->TryCData(XFA_ATTRIBUTE_LetterSpacing, wsValue)) {
|
| + return 0;
|
| + }
|
| + CXFA_Measurement ms(wsValue);
|
| + if (ms.GetUnit() == XFA_UNIT_Em) {
|
| + return ms.GetValue() * GetFontSize();
|
| + }
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +int32_t CXFA_Font::GetLineThrough() {
|
| + int32_t iValue = 0;
|
| + m_pNode->TryInteger(XFA_ATTRIBUTE_LineThrough, iValue);
|
| + return iValue;
|
| +}
|
| +int32_t CXFA_Font::GetLineThroughPeriod() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_All;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_LineThroughPeriod, eAttr);
|
| + return eAttr;
|
| +}
|
| +int32_t CXFA_Font::GetOverline() {
|
| + int32_t iValue = 0;
|
| + m_pNode->TryInteger(XFA_ATTRIBUTE_Overline, iValue);
|
| + return iValue;
|
| +}
|
| +int32_t CXFA_Font::GetOverlinePeriod() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_All;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_OverlinePeriod, eAttr);
|
| + return eAttr;
|
| +}
|
| +int32_t CXFA_Font::GetUnderline() {
|
| + int32_t iValue = 0;
|
| + m_pNode->TryInteger(XFA_ATTRIBUTE_Underline, iValue);
|
| + return iValue;
|
| +}
|
| +int32_t CXFA_Font::GetUnderlinePeriod() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_All;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_UnderlinePeriod, eAttr);
|
| + return eAttr;
|
| +}
|
| +FX_FLOAT CXFA_Font::GetFontSize() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_Size, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +void CXFA_Font::GetTypeface(CFX_WideStringC& wsTypeFace) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Typeface, wsTypeFace);
|
| +}
|
| +FX_BOOL CXFA_Font::IsBold() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Normal;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_Weight, eAttr);
|
| + return eAttr == XFA_ATTRIBUTEENUM_Bold;
|
| +}
|
| +FX_BOOL CXFA_Font::IsItalic() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Normal;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_Posture, eAttr);
|
| + return eAttr == XFA_ATTRIBUTEENUM_Italic;
|
| +}
|
| +FX_BOOL CXFA_Font::IsUseKerning() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_None;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_KerningMode, eAttr);
|
| + return eAttr == XFA_ATTRIBUTEENUM_Pair;
|
| +}
|
| +void CXFA_Font::SetColor(FX_ARGB color) {
|
| + CXFA_Fill fill = m_pNode->GetProperty(0, XFA_ELEMENT_Fill);
|
| + fill.SetColor(color);
|
| +}
|
| +FX_ARGB CXFA_Font::GetColor() {
|
| + if (CXFA_Fill fill = m_pNode->GetChild(0, XFA_ELEMENT_Fill)) {
|
| + return fill.GetColor(TRUE);
|
| + }
|
| + return 0xFF000000;
|
| +}
|
| +FX_BOOL CXFA_Font::SetBaselineShift(FX_FLOAT fBaselineShift) {
|
| + CXFA_Measurement ms(fBaselineShift, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_BaselineShift, ms);
|
| +}
|
| +FX_BOOL CXFA_Font::SetHorizontalScale(FX_FLOAT fHorizontalScale) {
|
| + CFX_WideString wsValue;
|
| + wsValue.Format(L"%d", (int32_t)fHorizontalScale);
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_FontHorizontalScale, wsValue);
|
| +}
|
| +FX_BOOL CXFA_Font::SetVerticalScale(FX_FLOAT fVerticalScale) {
|
| + CFX_WideString wsValue;
|
| + wsValue.Format(L"%d", (int32_t)fVerticalScale);
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_FontVerticalScale, wsValue);
|
| +}
|
| +FX_BOOL CXFA_Font::SetLetterSpacing(FX_FLOAT fLetterSpacing, XFA_UNIT eUnit) {
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_Font::SetLineThrough(int32_t iLineThrough) {
|
| + return m_pNode->SetInteger(XFA_ATTRIBUTE_LineThrough, iLineThrough);
|
| +}
|
| +FX_BOOL CXFA_Font::SetLineThroughPeriod(int32_t iLineThroughPeriod) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_LineThroughPeriod,
|
| + (XFA_ATTRIBUTEENUM)iLineThroughPeriod);
|
| +}
|
| +FX_BOOL CXFA_Font::SetOverline(int32_t iOverline) {
|
| + return m_pNode->SetInteger(XFA_ATTRIBUTE_Overline, iOverline);
|
| +}
|
| +FX_BOOL CXFA_Font::SetOverlinePeriod(int32_t iOverlinePeriod) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_OverlinePeriod,
|
| + (XFA_ATTRIBUTEENUM)iOverlinePeriod);
|
| +}
|
| +FX_BOOL CXFA_Font::SetUnderline(int32_t iUnderline) {
|
| + return m_pNode->SetInteger(XFA_ATTRIBUTE_Underline, iUnderline);
|
| +}
|
| +FX_BOOL CXFA_Font::SetUnderlinePeriod(int32_t iUnderlinePeriod) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_UnderlinePeriod,
|
| + (XFA_ATTRIBUTEENUM)iUnderlinePeriod);
|
| +}
|
| +CXFA_Caption::CXFA_Caption(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +int32_t CXFA_Caption::GetPresence() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Visible;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_Presence, eAttr);
|
| + return eAttr;
|
| +}
|
| +int32_t CXFA_Caption::GetPlacementType() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Left;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_Placement, eAttr);
|
| + return eAttr;
|
| +}
|
| +FX_FLOAT CXFA_Caption::GetReserve() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_Reserve, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +CXFA_Margin CXFA_Caption::GetMargin() {
|
| + return CXFA_Margin(m_pNode ? m_pNode->GetChild(0, XFA_ELEMENT_Margin) : NULL);
|
| +}
|
| +CXFA_Font CXFA_Caption::GetFont() {
|
| + return CXFA_Font(m_pNode ? m_pNode->GetChild(0, XFA_ELEMENT_Font) : NULL);
|
| +}
|
| +CXFA_Value CXFA_Caption::GetValue() {
|
| + return CXFA_Value(m_pNode ? m_pNode->GetChild(0, XFA_ELEMENT_Value) : NULL);
|
| +}
|
| +CXFA_Para CXFA_Caption::GetPara() {
|
| + return CXFA_Para(m_pNode ? m_pNode->GetChild(0, XFA_ELEMENT_Para) : NULL);
|
| +}
|
| +FX_BOOL CXFA_Caption::SetPresence(int32_t iPresence) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Presence, (XFA_ATTRIBUTEENUM)iPresence);
|
| +}
|
| +FX_BOOL CXFA_Caption::SetPlacementType(int32_t iType) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Placement, (XFA_ATTRIBUTEENUM)iType);
|
| +}
|
| +FX_BOOL CXFA_Caption::SetReserve(FX_FLOAT fReserve) {
|
| + CXFA_Measurement ms(fReserve, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_Reserve, ms);
|
| +}
|
| +CXFA_Para::CXFA_Para(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +int32_t CXFA_Para::GetHorizontalAlign() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Left;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_HAlign, eAttr);
|
| + return eAttr;
|
| +}
|
| +int32_t CXFA_Para::GetVerticalAlign() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_Top;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_VAlign, eAttr);
|
| + return eAttr;
|
| +}
|
| +FX_FLOAT CXFA_Para::GetLineHeight() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_LineHeight, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +FX_FLOAT CXFA_Para::GetMarginLeft() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_MarginLeft, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +FX_FLOAT CXFA_Para::GetMarginRight() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_MarginRight, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +int32_t CXFA_Para::GetOrphans() {
|
| + int32_t iValue = 0;
|
| + m_pNode->TryInteger(XFA_ATTRIBUTE_Orphans, iValue);
|
| + return iValue;
|
| +}
|
| +FX_FLOAT CXFA_Para::GetRadixOffset() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_RadixOffset, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +FX_FLOAT CXFA_Para::GetSpaceAbove() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_SpaceAbove, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +FX_FLOAT CXFA_Para::GetSpaceBelow() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_SpaceBelow, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +FX_FLOAT CXFA_Para::GetTextIndent() {
|
| + CXFA_Measurement ms;
|
| + m_pNode->TryMeasure(XFA_ATTRIBUTE_TextIndent, ms);
|
| + return ms.ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +int32_t CXFA_Para::GetWidows() {
|
| + int32_t iValue = 0;
|
| + m_pNode->TryInteger(XFA_ATTRIBUTE_Widows, iValue);
|
| + return iValue;
|
| +}
|
| +FX_BOOL CXFA_Para::SetHorizontalAlign(int32_t iHorizontalAlign) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_HAlign,
|
| + (XFA_ATTRIBUTEENUM)iHorizontalAlign);
|
| +}
|
| +FX_BOOL CXFA_Para::SetVerticalAlign(int32_t iVerticalAlign) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_VAlign,
|
| + (XFA_ATTRIBUTEENUM)iVerticalAlign);
|
| +}
|
| +FX_BOOL CXFA_Para::SetLineHeight(FX_FLOAT fLineHeight) {
|
| + CXFA_Measurement ms;
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_LineHeight, ms);
|
| +}
|
| +FX_BOOL CXFA_Para::SetMarginLeft(FX_FLOAT fMarginLeft) {
|
| + CXFA_Measurement ms(fMarginLeft, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_MarginLeft, ms);
|
| +}
|
| +FX_BOOL CXFA_Para::SetMarginRight(FX_FLOAT fMarginRight) {
|
| + CXFA_Measurement ms(fMarginRight, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_MarginRight, ms);
|
| +}
|
| +FX_BOOL CXFA_Para::SetOrphans(int32_t iOrphans) {
|
| + return m_pNode->SetInteger(XFA_ATTRIBUTE_Orphans, iOrphans);
|
| +}
|
| +FX_BOOL CXFA_Para::SetRadixOffset(FX_FLOAT fRadixOffset) {
|
| + CXFA_Measurement ms(fRadixOffset, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_RadixOffset, ms);
|
| +}
|
| +FX_BOOL CXFA_Para::SetSpaceAbove(FX_FLOAT fSpaceAbove) {
|
| + CXFA_Measurement ms(fSpaceAbove, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_SpaceAbove, ms);
|
| +}
|
| +FX_BOOL CXFA_Para::SetSpaceBelow(FX_FLOAT fSpaceBelow) {
|
| + CXFA_Measurement ms(fSpaceBelow, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_SpaceBelow, ms);
|
| +}
|
| +FX_BOOL CXFA_Para::SetTextIndent(FX_FLOAT fTextIndent) {
|
| + CXFA_Measurement ms(fTextIndent, XFA_UNIT_Pt);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_TextIndent, ms);
|
| +}
|
| +FX_BOOL CXFA_Para::SetWidows(int32_t iWidows) {
|
| + return m_pNode->SetInteger(XFA_ATTRIBUTE_Widows, iWidows);
|
| +}
|
| +CXFA_Keep::CXFA_Keep(CXFA_Node* pNode, CXFA_Node* pParent)
|
| + : CXFA_Data(pNode), m_pParent(pParent) {}
|
| +int32_t CXFA_Keep::GetIntact() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_None;
|
| + switch (m_pParent->GetClassID()) {
|
| + case XFA_ELEMENT_Subform: {
|
| + XFA_ATTRIBUTEENUM eAttrSubForm;
|
| + m_pParent->TryEnum(XFA_ATTRIBUTE_Layout, eAttrSubForm);
|
| + if (eAttrSubForm == XFA_ATTRIBUTEENUM_Position ||
|
| + eAttrSubForm == XFA_ATTRIBUTEENUM_Row) {
|
| + eAttr = XFA_ATTRIBUTEENUM_ContentArea;
|
| + }
|
| + } break;
|
| + case XFA_ELEMENT_Draw:
|
| + eAttr = XFA_ATTRIBUTEENUM_ContentArea;
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_Intact, eAttr, FALSE);
|
| + return eAttr;
|
| +}
|
| +int32_t CXFA_Keep::GetNext() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_None;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_Next, eAttr);
|
| + return eAttr;
|
| +}
|
| +int32_t CXFA_Keep::GetPrevious() {
|
| + XFA_ATTRIBUTEENUM eAttr = XFA_ATTRIBUTEENUM_None;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_Previous, eAttr);
|
| + return eAttr;
|
| +}
|
| +FX_BOOL CXFA_Keep::SetIntact(int32_t iIntact) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Intact, (XFA_ATTRIBUTEENUM)iIntact);
|
| +}
|
| +FX_BOOL CXFA_Keep::SetNext(int32_t iNext) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Next, (XFA_ATTRIBUTEENUM)iNext);
|
| +}
|
| +FX_BOOL CXFA_Keep::SetPrevious(int32_t iPrevious) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Previous, (XFA_ATTRIBUTEENUM)iPrevious);
|
| +}
|
| +CXFA_Event::CXFA_Event(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +int32_t CXFA_Event::GetActivity() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Activity);
|
| +}
|
| +int32_t CXFA_Event::GetEventType() {
|
| + CXFA_Node* pChild = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + while (pChild) {
|
| + int32_t eType = pChild->GetClassID();
|
| + if (eType != XFA_ELEMENT_Extras) {
|
| + return eType;
|
| + }
|
| + pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + return XFA_ELEMENT_UNKNOWN;
|
| +}
|
| +void CXFA_Event::GetRef(CFX_WideStringC& wsRef) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| +}
|
| +int32_t CXFA_Event::GetExecuteRunAt() {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| + return pNode->GetEnum(XFA_ATTRIBUTE_RunAt);
|
| +}
|
| +int32_t CXFA_Event::GetExecuteType() {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| + return pNode->GetEnum(XFA_ATTRIBUTE_ExecuteType);
|
| +}
|
| +void CXFA_Event::GetExecuteConnection(CFX_WideString& wsConnection) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| + CFX_WideStringC cData;
|
| + pNode->TryCData(XFA_ATTRIBUTE_Connection, cData);
|
| + wsConnection = cData;
|
| +}
|
| +CXFA_Script CXFA_Event::GetScript() {
|
| + return m_pNode->GetChild(0, XFA_ELEMENT_Script);
|
| +}
|
| +CXFA_Submit CXFA_Event::GetSubmit() {
|
| + return m_pNode->GetChild(0, XFA_ELEMENT_Submit);
|
| +}
|
| +int32_t CXFA_Event::GetSignDataOperation() {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_SignData);
|
| + return pNode->GetEnum(XFA_ATTRIBUTE_Operation);
|
| +}
|
| +void CXFA_Event::GetSignDataTarget(CFX_WideString& wsTarget) {
|
| + if (CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_SignData)) {
|
| + CFX_WideStringC wsCData;
|
| + pNode->TryCData(XFA_ATTRIBUTE_Target, wsCData);
|
| + wsTarget = wsCData;
|
| + }
|
| +}
|
| +FX_BOOL CXFA_Event::SetActivity(int32_t iActivity) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Activity, (XFA_ATTRIBUTEENUM)iActivity);
|
| +}
|
| +FX_BOOL CXFA_Event::SetEventType(int32_t iEventType) {
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_Event::SetExecuteRunAt(int32_t iExecuteRunAt) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| + return pNode->SetEnum(XFA_ATTRIBUTE_RunAt, (XFA_ATTRIBUTEENUM)iExecuteRunAt);
|
| +}
|
| +FX_BOOL CXFA_Event::SetExecuteType(int32_t iExecuteType) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| + return pNode->SetEnum(XFA_ATTRIBUTE_ExecuteType,
|
| + (XFA_ATTRIBUTEENUM)iExecuteType);
|
| +}
|
| +FX_BOOL CXFA_Event::SetExecuteConnection(const CFX_WideString& wsConnection) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Execute);
|
| + return pNode->SetCData(XFA_ATTRIBUTE_Connection, wsConnection);
|
| +}
|
| +FX_BOOL CXFA_Event::SetSignDataOperation(int32_t iOperation) {
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_SignData);
|
| + return pNode->SetEnum(XFA_ATTRIBUTE_Operation, (XFA_ATTRIBUTEENUM)iOperation);
|
| +}
|
| +FX_BOOL CXFA_Event::SetSignDataTarget(const CFX_WideString& wsTarget) {
|
| + if (CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_SignData)) {
|
| + return pNode->SetCData(XFA_ATTRIBUTE_Target, wsTarget);
|
| + }
|
| + return FALSE;
|
| +}
|
| +CXFA_Script::CXFA_Script(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +void CXFA_Script::GetBinding(CFX_WideString& wsBinding) {
|
| + CFX_WideStringC cData;
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Binding, cData);
|
| + wsBinding = cData;
|
| +}
|
| +XFA_SCRIPTTYPE CXFA_Script::GetContentType() {
|
| + CFX_WideStringC cData;
|
| + if (m_pNode->TryCData(XFA_ATTRIBUTE_ContentType, cData, FALSE)) {
|
| + if (cData == FX_WSTRC(L"application/x-javascript")) {
|
| + return XFA_SCRIPTTYPE_Javascript;
|
| + } else if (cData == FX_WSTRC(L"application/x-formcalc")) {
|
| + return XFA_SCRIPTTYPE_Formcalc;
|
| + } else {
|
| + return XFA_SCRIPTTYPE_Unkown;
|
| + }
|
| + }
|
| + return XFA_SCRIPTTYPE_Formcalc;
|
| +}
|
| +int32_t CXFA_Script::GetRunAt() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_RunAt);
|
| +}
|
| +void CXFA_Script::GetExpression(CFX_WideString& wsExpression) {
|
| + m_pNode->TryContent(wsExpression);
|
| +}
|
| +FX_BOOL CXFA_Script::SetBinding(const CFX_WideString& wsBinding) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Binding, wsBinding);
|
| +}
|
| +FX_BOOL CXFA_Script::SetContentType(XFA_SCRIPTTYPE eType) {
|
| + CFX_WideString wsType;
|
| + switch (eType) {
|
| + case XFA_SCRIPTTYPE_Javascript:
|
| + wsType = L"application/x-javascript";
|
| + break;
|
| + case XFA_SCRIPTTYPE_Formcalc:
|
| + wsType = L"application/x-formcalc";
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_ContentType, wsType);
|
| +}
|
| +FX_BOOL CXFA_Script::SetRunAt(int32_t iRunAt) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_RunAt, (XFA_ATTRIBUTEENUM)iRunAt);
|
| +}
|
| +FX_BOOL CXFA_Script::SetExpression(const CFX_WideString& wsExpression) {
|
| + return m_pNode->SetContent(wsExpression, wsExpression);
|
| +}
|
| +CXFA_Submit::CXFA_Submit(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +FX_BOOL CXFA_Submit::IsSubmitEmbedPDF() {
|
| + return m_pNode->GetBoolean(XFA_ATTRIBUTE_EmbedPDF);
|
| +}
|
| +int32_t CXFA_Submit::GetSubmitFormat() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Format);
|
| +}
|
| +void CXFA_Submit::GetSubmitTarget(CFX_WideStringC& wsTarget) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Target, wsTarget);
|
| +}
|
| +XFA_TEXTENCODING CXFA_Submit::GetSubmitTextEncoding() {
|
| + CFX_WideStringC wsCData;
|
| + if (!m_pNode->TryCData(XFA_ATTRIBUTE_TextEncoding, wsCData)) {
|
| + return XFA_TEXTENCODING_None;
|
| + }
|
| + CFX_WideString wsValue(wsCData);
|
| + if (wsValue == L"Big-Five") {
|
| + return XFA_TEXTENCODING_Big5;
|
| + } else if (wsValue == L"fontSpecific") {
|
| + return XFA_TEXTENCODING_FontSpecific;
|
| + } else if (wsValue == L"GBK") {
|
| + return XFA_TEXTENCODING_GBK;
|
| + } else if (wsValue == L"GB-18030") {
|
| + return XFA_TEXTENCODING_GB18030;
|
| + } else if (wsValue == L"GB-2312") {
|
| + return XFA_TEXTENCODING_GB2312;
|
| + } else if (wsValue == L"ISO-8859-NN") {
|
| + return XFA_TEXTENCODING_ISO8859NN;
|
| + } else if (wsValue == L"KSC-5601") {
|
| + return XFA_TEXTENCODING_KSC5601;
|
| + } else if (wsValue == L"Shift-JIS") {
|
| + return XFA_TEXTENCODING_ShiftJIS;
|
| + } else if (wsValue == L"UCS-2") {
|
| + return XFA_TEXTENCODING_UCS2;
|
| + } else if (wsValue == L"UTF-16") {
|
| + return XFA_TEXTENCODING_UTF16;
|
| + } else if (wsValue == L"UTF-8") {
|
| + return XFA_TEXTENCODING_UTF8;
|
| + }
|
| + return XFA_TEXTENCODING_None;
|
| +}
|
| +void CXFA_Submit::GetSubmitXDPContent(CFX_WideStringC& wsContent) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_XdpContent, wsContent);
|
| +}
|
| +FX_BOOL CXFA_Submit::SetSubmitFormat(int32_t iSubmitFormat) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Format,
|
| + (XFA_ATTRIBUTEENUM)iSubmitFormat);
|
| +}
|
| +FX_BOOL CXFA_Submit::SetSubmitTarget(const CFX_WideString& wsTarget) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Target, wsTarget);
|
| +}
|
| +FX_BOOL CXFA_Submit::SetSubmitTextEncoding(XFA_TEXTENCODING eTextEncoding) {
|
| + CFX_WideString wsValue;
|
| + switch (eTextEncoding) {
|
| + case XFA_TEXTENCODING_Big5:
|
| + wsValue = L"Big-Five";
|
| + break;
|
| + case XFA_TEXTENCODING_FontSpecific:
|
| + wsValue = L"fontSpecific";
|
| + break;
|
| + case XFA_TEXTENCODING_GBK:
|
| + wsValue = L"GBK";
|
| + break;
|
| + case XFA_TEXTENCODING_GB18030:
|
| + wsValue = L"GB-18030";
|
| + break;
|
| + case XFA_TEXTENCODING_GB2312:
|
| + wsValue = L"GB-2312";
|
| + break;
|
| + case XFA_TEXTENCODING_ISO8859NN:
|
| + wsValue = L"ISO-8859-NN";
|
| + break;
|
| + case XFA_TEXTENCODING_KSC5601:
|
| + wsValue = L"KSC-5601";
|
| + break;
|
| + case XFA_TEXTENCODING_ShiftJIS:
|
| + wsValue = L"Shift-JIS";
|
| + break;
|
| + case XFA_TEXTENCODING_UCS2:
|
| + wsValue = L"UCS-2";
|
| + break;
|
| + case XFA_TEXTENCODING_UTF16:
|
| + wsValue = L"UTF-16";
|
| + break;
|
| + case XFA_TEXTENCODING_UTF8:
|
| + wsValue = L"UTF-8";
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_TextEncoding, wsValue);
|
| +}
|
| +FX_BOOL CXFA_Submit::SetSubmitXDPContent(const CFX_WideString& wsContent) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_XdpContent, wsContent);
|
| +}
|
| +XFA_ELEMENT CXFA_Value::GetChildValueClassID() {
|
| + if (!m_pNode) {
|
| + return XFA_ELEMENT_UNKNOWN;
|
| + }
|
| + if (CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| + return pNode->GetClassID();
|
| + }
|
| + return XFA_ELEMENT_UNKNOWN;
|
| +}
|
| +FX_BOOL CXFA_Value::GetChildValueContent(CFX_WideString& wsContent) {
|
| + if (!m_pNode) {
|
| + return FALSE;
|
| + }
|
| + if (CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| + return pNode->TryContent(wsContent);
|
| + }
|
| + return FALSE;
|
| +}
|
| +CXFA_Arc CXFA_Value::GetArc() {
|
| + return m_pNode ? CXFA_Arc(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| + : NULL;
|
| +}
|
| +CXFA_Line CXFA_Value::GetLine() {
|
| + return m_pNode ? CXFA_Line(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| + : NULL;
|
| +}
|
| +CXFA_Rectangle CXFA_Value::GetRectangle() {
|
| + return m_pNode ? CXFA_Rectangle(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| + : NULL;
|
| +}
|
| +CXFA_Text CXFA_Value::GetText() {
|
| + return m_pNode ? CXFA_Text(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| + : NULL;
|
| +}
|
| +CXFA_ExData CXFA_Value::GetExData() {
|
| + return m_pNode ? CXFA_ExData(m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild))
|
| + : NULL;
|
| +}
|
| +CXFA_Image CXFA_Value::GetImage() {
|
| + return CXFA_Image(
|
| + m_pNode ? (m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) : NULL, TRUE);
|
| +}
|
| +FX_BOOL CXFA_Value::SetChildValueContent(const CFX_WideString& wsContent,
|
| + FX_BOOL bNotify,
|
| + XFA_ELEMENT iType) {
|
| + if (!m_pNode) {
|
| + return FALSE;
|
| + }
|
| + CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + if (!pNode) {
|
| + if (iType == XFA_ELEMENT_UNKNOWN) {
|
| + return FALSE;
|
| + }
|
| + pNode = m_pNode->GetProperty(0, iType);
|
| + }
|
| + CFX_WideString wsFormatContent(wsContent);
|
| + CXFA_WidgetData* pContainerWidgetData = pNode->GetContainerWidgetData();
|
| + if (pContainerWidgetData) {
|
| + pContainerWidgetData->GetFormatDataValue(wsContent, wsFormatContent);
|
| + }
|
| + return pNode->SetContent(wsContent, wsFormatContent, bNotify);
|
| +}
|
| +int32_t CXFA_Line::GetHand() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Hand);
|
| +}
|
| +FX_BOOL CXFA_Line::GetSlop() {
|
| + XFA_ATTRIBUTEENUM eSlop = m_pNode->GetEnum(XFA_ATTRIBUTE_Slope);
|
| + return eSlop == XFA_ATTRIBUTEENUM_Slash;
|
| +}
|
| +CXFA_Edge CXFA_Line::GetEdge() {
|
| + return CXFA_Edge(m_pNode->GetChild(0, XFA_ELEMENT_Edge));
|
| +}
|
| +FX_BOOL CXFA_Line::SetHand(int32_t iHand) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Hand, (XFA_ATTRIBUTEENUM)iHand);
|
| +}
|
| +FX_BOOL CXFA_Line::SetSlop(int32_t iSlop) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Slope, (XFA_ATTRIBUTEENUM)iSlop);
|
| +}
|
| +CXFA_Text::CXFA_Text(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +void CXFA_Text::GetName(CFX_WideStringC& wsName) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| +}
|
| +int32_t CXFA_Text::GetMaxChars() {
|
| + return m_pNode->GetInteger(XFA_ATTRIBUTE_MaxChars);
|
| +}
|
| +void CXFA_Text::GetRid(CFX_WideStringC& wsRid) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Rid, wsRid);
|
| +}
|
| +void CXFA_Text::GetContent(CFX_WideString& wsText) {
|
| + m_pNode->TryContent(wsText);
|
| +}
|
| +void CXFA_Text::SetContent(CFX_WideString wsText, FX_BOOL bNotify) {
|
| + CFX_WideString wsFormatValue(wsText);
|
| + CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData();
|
| + if (pContainerWidgetData) {
|
| + pContainerWidgetData->GetFormatDataValue(wsText, wsFormatValue);
|
| + }
|
| + m_pNode->SetContent(wsText, wsFormatValue, bNotify);
|
| +}
|
| +FX_BOOL CXFA_Text::SetName(const CFX_WideString& wsName) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Name, wsName);
|
| +}
|
| +FX_BOOL CXFA_Text::SetMaxChars(int32_t iMaxChars) {
|
| + return m_pNode->SetInteger(XFA_ATTRIBUTE_MaxChars, iMaxChars);
|
| +}
|
| +FX_BOOL CXFA_Text::SetRid(const CFX_WideString& wsRid) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Rid, wsRid);
|
| +}
|
| +CXFA_ExData::CXFA_ExData(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +void CXFA_ExData::GetContentType(CFX_WideStringC& wsContentType) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_ContentType, wsContentType);
|
| +}
|
| +void CXFA_ExData::GetHref(CFX_WideStringC& wsHref) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Href, wsHref);
|
| +}
|
| +int32_t CXFA_ExData::GetMaxLength() {
|
| + return m_pNode->GetInteger(XFA_ATTRIBUTE_MaxLength);
|
| +}
|
| +void CXFA_ExData::GetRid(CFX_WideStringC& wsRid) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Rid, wsRid);
|
| +}
|
| +int32_t CXFA_ExData::GetTransferEncoding() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_TransferEncoding);
|
| +}
|
| +void CXFA_ExData::GetContent(CFX_WideString& wsText) {
|
| + m_pNode->TryContent(wsText);
|
| +}
|
| +FX_BOOL CXFA_ExData::SetContentType(const CFX_WideString& wsContentType) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_ContentType, wsContentType);
|
| +}
|
| +FX_BOOL CXFA_ExData::SetHref(const CFX_WideString& wsHref) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Href, wsHref);
|
| +}
|
| +FX_BOOL CXFA_ExData::SetMaxLength(int32_t iMaxLength) {
|
| + return m_pNode->SetInteger(XFA_ATTRIBUTE_MaxLength, iMaxLength);
|
| +}
|
| +FX_BOOL CXFA_ExData::SetRid(const CFX_WideString& wsRid) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Rid, wsRid);
|
| +}
|
| +FX_BOOL CXFA_ExData::SetTransferEncoding(int32_t iTransferEncoding) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_TransferEncoding,
|
| + (XFA_ATTRIBUTEENUM)iTransferEncoding);
|
| +}
|
| +FX_BOOL CXFA_ExData::SetContent(const CFX_WideString& wsText,
|
| + FX_BOOL bNotify,
|
| + FX_BOOL bScriptModify,
|
| + FX_BOOL bSyncData) {
|
| + CFX_WideString wsFormatValue(wsText);
|
| + CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData();
|
| + if (pContainerWidgetData) {
|
| + pContainerWidgetData->GetFormatDataValue(wsText, wsFormatValue);
|
| + }
|
| + return m_pNode->SetContent(wsText, wsFormatValue, bNotify, bScriptModify,
|
| + bSyncData);
|
| +}
|
| +CXFA_Image::CXFA_Image(CXFA_Node* pNode, FX_BOOL bDefValue)
|
| + : CXFA_Data(pNode), m_bDefValue(bDefValue) {}
|
| +int32_t CXFA_Image::GetAspect() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Aspect);
|
| +}
|
| +FX_BOOL CXFA_Image::GetContentType(CFX_WideString& wsContentType) {
|
| + return m_pNode->TryCData(XFA_ATTRIBUTE_ContentType, wsContentType);
|
| +}
|
| +FX_BOOL CXFA_Image::GetHref(CFX_WideString& wsHref) {
|
| + if (m_bDefValue) {
|
| + return m_pNode->TryCData(XFA_ATTRIBUTE_Href, wsHref);
|
| + }
|
| + return m_pNode->GetAttribute(FX_WSTRC(L"href"), wsHref);
|
| +}
|
| +int32_t CXFA_Image::GetTransferEncoding() {
|
| + if (m_bDefValue) {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_TransferEncoding);
|
| + }
|
| + return XFA_ATTRIBUTEENUM_Base64;
|
| +}
|
| +FX_BOOL CXFA_Image::GetContent(CFX_WideString& wsText) {
|
| + return m_pNode->TryContent(wsText);
|
| +}
|
| +FX_BOOL CXFA_Image::SetAspect(int32_t iAspect) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Aspect, (XFA_ATTRIBUTEENUM)iAspect);
|
| +}
|
| +FX_BOOL CXFA_Image::SetContentType(const CFX_WideString& wsContentType) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_ContentType, wsContentType);
|
| +}
|
| +FX_BOOL CXFA_Image::SetHref(const CFX_WideString& wsHref) {
|
| + if (m_bDefValue) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Href, wsHref);
|
| + }
|
| + return m_pNode->SetAttribute(XFA_ATTRIBUTE_Href, wsHref);
|
| +}
|
| +FX_BOOL CXFA_Image::SetTransferEncoding(int32_t iTransferEncoding) {
|
| + if (m_bDefValue) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_TransferEncoding,
|
| + (XFA_ATTRIBUTEENUM)iTransferEncoding);
|
| + }
|
| + return TRUE;
|
| +}
|
| +FX_BOOL CXFA_Image::SetContent(const CFX_WideString& wsText) {
|
| + CFX_WideString wsFormatValue(wsText);
|
| + CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData();
|
| + if (pContainerWidgetData) {
|
| + pContainerWidgetData->GetFormatDataValue(wsText, wsFormatValue);
|
| + }
|
| + return m_pNode->SetContent(wsText, wsFormatValue);
|
| +}
|
| +CXFA_Calculate::CXFA_Calculate(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +int32_t CXFA_Calculate::GetOverride() {
|
| + XFA_ATTRIBUTEENUM eAtt = XFA_ATTRIBUTEENUM_Error;
|
| + m_pNode->TryEnum(XFA_ATTRIBUTE_Override, eAtt, FALSE);
|
| + return eAtt;
|
| +}
|
| +CXFA_Script CXFA_Calculate::GetScript() {
|
| + return m_pNode->GetChild(0, XFA_ELEMENT_Script);
|
| +}
|
| +void CXFA_Calculate::GetMessageText(CFX_WideString& wsMessage) {
|
| + if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Message)) {
|
| + CXFA_Text text(pNode->GetChild(0, XFA_ELEMENT_Text));
|
| + if (text) {
|
| + text.GetContent(wsMessage);
|
| + }
|
| + }
|
| +}
|
| +FX_BOOL CXFA_Calculate::SetOverride(int32_t iOverride) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Override, (XFA_ATTRIBUTEENUM)iOverride);
|
| +}
|
| +FX_BOOL CXFA_Calculate::SetMessageText(const CFX_WideString& wsMessage) {
|
| + if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Message)) {
|
| + CXFA_Node* pChildNode = pNode->GetProperty(0, XFA_ELEMENT_Text);
|
| + return pChildNode->SetContent(wsMessage, wsMessage);
|
| + }
|
| + return FALSE;
|
| +}
|
| +CXFA_Validate::CXFA_Validate(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +int32_t CXFA_Validate::GetFormatTest() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_FormatTest);
|
| +}
|
| +FX_BOOL CXFA_Validate::SetTestValue(int32_t iType,
|
| + CFX_WideString& wsValue,
|
| + XFA_ATTRIBUTEENUM eName) {
|
| + XFA_LPCATTRIBUTEENUMINFO pInfo = XFA_GetAttributeEnumByName(wsValue);
|
| + if (pInfo) {
|
| + eName = pInfo->eName;
|
| + }
|
| + m_pNode->SetEnum((XFA_ATTRIBUTE)iType, eName, FALSE);
|
| + return TRUE;
|
| +}
|
| +FX_BOOL CXFA_Validate::SetFormatTest(CFX_WideString wsValue) {
|
| + return SetTestValue(XFA_ATTRIBUTE_FormatTest, wsValue,
|
| + XFA_ATTRIBUTEENUM_Warning);
|
| +}
|
| +FX_BOOL CXFA_Validate::SetNullTest(CFX_WideString wsValue) {
|
| + return SetTestValue(XFA_ATTRIBUTE_NullTest, wsValue,
|
| + XFA_ATTRIBUTEENUM_Disabled);
|
| +}
|
| +int32_t CXFA_Validate::GetNullTest() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_NullTest);
|
| +}
|
| +int32_t CXFA_Validate::GetScriptTest() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_ScriptTest);
|
| +}
|
| +void CXFA_Validate::GetMessageText(CFX_WideString& wsMessage,
|
| + const CFX_WideStringC& wsMessageType) {
|
| + if (CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Message, FALSE)) {
|
| + CXFA_Node* pItemNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pItemNode;
|
| + pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pItemNode->GetClassID() != XFA_ELEMENT_Text) {
|
| + continue;
|
| + }
|
| + CFX_WideStringC wsName;
|
| + pItemNode->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| + if (wsName.IsEmpty() || wsName == wsMessageType) {
|
| + pItemNode->TryContent(wsMessage);
|
| + return;
|
| + }
|
| + }
|
| + }
|
| +}
|
| +void CXFA_Validate::SetFormatMessageText(CFX_WideString wsMessage) {
|
| + SetMessageText(wsMessage, FX_WSTRC(L"formatTest"));
|
| +}
|
| +void CXFA_Validate::GetFormatMessageText(CFX_WideString& wsMessage) {
|
| + GetMessageText(wsMessage, FX_WSTRC(L"formatTest"));
|
| +}
|
| +void CXFA_Validate::SetNullMessageText(CFX_WideString wsMessage) {
|
| + SetMessageText(wsMessage, FX_WSTRC(L"nullTest"));
|
| +}
|
| +void CXFA_Validate::GetNullMessageText(CFX_WideString& wsMessage) {
|
| + GetMessageText(wsMessage, FX_WSTRC(L"nullTest"));
|
| +}
|
| +void CXFA_Validate::SetMessageText(CFX_WideString& wsMessage,
|
| + const CFX_WideStringC& wsMessageType) {
|
| + if (CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Message, TRUE)) {
|
| + CXFA_Node* pItemNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pItemNode;
|
| + pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pItemNode->GetClassID() != XFA_ELEMENT_Text) {
|
| + continue;
|
| + }
|
| + CFX_WideStringC wsName;
|
| + pItemNode->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| + if (wsName.IsEmpty() || wsName == wsMessageType) {
|
| + pItemNode->SetContent(wsMessage, wsMessage, FALSE);
|
| + return;
|
| + }
|
| + }
|
| + CXFA_Node* pTextNode = pNode->CreateSamePacketNode(XFA_ELEMENT_Text);
|
| + pNode->InsertChild(pTextNode);
|
| + pTextNode->SetCData(XFA_ATTRIBUTE_Name, wsMessageType, FALSE);
|
| + pTextNode->SetContent(wsMessage, wsMessage, FALSE);
|
| + }
|
| +}
|
| +void CXFA_Validate::GetScriptMessageText(CFX_WideString& wsMessage) {
|
| + GetMessageText(wsMessage, FX_WSTRC(L"scriptTest"));
|
| +}
|
| +void CXFA_Validate::SetScriptMessageText(CFX_WideString wsMessage) {
|
| + SetMessageText(wsMessage, FX_WSTRC(L"scriptTest"));
|
| +}
|
| +void CXFA_Validate::GetPicture(CFX_WideString& wsPicture) {
|
| + if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Picture)) {
|
| + pNode->TryContent(wsPicture);
|
| + }
|
| +}
|
| +CXFA_Script CXFA_Validate::GetScript() {
|
| + return m_pNode->GetChild(0, XFA_ELEMENT_Script);
|
| +}
|
| +CXFA_Variables::CXFA_Variables(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +int32_t CXFA_Variables::CountScripts() {
|
| + return m_pNode->CountChildren(XFA_ELEMENT_Script);
|
| +}
|
| +CXFA_Script CXFA_Variables::GetScript(int32_t nIndex) {
|
| + return m_pNode->GetChild(nIndex, XFA_ELEMENT_Script);
|
| +}
|
| +CXFA_Bind::CXFA_Bind(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +int32_t CXFA_Bind::GetMatch() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Match);
|
| +}
|
| +void CXFA_Bind::GetRef(CFX_WideStringC& wsRef) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| +}
|
| +void CXFA_Bind::GetPicture(CFX_WideString& wsPicture) {
|
| + if (CXFA_Node* pPicture = m_pNode->GetChild(0, XFA_ELEMENT_Picture)) {
|
| + pPicture->TryContent(wsPicture);
|
| + }
|
| +}
|
| +FX_BOOL CXFA_Bind::SetMatch(int32_t iMatch) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Match, (XFA_ATTRIBUTEENUM)iMatch);
|
| +}
|
| +FX_BOOL CXFA_Bind::SetRef(const CFX_WideString& wsRef) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| +}
|
| +FX_BOOL CXFA_Bind::SetPicture(const CFX_WideString& wsPicture) {
|
| + if (CXFA_Node* pPicture = m_pNode->GetChild(0, XFA_ELEMENT_Picture)) {
|
| + return pPicture->SetContent(wsPicture, wsPicture);
|
| + }
|
| + return FALSE;
|
| +}
|
| +CXFA_Assist::CXFA_Assist(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +CXFA_ToolTip CXFA_Assist::GetToolTip() {
|
| + return m_pNode->GetChild(0, XFA_ELEMENT_ToolTip);
|
| +}
|
| +CXFA_ToolTip::CXFA_ToolTip(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +FX_BOOL CXFA_ToolTip::GetTip(CFX_WideString& wsTip) {
|
| + return m_pNode->TryContent(wsTip);
|
| +}
|
| +FX_BOOL CXFA_ToolTip::SetTip(const CFX_WideString& wsTip) {
|
| + return m_pNode->SetContent(wsTip, wsTip);
|
| +}
|
| +CXFA_BindItems::CXFA_BindItems(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +void CXFA_BindItems::GetConnection(CFX_WideStringC& wsConnection) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Connection, wsConnection);
|
| +}
|
| +void CXFA_BindItems::GetLabelRef(CFX_WideStringC& wsLabelRef) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_LabelRef, wsLabelRef);
|
| +}
|
| +void CXFA_BindItems::GetValueRef(CFX_WideStringC& wsValueRef) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_ValueRef, wsValueRef);
|
| +}
|
| +void CXFA_BindItems::GetRef(CFX_WideStringC& wsRef) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| +}
|
| +FX_BOOL CXFA_BindItems::SetConnection(const CFX_WideString& wsConnection) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Connection, wsConnection);
|
| +}
|
| +FX_BOOL CXFA_BindItems::SetLabelRef(const CFX_WideString& wsLabelRef) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_LabelRef, wsLabelRef);
|
| +}
|
| +FX_BOOL CXFA_BindItems::SetValueRef(const CFX_WideString& wsValueRef) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_ValueRef, wsValueRef);
|
| +}
|
| +FX_BOOL CXFA_BindItems::SetRef(const CFX_WideString& wsRef) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Ref, wsRef);
|
| +}
|
| +int32_t CXFA_Box::GetBreak() const {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Close;
|
| + }
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Break);
|
| +}
|
| +int32_t CXFA_Box::GetHand() const {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Even;
|
| + }
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Hand);
|
| +}
|
| +int32_t CXFA_Box::GetPresence() const {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Hidden;
|
| + }
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Presence);
|
| +}
|
| +int32_t CXFA_Box::CountCorners() const {
|
| + if (!m_pNode) {
|
| + return 0;
|
| + }
|
| + return m_pNode->CountChildren(XFA_ELEMENT_Corner);
|
| +}
|
| +CXFA_Corner CXFA_Box::GetCorner(int32_t nIndex) const {
|
| + if (!m_pNode) {
|
| + return NULL;
|
| + }
|
| + return CXFA_Corner(
|
| + m_pNode->GetProperty(nIndex, XFA_ELEMENT_Corner, nIndex == 0));
|
| +}
|
| +int32_t CXFA_Box::CountEdges() const {
|
| + if (!m_pNode) {
|
| + return 0;
|
| + }
|
| + return m_pNode->CountChildren(XFA_ELEMENT_Edge);
|
| +}
|
| +CXFA_Edge CXFA_Box::GetEdge(int32_t nIndex) const {
|
| + if (!m_pNode) {
|
| + return NULL;
|
| + }
|
| + return CXFA_Edge(m_pNode->GetProperty(nIndex, XFA_ELEMENT_Edge, nIndex == 0));
|
| +}
|
| +static void XFA_BOX_GetStrokes(CXFA_Node* pNode,
|
| + CXFA_StrokeArray& strokes,
|
| + FX_BOOL bNULL) {
|
| + strokes.RemoveAll();
|
| + if (!pNode) {
|
| + return;
|
| + }
|
| + strokes.SetSize(8);
|
| + int32_t i, j;
|
| + for (i = 0, j = 0; i < 4; i++) {
|
| + CXFA_Corner corner =
|
| + CXFA_Corner(pNode->GetProperty(i, XFA_ELEMENT_Corner, i == 0));
|
| + if (corner.IsExistInXML() || i == 0) {
|
| + strokes.SetAt(j, corner);
|
| + } else if (bNULL) {
|
| + strokes.SetAt(j, NULL);
|
| + } else if (i == 1) {
|
| + strokes.SetAt(j, strokes[0]);
|
| + } else if (i == 2) {
|
| + strokes.SetAt(j, strokes[0]);
|
| + } else {
|
| + strokes.SetAt(j, strokes[2]);
|
| + }
|
| + j++;
|
| + CXFA_Edge edge = CXFA_Edge(pNode->GetProperty(i, XFA_ELEMENT_Edge, i == 0));
|
| + if (edge.IsExistInXML() || i == 0) {
|
| + strokes.SetAt(j, edge);
|
| + } else if (bNULL) {
|
| + strokes.SetAt(j, NULL);
|
| + } else if (i == 1) {
|
| + strokes.SetAt(j, strokes[1]);
|
| + } else if (i == 2) {
|
| + strokes.SetAt(j, strokes[1]);
|
| + } else {
|
| + strokes.SetAt(j, strokes[3]);
|
| + }
|
| + j++;
|
| + }
|
| +}
|
| +void CXFA_Box::GetStrokes(CXFA_StrokeArray& strokes) const {
|
| + XFA_BOX_GetStrokes(m_pNode, strokes, FALSE);
|
| +}
|
| +FX_BOOL CXFA_Box::IsCircular() const {
|
| + if (!m_pNode) {
|
| + return FALSE;
|
| + }
|
| + return m_pNode->GetBoolean(XFA_ATTRIBUTE_Circular);
|
| +}
|
| +FX_BOOL CXFA_Box::GetStartAngle(FX_FLOAT& fStartAngle) const {
|
| + fStartAngle = 0;
|
| + if (!m_pNode) {
|
| + return FALSE;
|
| + }
|
| + CXFA_Measurement ms;
|
| + FX_BOOL bRet = m_pNode->TryMeasure(XFA_ATTRIBUTE_StartAngle, ms, FALSE);
|
| + if (bRet) {
|
| + fStartAngle = ms.GetValue();
|
| + }
|
| + return bRet;
|
| +}
|
| +FX_BOOL CXFA_Box::GetSweepAngle(FX_FLOAT& fSweepAngle) const {
|
| + fSweepAngle = 360;
|
| + if (!m_pNode) {
|
| + return FALSE;
|
| + }
|
| + CXFA_Measurement ms;
|
| + FX_BOOL bRet = m_pNode->TryMeasure(XFA_ATTRIBUTE_SweepAngle, ms, FALSE);
|
| + if (bRet) {
|
| + fSweepAngle = ms.GetValue();
|
| + }
|
| + return bRet;
|
| +}
|
| +CXFA_Fill CXFA_Box::GetFill(FX_BOOL bModified) const {
|
| + if (!m_pNode) {
|
| + return NULL;
|
| + }
|
| + CXFA_Node* pFillNode = m_pNode->GetProperty(0, XFA_ELEMENT_Fill, bModified);
|
| + return CXFA_Fill(pFillNode);
|
| +}
|
| +CXFA_Margin CXFA_Box::GetMargin() const {
|
| + if (!m_pNode) {
|
| + return NULL;
|
| + }
|
| + return CXFA_Margin(m_pNode->GetChild(0, XFA_ELEMENT_Margin));
|
| +}
|
| +static FX_BOOL XFA_BOX_SameStyles(const CXFA_StrokeArray& strokes) {
|
| + int32_t iCount = strokes.GetSize();
|
| + if (iCount < 1) {
|
| + return TRUE;
|
| + }
|
| + CXFA_Stroke stroke1 = strokes[0];
|
| + for (int32_t i = 1; i < iCount; i++) {
|
| + CXFA_Stroke stroke2 = strokes[i];
|
| + if (!stroke2.IsExistInXML()) {
|
| + continue;
|
| + }
|
| + if (!stroke1.IsExistInXML()) {
|
| + stroke1 = stroke2;
|
| + } else if (!stroke1.SameStyles(stroke2)) {
|
| + return FALSE;
|
| + }
|
| + }
|
| + return TRUE;
|
| +}
|
| +FX_BOOL CXFA_Box::SameStyles() const {
|
| + if (IsArc()) {
|
| + return TRUE;
|
| + }
|
| + CXFA_StrokeArray strokes;
|
| + XFA_BOX_GetStrokes(m_pNode, strokes, TRUE);
|
| + return XFA_BOX_SameStyles(strokes);
|
| +}
|
| +static int32_t XFA_BOX_3DStyle(const CXFA_StrokeArray& strokes,
|
| + CXFA_Stroke& stroke) {
|
| + int32_t iCount = strokes.GetSize();
|
| + if (iCount < 1) {
|
| + return 0;
|
| + }
|
| + stroke = strokes[0];
|
| + for (int32_t i = 1; i < iCount; i++) {
|
| + CXFA_Stroke find = strokes[i];
|
| + if (!find.IsExistInXML()) {
|
| + continue;
|
| + }
|
| + if (!stroke.IsExistInXML()) {
|
| + stroke = find;
|
| + } else if (stroke.GetStrokeType() != find.GetStrokeType()) {
|
| + stroke = find;
|
| + break;
|
| + }
|
| + }
|
| + int32_t iType = stroke.GetStrokeType();
|
| + if (iType == XFA_ATTRIBUTEENUM_Lowered || iType == XFA_ATTRIBUTEENUM_Raised ||
|
| + iType == XFA_ATTRIBUTEENUM_Etched ||
|
| + iType == XFA_ATTRIBUTEENUM_Embossed) {
|
| + return iType;
|
| + }
|
| + return 0;
|
| +}
|
| +int32_t CXFA_Box::Get3DStyle(FX_BOOL& bVisible, FX_FLOAT& fThickness) const {
|
| + if (IsArc()) {
|
| + return 0;
|
| + }
|
| + CXFA_StrokeArray strokes;
|
| + XFA_BOX_GetStrokes(m_pNode, strokes, TRUE);
|
| + CXFA_Stroke stroke(NULL);
|
| + int32_t iType = XFA_BOX_3DStyle(strokes, stroke);
|
| + if (iType) {
|
| + bVisible = stroke.IsVisible();
|
| + fThickness = stroke.GetThickness();
|
| + }
|
| + return iType;
|
| +}
|
| +int32_t CXFA_Stroke::GetPresence() const {
|
| + return m_pNode ? m_pNode->GetEnum(XFA_ATTRIBUTE_Presence)
|
| + : XFA_ATTRIBUTEENUM_Invisible;
|
| +}
|
| +int32_t CXFA_Stroke::GetCapType() const {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Square;
|
| + }
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Cap);
|
| +}
|
| +int32_t CXFA_Stroke::GetStrokeType() const {
|
| + return m_pNode ? m_pNode->GetEnum(XFA_ATTRIBUTE_Stroke)
|
| + : XFA_ATTRIBUTEENUM_Solid;
|
| +}
|
| +FX_FLOAT CXFA_Stroke::GetThickness() const {
|
| + return GetMSThickness().ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +CXFA_Measurement CXFA_Stroke::GetMSThickness() const {
|
| + return m_pNode ? m_pNode->GetMeasure(XFA_ATTRIBUTE_Thickness)
|
| + : XFA_GetAttributeDefaultValue_Measure(XFA_ELEMENT_Edge,
|
| + XFA_ATTRIBUTE_Thickness,
|
| + XFA_XDPPACKET_Form);
|
| +}
|
| +void CXFA_Stroke::SetThickness(FX_FLOAT fThickness) {
|
| + if (!m_pNode) {
|
| + return;
|
| + }
|
| + CXFA_Measurement thickness(fThickness, XFA_UNIT_Pt);
|
| + m_pNode->SetMeasure(XFA_ATTRIBUTE_Thickness, thickness);
|
| +}
|
| +void CXFA_Stroke::SetMSThickness(CXFA_Measurement msThinkness) {
|
| + if (!m_pNode) {
|
| + return;
|
| + }
|
| + m_pNode->SetMeasure(XFA_ATTRIBUTE_Thickness, msThinkness);
|
| +}
|
| +FX_ARGB CXFA_Stroke::GetColor() const {
|
| + if (!m_pNode) {
|
| + return 0xFF000000;
|
| + }
|
| + CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Color);
|
| + if (!pNode) {
|
| + return 0xFF000000;
|
| + }
|
| + CFX_WideStringC wsColor;
|
| + pNode->TryCData(XFA_ATTRIBUTE_Value, wsColor);
|
| + return XFA_WStringToColor(wsColor);
|
| +}
|
| +void CXFA_Stroke::SetColor(FX_ARGB argb) {
|
| + if (!m_pNode) {
|
| + return;
|
| + }
|
| + CXFA_Node* pNode = m_pNode->GetProperty(0, XFA_ELEMENT_Color);
|
| + CFX_WideString wsColor;
|
| + int a, r, g, b;
|
| + ArgbDecode(argb, a, r, g, b);
|
| + wsColor.Format(L"%d,%d,%d", r, g, b);
|
| + pNode->SetCData(XFA_ATTRIBUTE_Value, wsColor);
|
| +}
|
| +int32_t CXFA_Stroke::GetJoinType() const {
|
| + return m_pNode ? m_pNode->GetEnum(XFA_ATTRIBUTE_Join)
|
| + : XFA_ATTRIBUTEENUM_Square;
|
| +}
|
| +FX_BOOL CXFA_Stroke::IsInverted() const {
|
| + return m_pNode ? m_pNode->GetBoolean(XFA_ATTRIBUTE_Inverted) : FALSE;
|
| +}
|
| +FX_FLOAT CXFA_Stroke::GetRadius() const {
|
| + return m_pNode ? m_pNode->GetMeasure(XFA_ATTRIBUTE_Radius).ToUnit(XFA_UNIT_Pt)
|
| + : 0;
|
| +}
|
| +FX_BOOL CXFA_Stroke::SameStyles(CXFA_Stroke stroke, FX_DWORD dwFlags) const {
|
| + if (m_pNode == (CXFA_Node*)stroke) {
|
| + return TRUE;
|
| + }
|
| + if (FXSYS_fabs(GetThickness() - stroke.GetThickness()) >= 0.01f) {
|
| + return FALSE;
|
| + }
|
| + if ((dwFlags & XFA_STROKE_SAMESTYLE_NoPresence) == 0 &&
|
| + IsVisible() != stroke.IsVisible()) {
|
| + return FALSE;
|
| + }
|
| + if (GetStrokeType() != stroke.GetStrokeType()) {
|
| + return FALSE;
|
| + }
|
| + if (GetColor() != stroke.GetColor()) {
|
| + return FALSE;
|
| + }
|
| + if ((dwFlags & XFA_STROKE_SAMESTYLE_Corner) != 0 &&
|
| + FXSYS_fabs(GetRadius() - stroke.GetRadius()) >= 0.01f) {
|
| + return FALSE;
|
| + }
|
| + return TRUE;
|
| +}
|
| +FX_FLOAT XFA_GetEdgeThickness(const CXFA_StrokeArray& strokes,
|
| + FX_BOOL b3DStyle,
|
| + int32_t nIndex) {
|
| + FX_FLOAT fThickness = 0;
|
| + {
|
| + if (strokes[nIndex * 2 + 1].GetPresence() == XFA_ATTRIBUTEENUM_Visible) {
|
| + if (nIndex == 0) {
|
| + fThickness += 2.5f;
|
| + }
|
| + fThickness += strokes[nIndex * 2 + 1].GetThickness() * (b3DStyle ? 4 : 2);
|
| + }
|
| + }
|
| + return fThickness;
|
| +}
|
| +CXFA_WidgetData::CXFA_WidgetData(CXFA_Node* pNode)
|
| + : CXFA_Data(pNode),
|
| + m_bIsNull(TRUE),
|
| + m_bPreNull(TRUE),
|
| + m_pUiChildNode(NULL),
|
| + m_eUIType(XFA_ELEMENT_UNKNOWN) {}
|
| +CXFA_Node* CXFA_WidgetData::GetUIChild() {
|
| + if (m_eUIType == XFA_ELEMENT_UNKNOWN) {
|
| + m_pUiChildNode = XFA_CreateUIChild(m_pNode, m_eUIType);
|
| + }
|
| + return m_pUiChildNode;
|
| +}
|
| +XFA_ELEMENT CXFA_WidgetData::GetUIType() {
|
| + GetUIChild();
|
| + return m_eUIType;
|
| +}
|
| +CFX_WideString CXFA_WidgetData::GetRawValue() {
|
| + return m_pNode->GetContent();
|
| +}
|
| +int32_t CXFA_WidgetData::GetAccess(FX_BOOL bTemplate) {
|
| + if (bTemplate) {
|
| + CXFA_Node* pNode = m_pNode->GetTemplateNode();
|
| + if (pNode) {
|
| + return pNode->GetEnum(XFA_ATTRIBUTE_Access);
|
| + }
|
| + return XFA_ATTRIBUTEENUM_Open;
|
| + }
|
| + CXFA_Node* pNode = m_pNode;
|
| + while (pNode) {
|
| + int32_t iAcc = pNode->GetEnum(XFA_ATTRIBUTE_Access);
|
| + if (iAcc != XFA_ATTRIBUTEENUM_Open) {
|
| + return iAcc;
|
| + }
|
| + pNode =
|
| + pNode->GetNodeItem(XFA_NODEITEM_Parent, XFA_OBJECTTYPE_ContainerNode);
|
| + }
|
| + return XFA_ATTRIBUTEENUM_Open;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetAccessKey(CFX_WideStringC& wsAccessKey) {
|
| + return m_pNode->TryCData(XFA_ATTRIBUTE_AccessKey, wsAccessKey);
|
| +}
|
| +int32_t CXFA_WidgetData::GetAnchorType() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_AnchorType);
|
| +}
|
| +int32_t CXFA_WidgetData::GetColSpan() {
|
| + return m_pNode->GetInteger(XFA_ATTRIBUTE_ColSpan);
|
| +}
|
| +int32_t CXFA_WidgetData::GetPresence() {
|
| + return m_pNode->GetEnum(XFA_ATTRIBUTE_Presence);
|
| + CXFA_Node* pNode = m_pNode;
|
| + while (pNode && pNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode) {
|
| + int32_t iAcc = pNode->GetEnum(XFA_ATTRIBUTE_Presence);
|
| + if (iAcc != XFA_ATTRIBUTEENUM_Visible) {
|
| + return iAcc;
|
| + }
|
| + pNode = pNode->GetNodeItem(XFA_NODEITEM_Parent);
|
| + }
|
| + return XFA_ATTRIBUTEENUM_Visible;
|
| +}
|
| +int32_t CXFA_WidgetData::GetRotate() {
|
| + CXFA_Measurement ms;
|
| + if (!m_pNode->TryMeasure(XFA_ATTRIBUTE_Rotate, ms, FALSE)) {
|
| + return 0;
|
| + }
|
| + int32_t iRotate = FXSYS_round(ms.GetValue());
|
| + iRotate = XFA_MapRotation(iRotate);
|
| + return iRotate / 90 * 90;
|
| +}
|
| +CXFA_Border CXFA_WidgetData::GetBorder(FX_BOOL bModified) {
|
| + return CXFA_Border(m_pNode->GetProperty(0, XFA_ELEMENT_Border, bModified));
|
| +}
|
| +CXFA_Caption CXFA_WidgetData::GetCaption(FX_BOOL bModified) {
|
| + return CXFA_Caption(m_pNode->GetProperty(0, XFA_ELEMENT_Caption, bModified));
|
| +}
|
| +CXFA_Font CXFA_WidgetData::GetFont(FX_BOOL bModified) {
|
| + return CXFA_Font(m_pNode->GetProperty(0, XFA_ELEMENT_Font, bModified));
|
| +}
|
| +CXFA_Margin CXFA_WidgetData::GetMargin(FX_BOOL bModified) {
|
| + return CXFA_Margin(m_pNode->GetProperty(0, XFA_ELEMENT_Margin, bModified));
|
| +}
|
| +CXFA_Para CXFA_WidgetData::GetPara(FX_BOOL bModified) {
|
| + return CXFA_Para(m_pNode->GetProperty(0, XFA_ELEMENT_Para, bModified));
|
| +}
|
| +CXFA_Keep CXFA_WidgetData::GetKeep(FX_BOOL bModified) {
|
| + return CXFA_Keep(m_pNode->GetProperty(0, XFA_ELEMENT_Keep, bModified),
|
| + m_pNode);
|
| +}
|
| +void CXFA_WidgetData::GetEventList(CXFA_NodeArray& events) {
|
| + m_pNode->GetNodeList(events, 0, XFA_ELEMENT_Event);
|
| +}
|
| +int32_t CXFA_WidgetData::GetEventByActivity(int32_t iActivity,
|
| + CXFA_NodeArray& events,
|
| + FX_BOOL bIsFormReady) {
|
| + CXFA_NodeArray allEvents;
|
| + GetEventList(allEvents);
|
| + int32_t iCount = allEvents.GetSize();
|
| + for (int32_t i = 0; i < iCount; i++) {
|
| + CXFA_Event event(allEvents[i]);
|
| + if (event.GetActivity() == iActivity) {
|
| + if (iActivity == XFA_ATTRIBUTEENUM_Ready) {
|
| + CFX_WideStringC wsRef;
|
| + event.GetRef(wsRef);
|
| + if (bIsFormReady) {
|
| + if (wsRef == CFX_WideStringC(L"$form")) {
|
| + events.Add(allEvents[i]);
|
| + }
|
| + } else {
|
| + if (wsRef == CFX_WideStringC(L"$layout")) {
|
| + events.Add(allEvents[i]);
|
| + }
|
| + }
|
| + } else {
|
| + events.Add(allEvents[i]);
|
| + }
|
| + }
|
| + }
|
| + return events.GetSize();
|
| +}
|
| +CXFA_Value CXFA_WidgetData::GetDefaultValue(FX_BOOL bModified) {
|
| + CXFA_Node* pTemNode = m_pNode->GetTemplateNode();
|
| + return pTemNode ? pTemNode->GetProperty(0, XFA_ELEMENT_Value, bModified)
|
| + : NULL;
|
| +}
|
| +CXFA_Value CXFA_WidgetData::GetFormValue(FX_BOOL bModified) {
|
| + return m_pNode->GetProperty(0, XFA_ELEMENT_Value, bModified);
|
| +}
|
| +CXFA_Calculate CXFA_WidgetData::GetCalculate(FX_BOOL bModified) {
|
| + return m_pNode->GetProperty(0, XFA_ELEMENT_Calculate, bModified);
|
| +}
|
| +CXFA_Validate CXFA_WidgetData::GetValidate(FX_BOOL bModified) {
|
| + return m_pNode->GetProperty(0, XFA_ELEMENT_Validate, bModified);
|
| +}
|
| +CXFA_Variables CXFA_WidgetData::GetVariables(FX_BOOL bModified) {
|
| + return m_pNode->GetProperty(0, XFA_ELEMENT_Variables, bModified);
|
| +}
|
| +CXFA_Bind CXFA_WidgetData::GetBind(FX_BOOL bModified) {
|
| + return m_pNode->GetProperty(0, XFA_ELEMENT_Bind, bModified);
|
| +}
|
| +CXFA_Assist CXFA_WidgetData::GetAssist(FX_BOOL bModified) {
|
| + return m_pNode->GetProperty(0, XFA_ELEMENT_Assist, bModified);
|
| +}
|
| +void CXFA_WidgetData::GetRelevant(CFX_WideStringC& wsRelevant) {
|
| + m_pNode->TryCData(XFA_ATTRIBUTE_Relevant, wsRelevant);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetWidth(FX_FLOAT& fWidth) {
|
| + return TryMeasure(XFA_ATTRIBUTE_W, fWidth);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetHeight(FX_FLOAT& fHeight) {
|
| + return TryMeasure(XFA_ATTRIBUTE_H, fHeight);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetMinWidth(FX_FLOAT& fMinWidth) {
|
| + return TryMeasure(XFA_ATTRIBUTE_MinW, fMinWidth);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetMinHeight(FX_FLOAT& fMinHeight) {
|
| + return TryMeasure(XFA_ATTRIBUTE_MinH, fMinHeight);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetMaxWidth(FX_FLOAT& fMaxWidth) {
|
| + return TryMeasure(XFA_ATTRIBUTE_MaxW, fMaxWidth);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetMaxHeight(FX_FLOAT& fMaxHeight) {
|
| + return TryMeasure(XFA_ATTRIBUTE_MaxH, fMaxHeight);
|
| +}
|
| +CXFA_BindItems CXFA_WidgetData::GetBindItems() {
|
| + return m_pNode->GetChild(0, XFA_ELEMENT_BindItems);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetAccess(int32_t iAccess, FX_BOOL bNotify) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Access, (XFA_ATTRIBUTEENUM)iAccess,
|
| + bNotify);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetAccessKey(const CFX_WideString& wsAccessKey) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_AccessKey, wsAccessKey);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetAnchorType(int32_t iType) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_AnchorType, (XFA_ATTRIBUTEENUM)iType);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetColSpan(int32_t iColSpan) {
|
| + return m_pNode->SetInteger(XFA_ATTRIBUTE_ColSpan,
|
| + (XFA_ATTRIBUTEENUM)iColSpan);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetPresence(int32_t iPresence) {
|
| + return m_pNode->SetEnum(XFA_ATTRIBUTE_Presence, (XFA_ATTRIBUTEENUM)iPresence);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetRotate(int32_t iRotate) {
|
| + iRotate = XFA_MapRotation(iRotate);
|
| + CXFA_Measurement ms((FX_FLOAT)iRotate, XFA_UNIT_Angle);
|
| + return m_pNode->SetMeasure(XFA_ATTRIBUTE_Rotate, ms);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetRelevant(const CFX_WideString& wsRelevant) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Relevant, wsRelevant);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetStatus(FX_DWORD dwStatus) {
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetWidth(FX_FLOAT fWidth) {
|
| + return SetMeasure(XFA_ATTRIBUTE_W, fWidth);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetHeight(FX_FLOAT fHeight) {
|
| + return SetMeasure(XFA_ATTRIBUTE_H, fHeight);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetMinWidth(FX_FLOAT fMinWidth) {
|
| + return SetMeasure(XFA_ATTRIBUTE_MinW, fMinWidth);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetMinHeight(FX_FLOAT fMinHeight) {
|
| + return SetMeasure(XFA_ATTRIBUTE_MinH, fMinHeight);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetMaxWidth(FX_FLOAT fMaxWidth) {
|
| + return SetMeasure(XFA_ATTRIBUTE_MaxW, fMaxWidth);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetMaxHeight(FX_FLOAT fMaxHeight) {
|
| + return SetMeasure(XFA_ATTRIBUTE_MaxH, fMaxHeight);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetPos(FX_FLOAT x, FX_FLOAT y) {
|
| + return SetMeasure(XFA_ATTRIBUTE_X, x) && SetMeasure(XFA_ATTRIBUTE_Y, y);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetName(const CFX_WideString& wsName) {
|
| + return m_pNode->SetCData(XFA_ATTRIBUTE_Name, wsName);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetButtonHighlight(int32_t iButtonHighlight) {
|
| + CXFA_Node* pUiChildNode = GetUIChild();
|
| + return pUiChildNode->SetEnum(XFA_ATTRIBUTE_Highlight,
|
| + (XFA_ATTRIBUTEENUM)iButtonHighlight);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetButtonRollover(const CFX_WideString& wsRollover,
|
| + FX_BOOL bRichText) {
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetButtonDown(const CFX_WideString& wsDown,
|
| + FX_BOOL bRichText) {
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetCheckButtonShape(int32_t iCheckButtonShape) {
|
| + CXFA_Node* pUiChildNode = GetUIChild();
|
| + return pUiChildNode->SetEnum(XFA_ATTRIBUTE_Shape,
|
| + (XFA_ATTRIBUTEENUM)iCheckButtonShape);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetCheckButtonMark(int32_t iCheckButtonMark) {
|
| + CXFA_Node* pUiChildNode = GetUIChild();
|
| + return pUiChildNode->SetEnum(XFA_ATTRIBUTE_Mark,
|
| + (XFA_ATTRIBUTEENUM)iCheckButtonMark);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetCheckButtonSize(FX_FLOAT fCheckButtonMark) {
|
| + CXFA_Node* pUiChildNode = GetUIChild();
|
| + if (pUiChildNode) {
|
| + CXFA_Measurement ms(fCheckButtonMark, XFA_UNIT_Pt);
|
| + return pUiChildNode->SetMeasure(XFA_ATTRIBUTE_Size, ms);
|
| + }
|
| + return FALSE;
|
| +}
|
| +CXFA_Border CXFA_WidgetData::GetUIBorder(FX_BOOL bModified) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + return pUIChild ? pUIChild->GetProperty(0, XFA_ELEMENT_Border, bModified)
|
| + : NULL;
|
| +}
|
| +CXFA_Margin CXFA_WidgetData::GetUIMargin(FX_BOOL bModified) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + return pUIChild ? pUIChild->GetProperty(0, XFA_ELEMENT_Margin, bModified)
|
| + : NULL;
|
| +}
|
| +void CXFA_WidgetData::GetUIMargin(CFX_RectF& rtUIMargin) {
|
| + rtUIMargin.Reset();
|
| + CXFA_Margin mgUI = GetUIMargin();
|
| + if (!mgUI) {
|
| + return;
|
| + }
|
| + CXFA_Border border = GetUIBorder();
|
| + if (border && border.GetPresence() != XFA_ATTRIBUTEENUM_Visible) {
|
| + return;
|
| + }
|
| + FX_FLOAT fLeftInset, fTopInset, fRightInset, fBottomInset;
|
| + FX_BOOL bLeft = mgUI.GetLeftInset(fLeftInset);
|
| + FX_BOOL bTop = mgUI.GetTopInset(fTopInset);
|
| + FX_BOOL bRight = mgUI.GetRightInset(fRightInset);
|
| + FX_BOOL bBottom = mgUI.GetBottomInset(fBottomInset);
|
| + if (border) {
|
| + FX_BOOL bVisible = FALSE;
|
| + FX_FLOAT fThickness = 0;
|
| + border.Get3DStyle(bVisible, fThickness);
|
| + if (!bLeft || !bTop || !bRight || !bBottom) {
|
| + CXFA_StrokeArray strokes;
|
| + border.GetStrokes(strokes);
|
| + if (!bTop) {
|
| + fTopInset = XFA_GetEdgeThickness(strokes, bVisible, 0);
|
| + }
|
| + if (!bRight) {
|
| + fRightInset = XFA_GetEdgeThickness(strokes, bVisible, 1);
|
| + }
|
| + if (!bBottom) {
|
| + fBottomInset = XFA_GetEdgeThickness(strokes, bVisible, 2);
|
| + }
|
| + if (!bLeft) {
|
| + fLeftInset = XFA_GetEdgeThickness(strokes, bVisible, 3);
|
| + }
|
| + }
|
| + }
|
| + rtUIMargin.Set(fLeftInset, fTopInset, fRightInset, fBottomInset);
|
| +}
|
| +int32_t CXFA_WidgetData::GetButtonHighlight() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetEnum(XFA_ATTRIBUTE_Highlight);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Enum(
|
| + XFA_ELEMENT_Button, XFA_ATTRIBUTE_Highlight, XFA_XDPPACKET_Form);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetButtonRollover(CFX_WideString& wsRollover,
|
| + FX_BOOL& bRichText) {
|
| + if (CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| + CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + while (pText) {
|
| + CFX_WideStringC wsName;
|
| + pText->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| + if (wsName == FX_WSTRC(L"rollover")) {
|
| + pText->TryContent(wsRollover);
|
| + bRichText = pText->GetClassID() == XFA_ELEMENT_ExData;
|
| + return !wsRollover.IsEmpty();
|
| + }
|
| + pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetButtonDown(CFX_WideString& wsDown,
|
| + FX_BOOL& bRichText) {
|
| + if (CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| + CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + while (pText) {
|
| + CFX_WideStringC wsName;
|
| + pText->TryCData(XFA_ATTRIBUTE_Name, wsName);
|
| + if (wsName == FX_WSTRC(L"down")) {
|
| + pText->TryContent(wsDown);
|
| + bRichText = pText->GetClassID() == XFA_ELEMENT_ExData;
|
| + return !wsDown.IsEmpty();
|
| + }
|
| + pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +int32_t CXFA_WidgetData::GetCheckButtonShape() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetEnum(XFA_ATTRIBUTE_Shape);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Enum(
|
| + XFA_ELEMENT_CheckButton, XFA_ATTRIBUTE_Shape, XFA_XDPPACKET_Form);
|
| +}
|
| +int32_t CXFA_WidgetData::GetCheckButtonMark() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetEnum(XFA_ATTRIBUTE_Mark);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Enum(
|
| + XFA_ELEMENT_CheckButton, XFA_ATTRIBUTE_Mark, XFA_XDPPACKET_Form);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::IsRadioButton() {
|
| + if (CXFA_Node* pParent = m_pNode->GetNodeItem(XFA_NODEITEM_Parent)) {
|
| + return pParent->GetClassID() == XFA_ELEMENT_ExclGroup;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_FLOAT CXFA_WidgetData::GetCheckButtonSize() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetMeasure(XFA_ATTRIBUTE_Size).ToUnit(XFA_UNIT_Pt);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Measure(
|
| + XFA_ELEMENT_CheckButton, XFA_ATTRIBUTE_Size, XFA_XDPPACKET_Form)
|
| + .ToUnit(XFA_UNIT_Pt);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::IsAllowNeutral() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetBoolean(XFA_ATTRIBUTE_AllowNeutral);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Boolean(
|
| + XFA_ELEMENT_CheckButton, XFA_ATTRIBUTE_AllowNeutral, XFA_XDPPACKET_Form);
|
| +}
|
| +XFA_CHECKSTATE CXFA_WidgetData::GetCheckState() {
|
| + CFX_WideString wsValue = GetRawValue();
|
| + if (wsValue.IsEmpty()) {
|
| + return XFA_CHECKSTATE_Off;
|
| + }
|
| + if (CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| + CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + int32_t i = 0;
|
| + while (pText) {
|
| + CFX_WideString wsContent;
|
| + if (pText->TryContent(wsContent) && (wsContent == wsValue)) {
|
| + return (XFA_CHECKSTATE)i;
|
| + }
|
| + i++;
|
| + pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + }
|
| + return XFA_CHECKSTATE_Off;
|
| +}
|
| +void CXFA_WidgetData::SetCheckState(XFA_CHECKSTATE eCheckState,
|
| + FX_BOOL bNotify) {
|
| + if (CXFA_WidgetData exclGroup = GetExclGroupNode()) {
|
| + CFX_WideString wsValue;
|
| + if (eCheckState != XFA_CHECKSTATE_Off) {
|
| + if (CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| + CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + if (pText) {
|
| + pText->TryContent(wsValue);
|
| + }
|
| + }
|
| + }
|
| + CXFA_Node* pChild =
|
| + ((CXFA_Node*)exclGroup)->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pChild->GetClassID() != XFA_ELEMENT_Field) {
|
| + continue;
|
| + }
|
| + CXFA_Node* pItem = pChild->GetChild(0, XFA_ELEMENT_Items);
|
| + if (!pItem) {
|
| + continue;
|
| + }
|
| + CXFA_Node* pItemchild = pItem->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + if (!pItemchild) {
|
| + continue;
|
| + }
|
| + CFX_WideString text = pItemchild->GetContent();
|
| + CFX_WideString wsChildValue = text;
|
| + if (wsValue != text) {
|
| + pItemchild = pItemchild->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + if (pItemchild) {
|
| + wsChildValue = pItemchild->GetContent();
|
| + } else {
|
| + wsChildValue.Empty();
|
| + }
|
| + }
|
| + CXFA_WidgetData ch(pChild);
|
| + ch.SyncValue(wsChildValue, bNotify);
|
| + }
|
| + exclGroup.SyncValue(wsValue, bNotify);
|
| + } else {
|
| + CXFA_Node* pItems = m_pNode->GetChild(0, XFA_ELEMENT_Items);
|
| + if (!pItems) {
|
| + return;
|
| + }
|
| + int32_t i = -1;
|
| + CXFA_Node* pText = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + CFX_WideString wsContent;
|
| + while (pText) {
|
| + i++;
|
| + if (i == eCheckState) {
|
| + pText->TryContent(wsContent);
|
| + break;
|
| + }
|
| + pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + SyncValue(wsContent, bNotify);
|
| + }
|
| +}
|
| +CXFA_Node* CXFA_WidgetData::GetExclGroupNode() {
|
| + CXFA_Node* pExcl = (CXFA_Node*)m_pNode->GetNodeItem(XFA_NODEITEM_Parent);
|
| + if (!pExcl || pExcl->GetClassID() != XFA_ELEMENT_ExclGroup) {
|
| + return NULL;
|
| + }
|
| + return pExcl;
|
| +}
|
| +CXFA_Node* CXFA_WidgetData::GetSelectedMember() {
|
| + CXFA_Node* pSelectedMember = NULL;
|
| + CFX_WideString wsState = GetRawValue();
|
| + if (wsState.IsEmpty()) {
|
| + return pSelectedMember;
|
| + }
|
| + for (CXFA_Node* pNode =
|
| + (CXFA_Node*)m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + pNode != NULL; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + CXFA_WidgetData widgetData(pNode);
|
| + if (widgetData.GetCheckState() == XFA_CHECKSTATE_On) {
|
| + pSelectedMember = pNode;
|
| + break;
|
| + }
|
| + }
|
| + return pSelectedMember;
|
| +}
|
| +CXFA_Node* CXFA_WidgetData::SetSelectedMember(const CFX_WideStringC& wsName,
|
| + FX_BOOL bNotify) {
|
| + CXFA_Node* pSelectedMember = NULL;
|
| + FX_DWORD nameHash =
|
| + FX_HashCode_String_GetW(wsName.GetPtr(), wsName.GetLength());
|
| + for (CXFA_Node* pNode =
|
| + (CXFA_Node*)m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + pNode != NULL; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pNode->GetNameHash() == nameHash) {
|
| + CXFA_WidgetData widgetData(pNode);
|
| + widgetData.SetCheckState(XFA_CHECKSTATE_On, bNotify);
|
| + pSelectedMember = pNode;
|
| + break;
|
| + }
|
| + }
|
| + return pSelectedMember;
|
| +}
|
| +void CXFA_WidgetData::SetSelectedMemberByValue(const CFX_WideStringC& wsValue,
|
| + FX_BOOL bNotify,
|
| + FX_BOOL bScriptModify,
|
| + FX_BOOL bSyncData) {
|
| + CFX_WideString wsExclGroup;
|
| + for (CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild); pNode;
|
| + pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pNode->GetClassID() != XFA_ELEMENT_Field) {
|
| + continue;
|
| + }
|
| + CXFA_Node* pItem = pNode->GetChild(0, XFA_ELEMENT_Items);
|
| + if (!pItem) {
|
| + continue;
|
| + }
|
| + CXFA_Node* pItemchild = pItem->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + if (!pItemchild) {
|
| + continue;
|
| + }
|
| + CFX_WideString wsChildValue = pItemchild->GetContent();
|
| + if (wsValue != wsChildValue) {
|
| + pItemchild = pItemchild->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + if (pItemchild) {
|
| + wsChildValue = pItemchild->GetContent();
|
| + } else {
|
| + wsChildValue.Empty();
|
| + }
|
| + } else {
|
| + wsExclGroup = wsValue;
|
| + }
|
| + pNode->SetContent(wsChildValue, wsChildValue, bNotify, bScriptModify,
|
| + FALSE);
|
| + }
|
| + if (m_pNode) {
|
| + m_pNode->SetContent(wsExclGroup, wsExclGroup, bNotify, bScriptModify,
|
| + bSyncData);
|
| + }
|
| +}
|
| +CXFA_Node* CXFA_WidgetData::GetExclGroupFirstMember() {
|
| + CXFA_Node* pExcl = GetNode();
|
| + if (!pExcl) {
|
| + return NULL;
|
| + }
|
| + CXFA_Node* pNode = pExcl->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + while (pNode) {
|
| + if (pNode->GetClassID() == XFA_ELEMENT_Field) {
|
| + return pNode;
|
| + }
|
| + pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + return NULL;
|
| +}
|
| +CXFA_Node* CXFA_WidgetData::GetExclGroupNextMember(CXFA_Node* pNode) {
|
| + if (!pNode) {
|
| + return NULL;
|
| + }
|
| + CXFA_Node* pNodeField = pNode->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + while (pNodeField) {
|
| + if (pNodeField->GetClassID() == XFA_ELEMENT_Field) {
|
| + return pNodeField;
|
| + }
|
| + pNodeField = pNodeField->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + return NULL;
|
| +}
|
| +int32_t CXFA_WidgetData::GetChoiceListCommitOn() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetEnum(XFA_ATTRIBUTE_CommitOn);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Enum(
|
| + XFA_ELEMENT_ChoiceList, XFA_ATTRIBUTE_CommitOn, XFA_XDPPACKET_Form);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::IsChoiceListAllowTextEntry() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetBoolean(XFA_ATTRIBUTE_TextEntry);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Boolean(
|
| + XFA_ELEMENT_ChoiceList, XFA_ATTRIBUTE_TextEntry, XFA_XDPPACKET_Form);
|
| +}
|
| +int32_t CXFA_WidgetData::GetChoiceListOpen() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetEnum(XFA_ATTRIBUTE_Open);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Enum(
|
| + XFA_ELEMENT_ChoiceList, XFA_ATTRIBUTE_Open, XFA_XDPPACKET_Form);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::IsListBox() {
|
| + int32_t iOpenMode = GetChoiceListOpen();
|
| + return (iOpenMode == XFA_ATTRIBUTEENUM_Always ||
|
| + iOpenMode == XFA_ATTRIBUTEENUM_MultiSelect);
|
| +}
|
| +int32_t CXFA_WidgetData::CountChoiceListItems(FX_BOOL bSaveValue) {
|
| + CXFA_NodeArray pItems;
|
| + CXFA_Node* pItem = NULL;
|
| + int32_t iCount = 0;
|
| + CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pNode->GetClassID() != XFA_ELEMENT_Items) {
|
| + continue;
|
| + }
|
| + iCount++;
|
| + pItems.Add(pNode);
|
| + if (iCount == 2) {
|
| + break;
|
| + }
|
| + }
|
| + if (iCount == 0) {
|
| + return 0;
|
| + }
|
| + pItem = pItems[0];
|
| + if (iCount > 1) {
|
| + FX_BOOL bItemOneHasSave = pItems[0]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + FX_BOOL bItemTwoHasSave = pItems[1]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + if (bItemOneHasSave != bItemTwoHasSave && bSaveValue == bItemTwoHasSave) {
|
| + pItem = pItems[1];
|
| + }
|
| + }
|
| + pItems.RemoveAll();
|
| + return pItem->CountChildren(XFA_ELEMENT_UNKNOWN);
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetChoiceListItem(CFX_WideString& wsText,
|
| + int32_t nIndex,
|
| + FX_BOOL bSaveValue) {
|
| + wsText.Empty();
|
| + CXFA_NodeArray pItemsArray;
|
| + CXFA_Node* pItems = NULL;
|
| + int32_t iCount = 0;
|
| + CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pNode->GetClassID() != XFA_ELEMENT_Items) {
|
| + continue;
|
| + }
|
| + iCount++;
|
| + pItemsArray.Add(pNode);
|
| + if (iCount == 2) {
|
| + break;
|
| + }
|
| + }
|
| + if (iCount == 0) {
|
| + return FALSE;
|
| + }
|
| + pItems = pItemsArray[0];
|
| + if (iCount > 1) {
|
| + FX_BOOL bItemOneHasSave = pItemsArray[0]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + FX_BOOL bItemTwoHasSave = pItemsArray[1]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + if (bItemOneHasSave != bItemTwoHasSave && bSaveValue == bItemTwoHasSave) {
|
| + pItems = pItemsArray[1];
|
| + }
|
| + }
|
| + if (pItems) {
|
| + CXFA_Node* pItem = pItems->GetChild(nIndex, XFA_ELEMENT_UNKNOWN);
|
| + if (pItem != NULL) {
|
| + pItem->TryContent(wsText);
|
| + return TRUE;
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +void CXFA_WidgetData::GetChoiceListItems(CFX_WideStringArray& wsTextArray,
|
| + FX_BOOL bSaveValue) {
|
| + CXFA_NodeArray pItems;
|
| + CXFA_Node* pItem = NULL;
|
| + int32_t iCount = 0;
|
| + CXFA_Node* pNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pNode->GetClassID() != XFA_ELEMENT_Items) {
|
| + continue;
|
| + }
|
| + iCount++;
|
| + pItems.Add(pNode);
|
| + if (iCount == 2) {
|
| + break;
|
| + }
|
| + }
|
| + if (iCount == 0) {
|
| + return;
|
| + }
|
| + pItem = pItems[0];
|
| + if (iCount > 1) {
|
| + FX_BOOL bItemOneHasSave = pItems[0]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + FX_BOOL bItemTwoHasSave = pItems[1]->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + if (bItemOneHasSave != bItemTwoHasSave && bSaveValue == bItemTwoHasSave) {
|
| + pItem = pItems[1];
|
| + }
|
| + }
|
| + pItems.RemoveAll();
|
| + pNode = pItem->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pNode; pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + pNode->TryContent(wsTextArray.Add());
|
| + }
|
| +}
|
| +int32_t CXFA_WidgetData::CountSelectedItems() {
|
| + CFX_WideStringArray wsValueArray;
|
| + GetSelectedItemsValue(wsValueArray);
|
| + if (IsListBox() || !IsChoiceListAllowTextEntry()) {
|
| + return wsValueArray.GetSize();
|
| + }
|
| + int32_t iSelected = 0;
|
| + CFX_WideStringArray wsSaveTextArray;
|
| + GetChoiceListItems(wsSaveTextArray, TRUE);
|
| + int32_t iValues = wsValueArray.GetSize();
|
| + for (int32_t i = 0; i < iValues; i++) {
|
| + int32_t iSaves = wsSaveTextArray.GetSize();
|
| + for (int32_t j = 0; j < iSaves; j++) {
|
| + if (wsValueArray[i] == wsSaveTextArray[j]) {
|
| + iSelected++;
|
| + break;
|
| + }
|
| + }
|
| + }
|
| + return iSelected;
|
| +}
|
| +int32_t CXFA_WidgetData::GetSelectedItem(int32_t nIndex) {
|
| + CFX_WideStringArray wsValueArray;
|
| + GetSelectedItemsValue(wsValueArray);
|
| + CFX_WideStringArray wsSaveTextArray;
|
| + GetChoiceListItems(wsSaveTextArray, TRUE);
|
| + int32_t iSaves = wsSaveTextArray.GetSize();
|
| + for (int32_t j = 0; j < iSaves; j++) {
|
| + if (wsValueArray[nIndex] == wsSaveTextArray[j]) {
|
| + return j;
|
| + }
|
| + }
|
| + return -1;
|
| +}
|
| +void CXFA_WidgetData::GetSelectedItems(CFX_Int32Array& iSelArray) {
|
| + CFX_WideStringArray wsValueArray;
|
| + GetSelectedItemsValue(wsValueArray);
|
| + int32_t iValues = wsValueArray.GetSize();
|
| + if (iValues < 1) {
|
| + return;
|
| + }
|
| + CFX_WideStringArray wsSaveTextArray;
|
| + GetChoiceListItems(wsSaveTextArray, TRUE);
|
| + int32_t iSaves = wsSaveTextArray.GetSize();
|
| + for (int32_t i = 0; i < iValues; i++) {
|
| + for (int32_t j = 0; j < iSaves; j++) {
|
| + if (wsValueArray[i] == wsSaveTextArray[j]) {
|
| + iSelArray.Add(j);
|
| + break;
|
| + }
|
| + }
|
| + }
|
| +}
|
| +void CXFA_WidgetData::GetSelectedItemsValue(
|
| + CFX_WideStringArray& wsSelTextArray) {
|
| + CFX_WideString wsValue = GetRawValue();
|
| + if (GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) {
|
| + if (!wsValue.IsEmpty()) {
|
| + int32_t iStart = 0;
|
| + int32_t iLength = wsValue.GetLength();
|
| + int32_t iEnd = wsValue.Find(L'\n', iStart);
|
| + iEnd = (iEnd == -1) ? iLength : iEnd;
|
| + while (iEnd >= iStart) {
|
| + wsSelTextArray.Add(wsValue.Mid(iStart, iEnd - iStart));
|
| + iStart = iEnd + 1;
|
| + if (iStart >= iLength) {
|
| + break;
|
| + }
|
| + iEnd = wsValue.Find(L'\n', iStart);
|
| + if (iEnd < 0) {
|
| + wsSelTextArray.Add(wsValue.Mid(iStart, iLength - iStart));
|
| + }
|
| + }
|
| + }
|
| + } else {
|
| + wsSelTextArray.Add(wsValue);
|
| + }
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetItemState(int32_t nIndex) {
|
| + if (nIndex < 0) {
|
| + return FALSE;
|
| + }
|
| + CFX_WideStringArray wsSaveTextArray;
|
| + GetChoiceListItems(wsSaveTextArray, TRUE);
|
| + if (wsSaveTextArray.GetSize() <= nIndex) {
|
| + return FALSE;
|
| + }
|
| + CFX_WideStringArray wsValueArray;
|
| + GetSelectedItemsValue(wsValueArray);
|
| + int32_t iValues = wsValueArray.GetSize();
|
| + for (int32_t j = 0; j < iValues; j++) {
|
| + if (wsValueArray[j] == wsSaveTextArray[nIndex]) {
|
| + return TRUE;
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +void CXFA_WidgetData::SetItemState(int32_t nIndex,
|
| + FX_BOOL bSelected,
|
| + FX_BOOL bNotify,
|
| + FX_BOOL bScriptModify,
|
| + FX_BOOL bSyncData) {
|
| + if (nIndex < 0) {
|
| + return;
|
| + }
|
| + CFX_WideStringArray wsSaveTextArray;
|
| + GetChoiceListItems(wsSaveTextArray, TRUE);
|
| + if (wsSaveTextArray.GetSize() <= nIndex) {
|
| + return;
|
| + }
|
| + int32_t iSel = -1;
|
| + CFX_WideStringArray wsValueArray;
|
| + GetSelectedItemsValue(wsValueArray);
|
| + int32_t iValues = wsValueArray.GetSize();
|
| + for (int32_t j = 0; j < iValues; j++) {
|
| + if (wsValueArray[j] == wsSaveTextArray[nIndex]) {
|
| + iSel = j;
|
| + break;
|
| + }
|
| + }
|
| + if (GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) {
|
| + if (bSelected) {
|
| + if (iSel < 0) {
|
| + CFX_WideString wsValue = GetRawValue();
|
| + if (!wsValue.IsEmpty()) {
|
| + wsValue += L"\n";
|
| + }
|
| + wsValue += wsSaveTextArray[nIndex];
|
| + m_pNode->SetContent(wsValue, wsValue, bNotify, bScriptModify,
|
| + bSyncData);
|
| + }
|
| + } else if (iSel >= 0) {
|
| + CFX_Int32Array iSelArray;
|
| + GetSelectedItems(iSelArray);
|
| + for (int32_t i = 0; i < iSelArray.GetSize(); i++) {
|
| + if (iSelArray[i] == nIndex) {
|
| + iSelArray.RemoveAt(i);
|
| + break;
|
| + }
|
| + }
|
| + SetSelectdItems(iSelArray, bNotify, bScriptModify, bSyncData);
|
| + }
|
| + } else {
|
| + if (bSelected) {
|
| + if (iSel < 0) {
|
| + CFX_WideString wsSaveText = wsSaveTextArray[nIndex];
|
| + CFX_WideString wsFormatText(wsSaveText);
|
| + GetFormatDataValue(wsSaveText, wsFormatText);
|
| + m_pNode->SetContent(wsSaveText, wsFormatText, bNotify, bScriptModify,
|
| + bSyncData);
|
| + }
|
| + } else if (iSel >= 0) {
|
| + m_pNode->SetContent(CFX_WideString(), CFX_WideString(), bNotify,
|
| + bScriptModify, bSyncData);
|
| + }
|
| + }
|
| +}
|
| +void CXFA_WidgetData::SetSelectdItems(CFX_Int32Array& iSelArray,
|
| + FX_BOOL bNotify,
|
| + FX_BOOL bScriptModify,
|
| + FX_BOOL bSyncData) {
|
| + CFX_WideString wsValue;
|
| + int32_t iSize = iSelArray.GetSize();
|
| + if (iSize >= 1) {
|
| + CFX_WideStringArray wsSaveTextArray;
|
| + GetChoiceListItems(wsSaveTextArray, TRUE);
|
| + CFX_WideString wsItemValue;
|
| + for (int32_t i = 0; i < iSize; i++) {
|
| + wsItemValue = (iSize == 1)
|
| + ? wsSaveTextArray[iSelArray[i]]
|
| + : wsSaveTextArray[iSelArray[i]] + FX_WSTRC(L"\n");
|
| + wsValue += wsItemValue;
|
| + }
|
| + }
|
| + CFX_WideString wsFormat(wsValue);
|
| + if (GetChoiceListOpen() != XFA_ATTRIBUTEENUM_MultiSelect) {
|
| + GetFormatDataValue(wsValue, wsFormat);
|
| + }
|
| + m_pNode->SetContent(wsValue, wsFormat, bNotify, bScriptModify, bSyncData);
|
| +}
|
| +void CXFA_WidgetData::ClearAllSelections() {
|
| + CXFA_Node* pBind = m_pNode->GetBindData();
|
| + if (pBind && GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) {
|
| + while (CXFA_Node* pChildNode =
|
| + pBind->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| + pBind->RemoveChild(pChildNode);
|
| + }
|
| + } else {
|
| + SyncValue(CFX_WideString(), FALSE);
|
| + }
|
| +}
|
| +void CXFA_WidgetData::InsertItem(const CFX_WideString& wsLabel,
|
| + const CFX_WideString& wsValue,
|
| + int32_t nIndex,
|
| + FX_BOOL bNotify) {
|
| + CFX_WideString wsNewValue(wsValue);
|
| + if (wsNewValue.IsEmpty()) {
|
| + wsNewValue = wsLabel;
|
| + }
|
| + CXFA_NodeArray listitems;
|
| + int32_t iCount = 0;
|
| + CXFA_Node* pItemNode = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pItemNode;
|
| + pItemNode = pItemNode->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pItemNode->GetClassID() != XFA_ELEMENT_Items) {
|
| + continue;
|
| + }
|
| + listitems.Add(pItemNode);
|
| + iCount++;
|
| + }
|
| + if (iCount < 1) {
|
| + CXFA_Node* pItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items);
|
| + m_pNode->InsertChild(-1, pItems);
|
| + InsertListTextItem(pItems, wsLabel, nIndex);
|
| + CXFA_Node* pSaveItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items);
|
| + m_pNode->InsertChild(-1, pSaveItems);
|
| + pSaveItems->SetBoolean(XFA_ATTRIBUTE_Save, TRUE);
|
| + InsertListTextItem(pSaveItems, wsNewValue, nIndex);
|
| + } else if (iCount > 1) {
|
| + for (int32_t i = 0; i < 2; i++) {
|
| + CXFA_Node* pNode = listitems[i];
|
| + FX_BOOL bHasSave = pNode->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + if (bHasSave) {
|
| + InsertListTextItem(pNode, wsNewValue, nIndex);
|
| + } else {
|
| + InsertListTextItem(pNode, wsLabel, nIndex);
|
| + }
|
| + }
|
| + } else {
|
| + CXFA_Node* pNode = listitems[0];
|
| + pNode->SetBoolean(XFA_ATTRIBUTE_Save, FALSE);
|
| + pNode->SetEnum(XFA_ATTRIBUTE_Presence, XFA_ATTRIBUTEENUM_Visible);
|
| + CXFA_Node* pSaveItems = m_pNode->CreateSamePacketNode(XFA_ELEMENT_Items);
|
| + m_pNode->InsertChild(-1, pSaveItems);
|
| + pSaveItems->SetBoolean(XFA_ATTRIBUTE_Save, TRUE);
|
| + pSaveItems->SetEnum(XFA_ATTRIBUTE_Presence, XFA_ATTRIBUTEENUM_Hidden);
|
| + listitems.RemoveAll();
|
| + CXFA_Node* pListNode = pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + int32_t i = 0;
|
| + while (pListNode) {
|
| + CFX_WideString wsOldValue;
|
| + pListNode->TryContent(wsOldValue);
|
| + InsertListTextItem(pSaveItems, wsOldValue, i);
|
| + i++;
|
| + pListNode = pListNode->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + InsertListTextItem(pNode, wsLabel, nIndex);
|
| + InsertListTextItem(pSaveItems, wsNewValue, nIndex);
|
| + }
|
| + if (!bNotify) {
|
| + return;
|
| + }
|
| + m_pNode->GetDocument()->GetNotify()->OnWidgetDataEvent(
|
| + this, XFA_WIDGETEVENT_ListItemAdded, (void*)(const FX_WCHAR*)wsLabel,
|
| + (void*)(const FX_WCHAR*)wsValue, (void*)(uintptr_t)nIndex);
|
| +}
|
| +void CXFA_WidgetData::GetItemLabel(const CFX_WideStringC& wsValue,
|
| + CFX_WideString& wsLabel) {
|
| + int32_t iCount = 0;
|
| + CXFA_NodeArray listitems;
|
| + CXFA_Node* pItems = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pItems; pItems = pItems->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pItems->GetClassID() != XFA_ELEMENT_Items) {
|
| + continue;
|
| + }
|
| + iCount++;
|
| + listitems.Add(pItems);
|
| + }
|
| + if (iCount <= 1) {
|
| + wsLabel = wsValue;
|
| + } else {
|
| + CXFA_Node* pLabelItems = listitems[0];
|
| + FX_BOOL bSave = pLabelItems->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + CXFA_Node* pSaveItems = NULL;
|
| + if (bSave) {
|
| + pSaveItems = pLabelItems;
|
| + pLabelItems = listitems[1];
|
| + } else {
|
| + pSaveItems = listitems[1];
|
| + }
|
| + iCount = 0;
|
| + int32_t iSearch = -1;
|
| + CFX_WideString wsContent;
|
| + CXFA_Node* pChildItem = pSaveItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pChildItem;
|
| + pChildItem = pChildItem->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + pChildItem->TryContent(wsContent);
|
| + if (wsContent == wsValue) {
|
| + iSearch = iCount;
|
| + break;
|
| + }
|
| + iCount++;
|
| + }
|
| + if (iSearch < 0) {
|
| + return;
|
| + }
|
| + if (CXFA_Node* pText =
|
| + pLabelItems->GetChild(iSearch, XFA_ELEMENT_UNKNOWN)) {
|
| + pText->TryContent(wsLabel);
|
| + }
|
| + }
|
| +}
|
| +void CXFA_WidgetData::GetItemValue(const CFX_WideStringC& wsLabel,
|
| + CFX_WideString& wsValue) {
|
| + int32_t iCount = 0;
|
| + CXFA_NodeArray listitems;
|
| + CXFA_Node* pItems = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pItems; pItems = pItems->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pItems->GetClassID() != XFA_ELEMENT_Items) {
|
| + continue;
|
| + }
|
| + iCount++;
|
| + listitems.Add(pItems);
|
| + }
|
| + if (iCount <= 1) {
|
| + wsValue = wsLabel;
|
| + } else {
|
| + CXFA_Node* pLabelItems = listitems[0];
|
| + FX_BOOL bSave = pLabelItems->GetBoolean(XFA_ATTRIBUTE_Save);
|
| + CXFA_Node* pSaveItems = NULL;
|
| + if (bSave) {
|
| + pSaveItems = pLabelItems;
|
| + pLabelItems = listitems[1];
|
| + } else {
|
| + pSaveItems = listitems[1];
|
| + }
|
| + iCount = 0;
|
| + int32_t iSearch = -1;
|
| + CFX_WideString wsContent;
|
| + CXFA_Node* pChildItem = pLabelItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pChildItem;
|
| + pChildItem = pChildItem->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + pChildItem->TryContent(wsContent);
|
| + if (wsContent == wsLabel) {
|
| + iSearch = iCount;
|
| + break;
|
| + }
|
| + iCount++;
|
| + }
|
| + if (iSearch < 0) {
|
| + return;
|
| + }
|
| + if (CXFA_Node* pText = pSaveItems->GetChild(iSearch, XFA_ELEMENT_UNKNOWN)) {
|
| + pText->TryContent(wsValue);
|
| + }
|
| + }
|
| +}
|
| +FX_BOOL CXFA_WidgetData::DeleteItem(int32_t nIndex,
|
| + FX_BOOL bNotify,
|
| + FX_BOOL bScriptModify,
|
| + FX_BOOL bSyncData) {
|
| + FX_BOOL bSetValue = FALSE;
|
| + CXFA_Node* pItems = m_pNode->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + for (; pItems; pItems = pItems->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| + if (pItems->GetClassID() != XFA_ELEMENT_Items) {
|
| + continue;
|
| + }
|
| + if (nIndex < 0) {
|
| + while (CXFA_Node* pNode = pItems->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| + pItems->RemoveChild(pNode);
|
| + }
|
| + } else {
|
| + if (!bSetValue && pItems->GetBoolean(XFA_ATTRIBUTE_Save)) {
|
| + SetItemState(nIndex, FALSE, TRUE, bScriptModify, bSyncData);
|
| + bSetValue = TRUE;
|
| + }
|
| + int32_t i = 0;
|
| + CXFA_Node* pNode = pItems->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + while (pNode) {
|
| + if (i == nIndex) {
|
| + pItems->RemoveChild(pNode);
|
| + break;
|
| + }
|
| + i++;
|
| + pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling);
|
| + }
|
| + }
|
| + }
|
| + if (!bNotify) {
|
| + return TRUE;
|
| + }
|
| + m_pNode->GetDocument()->GetNotify()->OnWidgetDataEvent(
|
| + this, XFA_WIDGETEVENT_ListItemRemoved, (void*)(uintptr_t)nIndex);
|
| + return TRUE;
|
| +}
|
| +int32_t CXFA_WidgetData::GetHorizontalScrollPolicy() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetEnum(XFA_ATTRIBUTE_HScrollPolicy);
|
| + }
|
| + return XFA_ATTRIBUTEENUM_Auto;
|
| +}
|
| +int32_t CXFA_WidgetData::GetNumberOfCells() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (!pUIChild) {
|
| + return -1;
|
| + }
|
| + if (CXFA_Node* pNode = pUIChild->GetChild(0, XFA_ELEMENT_Comb)) {
|
| + return pNode->GetInteger(XFA_ATTRIBUTE_NumberOfCells);
|
| + }
|
| + return -1;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::IsDateTimeEditUsePicker() {
|
| + return TRUE;
|
| +}
|
| +CFX_WideString CXFA_WidgetData::GetBarcodeType() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + return pUIChild ? pUIChild->GetCData(XFA_ATTRIBUTE_Type) : NULL;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_CharEncoding(int32_t& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + CFX_WideString wsCharEncoding;
|
| + if (pUIChild->TryCData(XFA_ATTRIBUTE_CharEncoding, wsCharEncoding)) {
|
| + if (wsCharEncoding.CompareNoCase(L"UTF-16")) {
|
| + val = CHAR_ENCODING_UNICODE;
|
| + return TRUE;
|
| + } else if (wsCharEncoding.CompareNoCase(L"UTF-8")) {
|
| + val = CHAR_ENCODING_UTF8;
|
| + return TRUE;
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_Checksum(int32_t& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + XFA_ATTRIBUTEENUM eChecksum;
|
| + if (pUIChild->TryEnum(XFA_ATTRIBUTE_Checksum, eChecksum)) {
|
| + switch (eChecksum) {
|
| + case XFA_ATTRIBUTEENUM_None:
|
| + val = 0;
|
| + return TRUE;
|
| + case XFA_ATTRIBUTEENUM_Auto:
|
| + val = 1;
|
| + return TRUE;
|
| + case XFA_ATTRIBUTEENUM_1mod10:
|
| + break;
|
| + case XFA_ATTRIBUTEENUM_1mod10_1mod11:
|
| + break;
|
| + case XFA_ATTRIBUTEENUM_2mod10:
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_DataLength(int32_t& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + CFX_WideString wsDataLength;
|
| + if (pUIChild->TryCData(XFA_ATTRIBUTE_DataLength, wsDataLength)) {
|
| + val = FXSYS_wtoi(wsDataLength);
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_StartChar(FX_CHAR& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + CFX_WideStringC wsStartEndChar;
|
| + if (pUIChild->TryCData(XFA_ATTRIBUTE_StartChar, wsStartEndChar)) {
|
| + if (wsStartEndChar.GetLength()) {
|
| + val = (FX_CHAR)wsStartEndChar.GetAt(0);
|
| + return TRUE;
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_EndChar(FX_CHAR& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + CFX_WideStringC wsStartEndChar;
|
| + if (pUIChild->TryCData(XFA_ATTRIBUTE_EndChar, wsStartEndChar)) {
|
| + if (wsStartEndChar.GetLength()) {
|
| + val = (FX_CHAR)wsStartEndChar.GetAt(0);
|
| + return TRUE;
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_ECLevel(int32_t& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + CFX_WideString wsECLevel;
|
| + if (pUIChild->TryCData(XFA_ATTRIBUTE_ErrorCorrectionLevel, wsECLevel)) {
|
| + val = FXSYS_wtoi(wsECLevel);
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_ModuleWidth(int32_t& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + CXFA_Measurement mModuleWidthHeight;
|
| + if (pUIChild->TryMeasure(XFA_ATTRIBUTE_ModuleWidth, mModuleWidthHeight)) {
|
| + val = (int32_t)mModuleWidthHeight.ToUnit(XFA_UNIT_Pt);
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_ModuleHeight(int32_t& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + CXFA_Measurement mModuleWidthHeight;
|
| + if (pUIChild->TryMeasure(XFA_ATTRIBUTE_ModuleHeight, mModuleWidthHeight)) {
|
| + val = (int32_t)mModuleWidthHeight.ToUnit(XFA_UNIT_Pt);
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_PrintChecksum(FX_BOOL& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + FX_BOOL bPrintCheckDigit;
|
| + if (pUIChild->TryBoolean(XFA_ATTRIBUTE_PrintCheckDigit, bPrintCheckDigit)) {
|
| + val = bPrintCheckDigit;
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_TextLocation(int32_t& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + XFA_ATTRIBUTEENUM eTextLocation;
|
| + if (pUIChild->TryEnum(XFA_ATTRIBUTE_TextLocation, eTextLocation)) {
|
| + switch (eTextLocation) {
|
| + case XFA_ATTRIBUTEENUM_None:
|
| + val = BC_TEXT_LOC_NONE;
|
| + return TRUE;
|
| + case XFA_ATTRIBUTEENUM_Above:
|
| + val = BC_TEXT_LOC_ABOVE;
|
| + return TRUE;
|
| + case XFA_ATTRIBUTEENUM_Below:
|
| + val = BC_TEXT_LOC_BELOW;
|
| + return TRUE;
|
| + case XFA_ATTRIBUTEENUM_AboveEmbedded:
|
| + val = BC_TEXT_LOC_ABOVEEMBED;
|
| + return TRUE;
|
| + case XFA_ATTRIBUTEENUM_BelowEmbedded:
|
| + val = BC_TEXT_LOC_BELOWEMBED;
|
| + return TRUE;
|
| + default:
|
| + break;
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_Truncate(FX_BOOL& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + FX_BOOL bTruncate;
|
| + if (pUIChild->TryBoolean(XFA_ATTRIBUTE_Truncate, bTruncate)) {
|
| + val = bTruncate;
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetBarcodeAttribute_WideNarrowRatio(FX_FLOAT& val) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + CFX_WideString wsWideNarrowRatio;
|
| + if (pUIChild->TryCData(XFA_ATTRIBUTE_WideNarrowRatio, wsWideNarrowRatio)) {
|
| + FX_STRSIZE ptPos = wsWideNarrowRatio.Find(':');
|
| + FX_FLOAT fRatio = 0;
|
| + if (ptPos >= 0) {
|
| + fRatio = (FX_FLOAT)FXSYS_wtoi(wsWideNarrowRatio);
|
| + } else {
|
| + int32_t fA, fB;
|
| + fA = FXSYS_wtoi(wsWideNarrowRatio.Left(ptPos));
|
| + fB = FXSYS_wtoi(wsWideNarrowRatio.Mid(ptPos + 1));
|
| + if (fB) {
|
| + fRatio = (FX_FLOAT)fA / fB;
|
| + }
|
| + }
|
| + val = fRatio;
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +void CXFA_WidgetData::GetPasswordChar(CFX_WideString& wsPassWord) {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + pUIChild->TryCData(XFA_ATTRIBUTE_PasswordChar, wsPassWord);
|
| + } else {
|
| + wsPassWord = XFA_GetAttributeDefaultValue_Cdata(XFA_ELEMENT_PasswordEdit,
|
| + XFA_ATTRIBUTE_PasswordChar,
|
| + XFA_XDPPACKET_Form);
|
| + }
|
| +}
|
| +FX_BOOL CXFA_WidgetData::IsAllowRichText() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + FX_BOOL bValue = FALSE;
|
| + if (pUIChild &&
|
| + pUIChild->TryBoolean(XFA_ATTRIBUTE_AllowRichText, bValue, FALSE)) {
|
| + return bValue;
|
| + }
|
| + if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Value)) {
|
| + if (CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| + return pChild->GetClassID() == XFA_ELEMENT_ExData;
|
| + }
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::IsMultiLine() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetBoolean(XFA_ATTRIBUTE_MultiLine);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Boolean(
|
| + XFA_ELEMENT_TextEdit, XFA_ATTRIBUTE_MultiLine, XFA_XDPPACKET_Form);
|
| +}
|
| +int32_t CXFA_WidgetData::GetVerticalScrollPolicy() {
|
| + CXFA_Node* pUIChild = GetUIChild();
|
| + if (pUIChild) {
|
| + return pUIChild->GetEnum(XFA_ATTRIBUTE_VScrollPolicy);
|
| + }
|
| + return XFA_GetAttributeDefaultValue_Enum(
|
| + XFA_ELEMENT_TextEdit, XFA_ATTRIBUTE_VScrollPolicy, XFA_XDPPACKET_Form);
|
| +}
|
| +int32_t CXFA_WidgetData::GetMaxChars(XFA_ELEMENT& eType) {
|
| + if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Value)) {
|
| + if (CXFA_Node* pChild = pNode->GetNodeItem(XFA_NODEITEM_FirstChild)) {
|
| + switch (pChild->GetClassID()) {
|
| + case XFA_ELEMENT_Text:
|
| + eType = XFA_ELEMENT_Text;
|
| + return pChild->GetInteger(XFA_ATTRIBUTE_MaxChars);
|
| + case XFA_ELEMENT_ExData: {
|
| + eType = XFA_ELEMENT_ExData;
|
| + int32_t iMax = pChild->GetInteger(XFA_ATTRIBUTE_MaxLength);
|
| + return iMax < 0 ? 0 : iMax;
|
| + }
|
| + default:
|
| + break;
|
| + }
|
| + }
|
| + }
|
| + return 0;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetFracDigits(int32_t& iFracDigits) {
|
| + if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Value)) {
|
| + if (CXFA_Node* pChild = pNode->GetChild(0, XFA_ELEMENT_Decimal)) {
|
| + return pChild->TryInteger(XFA_ATTRIBUTE_FracDigits, iFracDigits);
|
| + }
|
| + }
|
| + iFracDigits = -1;
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetLeadDigits(int32_t& iLeadDigits) {
|
| + if (CXFA_Node* pNode = m_pNode->GetChild(0, XFA_ELEMENT_Value)) {
|
| + if (CXFA_Node* pChild = pNode->GetChild(0, XFA_ELEMENT_Decimal)) {
|
| + return pChild->TryInteger(XFA_ATTRIBUTE_LeadDigits, iLeadDigits);
|
| + }
|
| + }
|
| + iLeadDigits = -1;
|
| + return FALSE;
|
| +}
|
| +CFX_WideString XFA_NumericLimit(const CFX_WideString& wsValue,
|
| + int32_t iLead,
|
| + int32_t iTread) {
|
| + if ((iLead == -1) && (iTread == -1)) {
|
| + return wsValue;
|
| + }
|
| + CFX_WideString wsRet;
|
| + int32_t iLead_ = 0, iTread_ = -1;
|
| + int32_t iCount = wsValue.GetLength();
|
| + if (iCount == 0) {
|
| + return wsValue;
|
| + }
|
| + int32_t i = 0;
|
| + if (wsValue[i] == L'-') {
|
| + wsRet += L'-';
|
| + i++;
|
| + }
|
| + for (; i < iCount; i++) {
|
| + FX_WCHAR wc = wsValue[i];
|
| + if (XFA_IsDigit(wc)) {
|
| + if (iLead >= 0) {
|
| + iLead_++;
|
| + if (iLead_ > iLead) {
|
| + return L"0";
|
| + }
|
| + } else if (iTread_ >= 0) {
|
| + iTread_++;
|
| + if (iTread_ > iTread) {
|
| + if (iTread != -1) {
|
| + CFX_Decimal wsDeci = CFX_Decimal(wsValue);
|
| + wsDeci.SetScale(iTread);
|
| + wsRet = wsDeci;
|
| + }
|
| + return wsRet;
|
| + }
|
| + }
|
| + } else if (wc == L'.') {
|
| + iTread_ = 0;
|
| + iLead = -1;
|
| + }
|
| + wsRet += wc;
|
| + }
|
| + return wsRet;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::SetValue(const CFX_WideString& wsValue,
|
| + XFA_VALUEPICTURE eValueType) {
|
| + if (wsValue.IsEmpty()) {
|
| + SyncValue(wsValue, TRUE);
|
| + return TRUE;
|
| + }
|
| + this->m_bPreNull = this->m_bIsNull;
|
| + this->m_bIsNull = FALSE;
|
| + CFX_WideString wsNewText(wsValue);
|
| + CFX_WideString wsPicture;
|
| + GetPictureContent(wsPicture, eValueType);
|
| + FX_BOOL bValidate = TRUE;
|
| + FX_BOOL bSyncData = FALSE;
|
| + CXFA_Node* pNode = GetUIChild();
|
| + if (!pNode) {
|
| + return TRUE;
|
| + }
|
| + XFA_ELEMENT uiType = pNode->GetClassID();
|
| + if (!wsPicture.IsEmpty()) {
|
| + CXFA_LocaleMgr* pLocalMgr = m_pNode->GetDocument()->GetLocalMgr();
|
| + IFX_Locale* pLocale = GetLocal();
|
| + CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this);
|
| + bValidate =
|
| + widgetValue.ValidateValue(wsValue, wsPicture, pLocale, &wsPicture);
|
| + if (bValidate) {
|
| + widgetValue = CXFA_LocaleValue(widgetValue.GetType(), wsNewText,
|
| + wsPicture, pLocale, pLocalMgr);
|
| + wsNewText = widgetValue.GetValue();
|
| + if (uiType == XFA_ELEMENT_NumericEdit) {
|
| + int32_t iLeadDigits = 0;
|
| + int32_t iFracDigits = 0;
|
| + GetLeadDigits(iLeadDigits);
|
| + GetFracDigits(iFracDigits);
|
| + wsNewText = XFA_NumericLimit(wsNewText, iLeadDigits, iFracDigits);
|
| + }
|
| + bSyncData = TRUE;
|
| + }
|
| + } else {
|
| + if (uiType == XFA_ELEMENT_NumericEdit) {
|
| + if (wsNewText != FX_WSTRC(L"0")) {
|
| + int32_t iLeadDigits = 0;
|
| + int32_t iFracDigits = 0;
|
| + GetLeadDigits(iLeadDigits);
|
| + GetFracDigits(iFracDigits);
|
| + wsNewText = XFA_NumericLimit(wsNewText, iLeadDigits, iFracDigits);
|
| + }
|
| + bSyncData = TRUE;
|
| + }
|
| + }
|
| + if (uiType != XFA_ELEMENT_NumericEdit || bSyncData) {
|
| + SyncValue(wsNewText, TRUE);
|
| + }
|
| + return bValidate;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetPictureContent(CFX_WideString& wsPicture,
|
| + XFA_VALUEPICTURE ePicture) {
|
| + if (ePicture == XFA_VALUEPICTURE_Raw) {
|
| + return FALSE;
|
| + }
|
| + CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this);
|
| + switch (ePicture) {
|
| + case XFA_VALUEPICTURE_Display: {
|
| + if (CXFA_Node* pFormat = m_pNode->GetChild(0, XFA_ELEMENT_Format)) {
|
| + if (CXFA_Node* pPicture = pFormat->GetChild(0, XFA_ELEMENT_Picture)) {
|
| + if (pPicture->TryContent(wsPicture)) {
|
| + return TRUE;
|
| + }
|
| + }
|
| + }
|
| + CFX_WideString wsDataPicture, wsTimePicture;
|
| + IFX_Locale* pLocale = GetLocal();
|
| + if (!pLocale) {
|
| + return FALSE;
|
| + }
|
| + FX_DWORD dwType = widgetValue.GetType();
|
| + switch (dwType) {
|
| + case XFA_VT_DATE:
|
| + pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Medium,
|
| + wsPicture);
|
| + break;
|
| + case XFA_VT_TIME:
|
| + pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Medium,
|
| + wsPicture);
|
| + break;
|
| + case XFA_VT_DATETIME:
|
| + pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Medium,
|
| + wsDataPicture);
|
| + pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Medium,
|
| + wsTimePicture);
|
| + wsPicture = wsDataPicture + FX_WSTRC(L"T") + wsTimePicture;
|
| + break;
|
| + case XFA_VT_DECIMAL:
|
| + case XFA_VT_FLOAT:
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + }
|
| + return TRUE;
|
| + case XFA_VALUEPICTURE_Edit: {
|
| + CXFA_Node* pUI = m_pNode->GetChild(0, XFA_ELEMENT_Ui);
|
| + if (pUI) {
|
| + if (CXFA_Node* pPicture = pUI->GetChild(0, XFA_ELEMENT_Picture)) {
|
| + if (pPicture->TryContent(wsPicture)) {
|
| + return TRUE;
|
| + }
|
| + }
|
| + }
|
| + {
|
| + CFX_WideString wsDataPicture, wsTimePicture;
|
| + IFX_Locale* pLocale = GetLocal();
|
| + if (!pLocale) {
|
| + return FALSE;
|
| + }
|
| + FX_DWORD dwType = widgetValue.GetType();
|
| + switch (dwType) {
|
| + case XFA_VT_DATE:
|
| + pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Short,
|
| + wsPicture);
|
| + break;
|
| + case XFA_VT_TIME:
|
| + pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Short,
|
| + wsPicture);
|
| + break;
|
| + case XFA_VT_DATETIME:
|
| + pLocale->GetDatePattern(FX_LOCALEDATETIMESUBCATEGORY_Short,
|
| + wsDataPicture);
|
| + pLocale->GetTimePattern(FX_LOCALEDATETIMESUBCATEGORY_Short,
|
| + wsTimePicture);
|
| + wsPicture = wsDataPicture + L"T" + wsTimePicture;
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + }
|
| + }
|
| + return TRUE;
|
| + case XFA_VALUEPICTURE_DataBind: {
|
| + if (CXFA_Bind bind = GetBind()) {
|
| + bind.GetPicture(wsPicture);
|
| + return TRUE;
|
| + }
|
| + } break;
|
| + default:
|
| + break;
|
| + }
|
| + return FALSE;
|
| +}
|
| +IFX_Locale* CXFA_WidgetData::GetLocal() {
|
| + IFX_Locale* pLocale = NULL;
|
| + if (!m_pNode) {
|
| + return pLocale;
|
| + }
|
| + FX_BOOL bLocale = FALSE;
|
| + CFX_WideString wsLocaleName;
|
| + bLocale = m_pNode->GetLocaleName(wsLocaleName);
|
| + if (bLocale) {
|
| + if (wsLocaleName.Equal(FX_WSTRC(L"ambient"))) {
|
| + pLocale = m_pNode->GetDocument()->GetLocalMgr()->GetDefLocale();
|
| + } else {
|
| + pLocale =
|
| + m_pNode->GetDocument()->GetLocalMgr()->GetLocaleByName(wsLocaleName);
|
| + }
|
| + }
|
| + return pLocale;
|
| +}
|
| +static FX_BOOL XFA_SplitDateTime(const CFX_WideString& wsDateTime,
|
| + CFX_WideString& wsDate,
|
| + CFX_WideString& wsTime) {
|
| + wsDate = L"";
|
| + wsTime = L"";
|
| + if (wsDateTime.IsEmpty()) {
|
| + return FALSE;
|
| + }
|
| + int nSplitIndex = -1;
|
| + nSplitIndex = wsDateTime.Find('T');
|
| + if (nSplitIndex < 0) {
|
| + nSplitIndex = wsDateTime.Find(' ');
|
| + }
|
| + if (nSplitIndex < 0) {
|
| + return FALSE;
|
| + }
|
| + wsDate = wsDateTime.Left(nSplitIndex);
|
| + if (!wsDate.IsEmpty()) {
|
| + int32_t iCount = wsDate.GetLength();
|
| + int32_t i = 0;
|
| + for (i = 0; i < iCount; i++) {
|
| + if (wsDate[i] >= '0' && wsDate[i] <= '9') {
|
| + break;
|
| + }
|
| + }
|
| + if (i == iCount) {
|
| + return FALSE;
|
| + }
|
| + }
|
| + wsTime = wsDateTime.Right(wsDateTime.GetLength() - nSplitIndex - 1);
|
| + if (!wsTime.IsEmpty()) {
|
| + int32_t iCount = wsTime.GetLength();
|
| + int32_t i = 0;
|
| + for (i = 0; i < iCount; i++) {
|
| + if (wsTime[i] >= '0' && wsTime[i] <= '9') {
|
| + break;
|
| + }
|
| + }
|
| + if (i == iCount) {
|
| + return FALSE;
|
| + }
|
| + }
|
| + return TRUE;
|
| +}
|
| +#ifndef XFA_PARSE_HAS_LINEIDENTIFIER
|
| +FX_BOOL CXFA_FieldNode_IsRichTextEdit(CXFA_Node* pFieldNode,
|
| + IFDE_XMLNode*& pXMLNode) {
|
| + FX_BOOL bRichTextEdit = FALSE;
|
| + pXMLNode = NULL;
|
| + if (pFieldNode->GetClassID() == XFA_ELEMENT_Field) {
|
| + CXFA_Node* pValue = pFieldNode->GetChild(0, XFA_ELEMENT_Value);
|
| + if (!pValue) {
|
| + return bRichTextEdit;
|
| + }
|
| + CXFA_Node* pChildValue = pValue->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + if (!pChildValue) {
|
| + return bRichTextEdit;
|
| + }
|
| + if (pChildValue->GetClassID() == XFA_ELEMENT_ExData) {
|
| + CFX_WideString wsContentType;
|
| + pChildValue->GetAttribute(XFA_ATTRIBUTE_ContentType, wsContentType,
|
| + FALSE);
|
| + bRichTextEdit = wsContentType.Equal(FX_WSTRC(L"text/html"));
|
| + if (bRichTextEdit) {
|
| + FX_BOOL bXMLInData = FALSE;
|
| + CXFA_Node* pDataNode = pFieldNode->GetBindData();
|
| + if (pDataNode) {
|
| + IFDE_XMLNode* pBindXML = pDataNode->GetXMLMappingNode();
|
| + FXSYS_assert(pBindXML);
|
| + IFDE_XMLNode* pValueXML =
|
| + pBindXML->GetNodeItem(IFDE_XMLNode::FirstChild);
|
| + if (pValueXML && pValueXML->GetType() == FDE_XMLNODE_Element) {
|
| + pXMLNode = pValueXML;
|
| + bXMLInData = TRUE;
|
| + }
|
| + }
|
| + if (!bXMLInData) {
|
| + pXMLNode = pChildValue->GetXMLMappingNode();
|
| + }
|
| + }
|
| + }
|
| + }
|
| + return bRichTextEdit;
|
| +}
|
| +#endif
|
| +FX_BOOL CXFA_WidgetData::GetValue(CFX_WideString& wsValue,
|
| + XFA_VALUEPICTURE eValueType) {
|
| +#ifdef XFA_PARSE_HAS_LINEIDENTIFIER
|
| + wsValue = m_pNode->GetContent();
|
| +#else
|
| + IFDE_XMLNode* pXMLNode = NULL;
|
| + FX_BOOL bRichTextEdit = CXFA_FieldNode_IsRichTextEdit(m_pNode, pXMLNode);
|
| + if (bRichTextEdit) {
|
| + XFA_GetPlainTextFromRichText(pXMLNode, wsValue);
|
| + } else {
|
| + wsValue = m_pNode->GetContent();
|
| + }
|
| +#endif
|
| + if (eValueType == XFA_VALUEPICTURE_Display) {
|
| + GetItemLabel(wsValue, wsValue);
|
| + }
|
| + CFX_WideString wsPicture;
|
| + GetPictureContent(wsPicture, eValueType);
|
| + CXFA_Node* pNode = GetUIChild();
|
| + if (!pNode) {
|
| + return TRUE;
|
| + }
|
| + XFA_ELEMENT uiType = GetUIChild()->GetClassID();
|
| + switch (uiType) {
|
| + case XFA_ELEMENT_ChoiceList: {
|
| + if (eValueType == XFA_VALUEPICTURE_Display) {
|
| + int32_t iSelItemIndex = GetSelectedItem(0);
|
| + if (iSelItemIndex >= 0) {
|
| + GetChoiceListItem(wsValue, iSelItemIndex);
|
| + wsPicture.Empty();
|
| + }
|
| + }
|
| + } break;
|
| + case XFA_ELEMENT_NumericEdit:
|
| + if (eValueType != XFA_VALUEPICTURE_Raw && wsPicture.IsEmpty()) {
|
| + IFX_Locale* pLocale = GetLocal();
|
| + if (eValueType == XFA_VALUEPICTURE_Display && pLocale) {
|
| + CFX_WideString wsOutput;
|
| + NormalizeNumStr(wsValue, wsOutput);
|
| + FormatNumStr(wsOutput, pLocale, wsOutput);
|
| + wsValue = wsOutput;
|
| + }
|
| + }
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + if (wsPicture.IsEmpty()) {
|
| + return TRUE;
|
| + }
|
| + if (IFX_Locale* pLocale = GetLocal()) {
|
| + CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this);
|
| + CXFA_LocaleMgr* pLocalMgr = m_pNode->GetDocument()->GetLocalMgr();
|
| + switch (widgetValue.GetType()) {
|
| + case XFA_VT_DATE: {
|
| + CFX_WideString wsDate, wsTime;
|
| + if (XFA_SplitDateTime(wsValue, wsDate, wsTime)) {
|
| + CXFA_LocaleValue date(XFA_VT_DATE, wsDate, pLocalMgr);
|
| + if (date.FormatPatterns(wsValue, wsPicture, pLocale, eValueType)) {
|
| + return TRUE;
|
| + }
|
| + }
|
| + break;
|
| + }
|
| + case XFA_VT_TIME: {
|
| + CFX_WideString wsDate, wsTime;
|
| + if (XFA_SplitDateTime(wsValue, wsDate, wsTime)) {
|
| + CXFA_LocaleValue time(XFA_VT_TIME, wsTime, pLocalMgr);
|
| + if (time.FormatPatterns(wsValue, wsPicture, pLocale, eValueType)) {
|
| + return TRUE;
|
| + }
|
| + }
|
| + break;
|
| + }
|
| + default:
|
| + break;
|
| + }
|
| + widgetValue.FormatPatterns(wsValue, wsPicture, pLocale, eValueType);
|
| + }
|
| + return TRUE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetNormalizeDataValue(
|
| + const CFX_WideStringC& wsValue,
|
| + CFX_WideString& wsNormalizeValue) {
|
| + wsNormalizeValue = wsValue;
|
| + if (wsValue.IsEmpty()) {
|
| + return TRUE;
|
| + }
|
| + CFX_WideString wsPicture;
|
| + GetPictureContent(wsPicture, XFA_VALUEPICTURE_DataBind);
|
| + if (wsPicture.IsEmpty()) {
|
| + return TRUE;
|
| + }
|
| + FXSYS_assert(GetNode());
|
| + CXFA_LocaleMgr* pLocalMgr = GetNode()->GetDocument()->GetLocalMgr();
|
| + IFX_Locale* pLocale = GetLocal();
|
| + CXFA_LocaleValue widgetValue = XFA_GetLocaleValue(this);
|
| + if (widgetValue.ValidateValue(wsValue, wsPicture, pLocale, &wsPicture)) {
|
| + widgetValue = CXFA_LocaleValue(widgetValue.GetType(), wsNormalizeValue,
|
| + wsPicture, pLocale, pLocalMgr);
|
| + wsNormalizeValue = widgetValue.GetValue();
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +FX_BOOL CXFA_WidgetData::GetFormatDataValue(const CFX_WideStringC& wsValue,
|
| + CFX_WideString& wsFormatedValue) {
|
| + wsFormatedValue = wsValue;
|
| + if (wsValue.IsEmpty()) {
|
| + return TRUE;
|
| + }
|
| + CFX_WideString wsPicture;
|
| + GetPictureContent(wsPicture, XFA_VALUEPICTURE_DataBind);
|
| + if (wsPicture.IsEmpty()) {
|
| + return TRUE;
|
| + }
|
| + if (IFX_Locale* pLocale = GetLocal()) {
|
| + FXSYS_assert(GetNode());
|
| + CXFA_Node* pNodeValue = GetNode()->GetChild(0, XFA_ELEMENT_Value);
|
| + if (!pNodeValue) {
|
| + return FALSE;
|
| + }
|
| + CXFA_Node* pValueChild = pNodeValue->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| + if (!pValueChild) {
|
| + return FALSE;
|
| + }
|
| + int32_t iVTType = XFA_VT_NULL;
|
| + XFA_ELEMENT eType = pValueChild->GetClassID();
|
| + switch (eType) {
|
| + case XFA_ELEMENT_Decimal:
|
| + iVTType = XFA_VT_DECIMAL;
|
| + break;
|
| + case XFA_ELEMENT_Float:
|
| + iVTType = XFA_VT_FLOAT;
|
| + break;
|
| + case XFA_ELEMENT_Date:
|
| + iVTType = XFA_VT_DATE;
|
| + break;
|
| + case XFA_ELEMENT_Time:
|
| + iVTType = XFA_VT_TIME;
|
| + break;
|
| + case XFA_ELEMENT_DateTime:
|
| + iVTType = XFA_VT_DATETIME;
|
| + break;
|
| + case XFA_ELEMENT_Boolean:
|
| + iVTType = XFA_VT_BOOLEAN;
|
| + break;
|
| + case XFA_ELEMENT_Integer:
|
| + iVTType = XFA_VT_INTEGER;
|
| + break;
|
| + case XFA_ELEMENT_Text:
|
| + iVTType = XFA_VT_TEXT;
|
| + break;
|
| + default:
|
| + iVTType = XFA_VT_NULL;
|
| + break;
|
| + }
|
| + CXFA_LocaleMgr* pLocalMgr = GetNode()->GetDocument()->GetLocalMgr();
|
| + CXFA_LocaleValue widgetValue(iVTType, wsValue, pLocalMgr);
|
| + switch (widgetValue.GetType()) {
|
| + case XFA_VT_DATE: {
|
| + CFX_WideString wsDate, wsTime;
|
| + if (XFA_SplitDateTime(wsValue, wsDate, wsTime)) {
|
| + CXFA_LocaleValue date(XFA_VT_DATE, wsDate, pLocalMgr);
|
| + if (date.FormatPatterns(wsFormatedValue, wsPicture, pLocale,
|
| + XFA_VALUEPICTURE_DataBind)) {
|
| + return TRUE;
|
| + }
|
| + }
|
| + break;
|
| + }
|
| + case XFA_VT_TIME: {
|
| + CFX_WideString wsDate, wsTime;
|
| + if (XFA_SplitDateTime(wsValue, wsDate, wsTime)) {
|
| + CXFA_LocaleValue time(XFA_VT_TIME, wsTime, pLocalMgr);
|
| + if (time.FormatPatterns(wsFormatedValue, wsPicture, pLocale,
|
| + XFA_VALUEPICTURE_DataBind)) {
|
| + return TRUE;
|
| + }
|
| + }
|
| + break;
|
| + }
|
| + default:
|
| + break;
|
| + }
|
| + widgetValue.FormatPatterns(wsFormatedValue, wsPicture, pLocale,
|
| + XFA_VALUEPICTURE_DataBind);
|
| + }
|
| + return FALSE;
|
| +}
|
| +void CXFA_WidgetData::NormalizeNumStr(const CFX_WideString& wsValue,
|
| + CFX_WideString& wsOutput) {
|
| + if (wsValue.IsEmpty()) {
|
| + return;
|
| + }
|
| + wsOutput = wsValue;
|
| + wsOutput.TrimLeft('0');
|
| + int32_t dot_index = wsOutput.Find('.');
|
| + int32_t iFracDigits = 0;
|
| + if (!wsOutput.IsEmpty() && dot_index >= 0 &&
|
| + (!GetFracDigits(iFracDigits) || iFracDigits != -1)) {
|
| + wsOutput.TrimRight(L"0");
|
| + wsOutput.TrimRight(L".");
|
| + }
|
| + if (wsOutput.IsEmpty() || wsOutput[0] == '.') {
|
| + wsOutput.Insert(0, '0');
|
| + }
|
| +}
|
| +void CXFA_WidgetData::FormatNumStr(const CFX_WideString& wsValue,
|
| + IFX_Locale* pLocale,
|
| + CFX_WideString& wsOutput) {
|
| + if (wsValue.IsEmpty()) {
|
| + return;
|
| + }
|
| + CFX_WideString wsSrcNum = wsValue;
|
| + CFX_WideString wsGroupSymbol;
|
| + pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Grouping, wsGroupSymbol);
|
| + FX_BOOL bNeg = FALSE;
|
| + if (wsSrcNum[0] == '-') {
|
| + bNeg = TRUE;
|
| + wsSrcNum.Delete(0, 1);
|
| + }
|
| + int32_t len = wsSrcNum.GetLength();
|
| + int32_t dot_index = wsSrcNum.Find('.');
|
| + if (dot_index == -1) {
|
| + dot_index = len;
|
| + }
|
| + int32_t cc = dot_index - 1;
|
| + if (cc >= 0) {
|
| + int nPos = dot_index % 3;
|
| + wsOutput.Empty();
|
| + for (int32_t i = 0; i < dot_index; i++) {
|
| + if (i % 3 == nPos && i != 0) {
|
| + wsOutput += wsGroupSymbol;
|
| + }
|
| + wsOutput += wsSrcNum[i];
|
| + }
|
| + if (dot_index < len) {
|
| + CFX_WideString wsSymbol;
|
| + pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Decimal, wsSymbol);
|
| + wsOutput += wsSymbol;
|
| + wsOutput += wsSrcNum.Right(len - dot_index - 1);
|
| + }
|
| + if (bNeg) {
|
| + CFX_WideString wsMinusymbol;
|
| + pLocale->GetNumbericSymbol(FX_LOCALENUMSYMBOL_Minus, wsMinusymbol);
|
| + wsOutput = wsMinusymbol + wsOutput;
|
| + }
|
| + }
|
| +}
|
| +void CXFA_WidgetData::SyncValue(const CFX_WideString& wsValue,
|
| + FX_BOOL bNotify) {
|
| + if (!m_pNode) {
|
| + return;
|
| + }
|
| + CFX_WideString wsFormatValue(wsValue);
|
| + CXFA_WidgetData* pContainerWidgetData = m_pNode->GetContainerWidgetData();
|
| + if (pContainerWidgetData) {
|
| + pContainerWidgetData->GetFormatDataValue(wsValue, wsFormatValue);
|
| + }
|
| + m_pNode->SetContent(wsValue, wsFormatValue, bNotify);
|
| +}
|
| +void CXFA_WidgetData::InsertListTextItem(CXFA_Node* pItems,
|
| + const CFX_WideStringC& wsText,
|
| + int32_t nIndex) {
|
| + CXFA_Node* pText = pItems->CreateSamePacketNode(XFA_ELEMENT_Text);
|
| + pItems->InsertChild(nIndex, pText);
|
| + pText->SetContent(wsText, wsText, FALSE, FALSE, FALSE);
|
| +}
|
| +CXFA_Filter CXFA_WidgetData::GetFilter(FX_BOOL bModified) {
|
| + if (!m_pUiChildNode) {
|
| + return CXFA_Filter(NULL);
|
| + }
|
| + return m_pUiChildNode->GetProperty(0, XFA_ELEMENT_Filter, bModified);
|
| +}
|
| +CXFA_Manifest CXFA_WidgetData::GetManifest(FX_BOOL bModified) {
|
| + if (!m_pUiChildNode) {
|
| + return CXFA_Manifest(NULL);
|
| + }
|
| + return m_pUiChildNode->GetProperty(0, XFA_ELEMENT_Manifest, bModified);
|
| +}
|
| +CXFA_Occur::CXFA_Occur(CXFA_Node* pNode) : CXFA_Data(pNode) {}
|
| +int32_t CXFA_Occur::GetMax() {
|
| + int32_t iMax = 1;
|
| + if (m_pNode) {
|
| + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, TRUE)) {
|
| + iMax = GetMin();
|
| + }
|
| + }
|
| + return iMax;
|
| +}
|
| +int32_t CXFA_Occur::GetMin() {
|
| + int32_t iMin = 1;
|
| + if (m_pNode) {
|
| + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, TRUE) || iMin < 0) {
|
| + iMin = 1;
|
| + }
|
| + }
|
| + return iMin;
|
| +}
|
| +int32_t CXFA_Occur::GetInitial() {
|
| + int32_t iInit = 1;
|
| + if (m_pNode) {
|
| + int32_t iMin = GetMin();
|
| + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Initial, iInit, TRUE) ||
|
| + iInit < iMin) {
|
| + iInit = iMin;
|
| + }
|
| + }
|
| + return iInit;
|
| +}
|
| +FX_BOOL CXFA_Occur::GetOccurInfo(int32_t& iMin, int32_t& iMax, int32_t& iInit) {
|
| + if (!m_pNode) {
|
| + return FALSE;
|
| + }
|
| + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Min, iMin, FALSE) || iMin < 0) {
|
| + iMin = 1;
|
| + }
|
| + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Max, iMax, FALSE)) {
|
| + if (iMin == 0) {
|
| + iMax = 1;
|
| + } else {
|
| + iMax = iMin;
|
| + }
|
| + }
|
| + if (!m_pNode->TryInteger(XFA_ATTRIBUTE_Initial, iInit, FALSE) ||
|
| + iInit < iMin) {
|
| + iInit = iMin;
|
| + }
|
| + return TRUE;
|
| +}
|
| +void CXFA_Occur::SetMax(int32_t iMax) {
|
| + iMax = (iMax != -1 && iMax < 1) ? 1 : iMax;
|
| + m_pNode->SetInteger(XFA_ATTRIBUTE_Max, iMax, FALSE);
|
| + int32_t iMin = GetMin();
|
| + if (iMax != -1 && iMax < iMin) {
|
| + iMin = iMax;
|
| + m_pNode->SetInteger(XFA_ATTRIBUTE_Min, iMin, FALSE);
|
| + }
|
| +}
|
| +void CXFA_Occur::SetMin(int32_t iMin) {
|
| + iMin = (iMin < 0) ? 1 : iMin;
|
| + m_pNode->SetInteger(XFA_ATTRIBUTE_Min, iMin, FALSE);
|
| + int32_t iMax = GetMax();
|
| + if (iMax > 0 && iMax < iMin) {
|
| + iMax = iMin;
|
| + m_pNode->SetInteger(XFA_ATTRIBUTE_Max, iMax, FALSE);
|
| + }
|
| +}
|
| +XFA_ATTRIBUTEENUM XFA_GetEnumTypeAttribute(
|
| + CXFA_Node* pNode,
|
| + XFA_ATTRIBUTE attributeValue = XFA_ATTRIBUTE_Type,
|
| + XFA_ATTRIBUTEENUM eDefaultValue = XFA_ATTRIBUTEENUM_Optional) {
|
| + XFA_ATTRIBUTEENUM eType = eDefaultValue;
|
| + if (pNode) {
|
| + if (!pNode->TryEnum(attributeValue, eType, TRUE)) {
|
| + eType = eDefaultValue;
|
| + }
|
| + }
|
| + return eType;
|
| +}
|
| +CFX_WideString CXFA_Filter::GetFilterString(XFA_ATTRIBUTE eAttribute) {
|
| + CFX_WideString wsStringValue;
|
| + if (m_pNode) {
|
| + m_pNode->GetAttribute(eAttribute, wsStringValue, FALSE);
|
| + }
|
| + return wsStringValue;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Filter::GetAppearanceFilterType() {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Optional;
|
| + }
|
| + CXFA_Node* pAppearanceFilterNode =
|
| + m_pNode->GetProperty(0, XFA_ELEMENT_AppearanceFilter);
|
| + return XFA_GetEnumTypeAttribute(pAppearanceFilterNode);
|
| +}
|
| +CFX_WideString CXFA_Filter::GetAppearanceFilterContent() {
|
| + CFX_WideString wsContent;
|
| + if (m_pNode) {
|
| + CXFA_Node* pAppearanceFilterNode =
|
| + m_pNode->GetProperty(0, XFA_ELEMENT_AppearanceFilter);
|
| + pAppearanceFilterNode->TryContent(wsContent);
|
| + }
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Filter::GetCertificatesCredentialServerPolicy() {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Optional;
|
| + }
|
| + CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| + return XFA_GetEnumTypeAttribute(pCertsNode,
|
| + XFA_ATTRIBUTE_CredentialServerPolicy);
|
| +}
|
| +CFX_WideString CXFA_Filter::GetCertificatesURL() {
|
| + CFX_WideString wsURL;
|
| + if (m_pNode) {
|
| + CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| + pCertsNode->GetAttribute(XFA_ATTRIBUTE_Url, wsURL, FALSE);
|
| + }
|
| + return wsURL;
|
| +}
|
| +CFX_WideString CXFA_Filter::GetCertificatesURLPolicy() {
|
| + CFX_WideString wsURLPolicy;
|
| + if (m_pNode) {
|
| + CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| + pCertsNode->GetAttribute(XFA_ATTRIBUTE_UrlPolicy, wsURLPolicy, FALSE);
|
| + }
|
| + return wsURLPolicy;
|
| +}
|
| +CXFA_WrapCertificate CXFA_Filter::GetCertificatesEncryption(FX_BOOL bModified) {
|
| + if (!m_pNode) {
|
| + return CXFA_WrapCertificate(NULL);
|
| + }
|
| + CXFA_Node* pCertsNode =
|
| + m_pNode->GetProperty(0, XFA_ELEMENT_Certificates, bModified);
|
| + return CXFA_WrapCertificate(
|
| + pCertsNode ? pCertsNode->GetProperty(0, XFA_ELEMENT_Encryption, bModified)
|
| + : NULL);
|
| +}
|
| +CXFA_WrapCertificate CXFA_Filter::GetCertificatesIssuers(FX_BOOL bModified) {
|
| + if (!m_pNode) {
|
| + return CXFA_WrapCertificate(NULL);
|
| + }
|
| + CXFA_Node* pCertsNode =
|
| + m_pNode->GetProperty(0, XFA_ELEMENT_Certificates, bModified);
|
| + return CXFA_WrapCertificate(
|
| + pCertsNode ? pCertsNode->GetProperty(0, XFA_ELEMENT_Issuers, bModified)
|
| + : NULL);
|
| +}
|
| +CFX_WideString CXFA_Filter::GetCertificatesKeyUsageString(
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + if (!m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| + CXFA_Node* pKeyUsageNode = pCertsNode->GetProperty(0, XFA_ELEMENT_KeyUsage);
|
| + CFX_WideString wsAttributeValue;
|
| + pKeyUsageNode->GetAttribute(eAttribute, wsAttributeValue, FALSE);
|
| + return wsAttributeValue;
|
| +}
|
| +CXFA_Oids CXFA_Filter::GetCertificatesOids() {
|
| + if (!m_pNode) {
|
| + return CXFA_Oids(NULL);
|
| + }
|
| + CXFA_Node* pCertsNode = m_pNode->GetProperty(0, XFA_ELEMENT_Certificates);
|
| + return CXFA_Oids(pCertsNode ? pCertsNode->GetProperty(0, XFA_ELEMENT_Oids)
|
| + : NULL);
|
| +}
|
| +CXFA_WrapCertificate CXFA_Filter::GetCertificatesSigning(FX_BOOL bModified) {
|
| + if (!m_pNode) {
|
| + return CXFA_WrapCertificate(NULL);
|
| + }
|
| + CXFA_Node* pCertsNode =
|
| + m_pNode->GetProperty(0, XFA_ELEMENT_Certificates, bModified);
|
| + return CXFA_WrapCertificate(
|
| + pCertsNode ? pCertsNode->GetProperty(0, XFA_ELEMENT_Signing, bModified)
|
| + : NULL);
|
| +}
|
| +CXFA_DigestMethods CXFA_Filter::GetDigestMethods(FX_BOOL bModified) {
|
| + return CXFA_DigestMethods(
|
| + m_pNode ? m_pNode->GetProperty(0, XFA_ELEMENT_DigestMethods, bModified)
|
| + : NULL);
|
| +}
|
| +CXFA_Encodings CXFA_Filter::GetEncodings(FX_BOOL bModified) {
|
| + return CXFA_Encodings(
|
| + m_pNode ? m_pNode->GetProperty(0, XFA_ELEMENT_Encodings, bModified)
|
| + : NULL);
|
| +}
|
| +CXFA_EncryptionMethods CXFA_Filter::GetEncryptionMethods(FX_BOOL bModified) {
|
| + return CXFA_EncryptionMethods(
|
| + m_pNode
|
| + ? m_pNode->GetProperty(0, XFA_ELEMENT_EncryptionMethods, bModified)
|
| + : NULL);
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Filter::GetHandlerType() {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Optional;
|
| + }
|
| + CXFA_Node* pHandlerNode = m_pNode->GetProperty(0, XFA_ELEMENT_Handler);
|
| + return XFA_GetEnumTypeAttribute(pHandlerNode);
|
| +}
|
| +CFX_WideString CXFA_Filter::GetHandlerContent() {
|
| + CFX_WideString wsContent;
|
| + if (m_pNode) {
|
| + CXFA_Node* pHandlerNode = m_pNode->GetProperty(0, XFA_ELEMENT_Handler);
|
| + pHandlerNode->TryContent(wsContent);
|
| + }
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Filter::GetlockDocumentType() {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Optional;
|
| + }
|
| + CXFA_Node* pLockDocNode = m_pNode->GetProperty(0, XFA_ELEMENT_LockDocument);
|
| + return XFA_GetEnumTypeAttribute(pLockDocNode);
|
| +}
|
| +CFX_WideString CXFA_Filter::GetlockDocumentContent() {
|
| + CFX_WideString wsContent = FX_WSTRC(L"auto");
|
| + if (m_pNode) {
|
| + CXFA_Node* pLockDocNode = m_pNode->GetProperty(0, XFA_ELEMENT_LockDocument);
|
| + pLockDocNode->TryContent(wsContent);
|
| + }
|
| + return wsContent;
|
| +}
|
| +int32_t CXFA_Filter::GetMDPPermissions() {
|
| + int32_t iPermissions = 2;
|
| + if (m_pNode) {
|
| + CXFA_Node* pMDPNode = m_pNode->GetProperty(0, XFA_ELEMENT_Mdp);
|
| + if (!pMDPNode->TryInteger(XFA_ATTRIBUTE_Permissions, iPermissions, TRUE)) {
|
| + iPermissions = 2;
|
| + }
|
| + }
|
| + return iPermissions;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Filter::GetMDPSignatureType() {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Filter;
|
| + }
|
| + CXFA_Node* pMDPNode = m_pNode->GetProperty(0, XFA_ELEMENT_Mdp);
|
| + return XFA_GetEnumTypeAttribute(pMDPNode, XFA_ATTRIBUTE_SignatureType,
|
| + XFA_ATTRIBUTEENUM_Filter);
|
| +}
|
| +CXFA_Reasons CXFA_Filter::GetReasons(FX_BOOL bModified) {
|
| + return CXFA_Reasons(m_pNode ? m_pNode->GetProperty(0, XFA_ELEMENT_Reasons)
|
| + : NULL);
|
| +}
|
| +CFX_WideString CXFA_Filter::GetTimeStampServer() {
|
| + CFX_WideString wsServerURI;
|
| + if (m_pNode) {
|
| + CXFA_Node* pTimeStampNode = m_pNode->GetProperty(0, XFA_ELEMENT_TimeStamp);
|
| + pTimeStampNode->GetAttribute(XFA_ATTRIBUTE_Server, wsServerURI, FALSE);
|
| + }
|
| + return wsServerURI;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Filter::GetTimeStampType() {
|
| + if (!m_pNode) {
|
| + return XFA_ATTRIBUTEENUM_Optional;
|
| + }
|
| + CXFA_Node* pTimeStampNode = m_pNode->GetProperty(0, XFA_ELEMENT_TimeStamp);
|
| + return XFA_GetEnumTypeAttribute(pTimeStampNode);
|
| +}
|
| +CFX_WideString CXFA_Certificate::GetCertificateName() {
|
| + CFX_WideString wsName;
|
| + if (m_pNode) {
|
| + m_pNode->GetAttribute(XFA_ATTRIBUTE_Name, wsName, FALSE);
|
| + }
|
| + return wsName;
|
| +}
|
| +CFX_WideString CXFA_Certificate::GetCertificateContent() {
|
| + CFX_WideString wsContent;
|
| + if (m_pNode) {
|
| + m_pNode->TryContent(wsContent);
|
| + }
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_WrapCertificate::GetType() {
|
| + return XFA_GetEnumTypeAttribute(m_pNode);
|
| +}
|
| +int32_t CXFA_WrapCertificate::CountCertificates() {
|
| + return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Certificate) : 0;
|
| +}
|
| +CXFA_Certificate CXFA_WrapCertificate::GetCertificate(int32_t nIndex) {
|
| + return CXFA_Certificate(
|
| + (nIndex > -1 && m_pNode)
|
| + ? m_pNode->GetChild(nIndex, XFA_ELEMENT_Certificate)
|
| + : NULL);
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Oids::GetOidsType() {
|
| + return XFA_GetEnumTypeAttribute(m_pNode);
|
| +}
|
| +int32_t CXFA_Oids::CountOids() {
|
| + return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Oid) : 0;
|
| +}
|
| +CFX_WideString CXFA_Oids::GetOidContent(int32_t nIndex) {
|
| + if (nIndex <= -1 || !m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pOidNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_Oid);
|
| + if (!pOidNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CFX_WideString wsContent;
|
| + pOidNode->TryContent(wsContent);
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_SubjectDNs::GetSubjectDNsType() {
|
| + return XFA_GetEnumTypeAttribute(m_pNode);
|
| +}
|
| +int32_t CXFA_SubjectDNs::CountSubjectDNs() {
|
| + return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_SubjectDN) : 0;
|
| +}
|
| +CFX_WideString CXFA_SubjectDNs::GetSubjectDNString(int32_t nIndex,
|
| + XFA_ATTRIBUTE eAttribute) {
|
| + if (nIndex <= -1 || !m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pSubjectDNNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_SubjectDN);
|
| + if (!pSubjectDNNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CFX_WideString wsAttributeValue;
|
| + pSubjectDNNode->GetAttribute(eAttribute, wsAttributeValue, FALSE);
|
| + return wsAttributeValue;
|
| +}
|
| +CFX_WideString CXFA_SubjectDNs::GetSubjectDNContent(int32_t nIndex) {
|
| + if (nIndex <= -1 || !m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pSubjectDNNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_SubjectDN);
|
| + if (!pSubjectDNNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CFX_WideString wsContent;
|
| + pSubjectDNNode->TryContent(wsContent);
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_DigestMethods::GetDigestMethodsType() {
|
| + return XFA_GetEnumTypeAttribute(m_pNode);
|
| +}
|
| +int32_t CXFA_DigestMethods::CountDigestMethods() {
|
| + return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_DigestMethod) : 0;
|
| +}
|
| +CFX_WideString CXFA_DigestMethods::GetDigestMethodContent(int32_t nIndex) {
|
| + if (nIndex <= -1 || !m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pDigestMethodNode =
|
| + m_pNode->GetChild(nIndex, XFA_ELEMENT_DigestMethod);
|
| + if (!pDigestMethodNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CFX_WideString wsContent;
|
| + pDigestMethodNode->TryContent(wsContent);
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Encodings::GetEncodingsType() {
|
| + return XFA_GetEnumTypeAttribute(m_pNode);
|
| +}
|
| +int32_t CXFA_Encodings::CountEncodings() {
|
| + return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Encoding) : 0;
|
| +}
|
| +CFX_WideString CXFA_Encodings::GetEncodingContent(int32_t nIndex) {
|
| + if (nIndex <= -1 || !m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pEncodingNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_Encoding);
|
| + if (!pEncodingNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CFX_WideString wsContent;
|
| + pEncodingNode->TryContent(wsContent);
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_EncryptionMethods::GetEncryptionMethodsType() {
|
| + return XFA_GetEnumTypeAttribute(m_pNode);
|
| +}
|
| +int32_t CXFA_EncryptionMethods::CountEncryptionMethods() {
|
| + return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_EncryptionMethod) : 0;
|
| +}
|
| +CFX_WideString CXFA_EncryptionMethods::GetEncryptionMethodContent(
|
| + int32_t nIndex) {
|
| + if (nIndex <= -1 || !m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pEncryMethodNode =
|
| + m_pNode->GetChild(nIndex, XFA_ELEMENT_EncryptionMethod);
|
| + if (!pEncryMethodNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CFX_WideString wsContent;
|
| + pEncryMethodNode->TryContent(wsContent);
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Reasons::GetReasonsType() {
|
| + return XFA_GetEnumTypeAttribute(m_pNode);
|
| +}
|
| +int32_t CXFA_Reasons::CountReasons() {
|
| + return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Reason) : 0;
|
| +}
|
| +CFX_WideString CXFA_Reasons::GetReasonContent(int32_t nIndex) {
|
| + if (nIndex <= -1 || !m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pReasonNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_Reason);
|
| + if (!pReasonNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CFX_WideString wsContent;
|
| + pReasonNode->TryContent(wsContent);
|
| + return wsContent;
|
| +}
|
| +XFA_ATTRIBUTEENUM CXFA_Manifest::GetAction() {
|
| + return XFA_GetEnumTypeAttribute(m_pNode, XFA_ATTRIBUTE_Action,
|
| + XFA_ATTRIBUTEENUM_Include);
|
| +}
|
| +int32_t CXFA_Manifest::CountReives() {
|
| + return m_pNode ? m_pNode->CountChildren(XFA_ELEMENT_Ref) : 0;
|
| +}
|
| +CFX_WideString CXFA_Manifest::GetRefContent(int32_t nIndex) {
|
| + if (nIndex <= -1 || !m_pNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CXFA_Node* pRefNode = m_pNode->GetChild(nIndex, XFA_ELEMENT_Ref);
|
| + if (!pRefNode) {
|
| + return FX_WSTRC(L"");
|
| + }
|
| + CFX_WideString wsContent;
|
| + pRefNode->TryContent(wsContent);
|
| + return wsContent;
|
| +}
|
|
|