| Index: xfa/src/fxfa/parser/xfa_utils_imp.cpp
|
| diff --git a/xfa/src/fxfa/parser/xfa_utils_imp.cpp b/xfa/src/fxfa/parser/xfa_utils_imp.cpp
|
| deleted file mode 100644
|
| index 32f5ce125f4f4ed035d23f3e0e6c270cd4a6cc82..0000000000000000000000000000000000000000
|
| --- a/xfa/src/fxfa/parser/xfa_utils_imp.cpp
|
| +++ /dev/null
|
| @@ -1,403 +0,0 @@
|
| -// 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/fxfa/parser/xfa_utils.h"
|
| -
|
| -#include "core/include/fxcrt/fx_ext.h"
|
| -#include "xfa/src/fxfa/fm2js/xfa_fm2jsapi.h"
|
| -#include "xfa/src/fxfa/parser/xfa_docdata.h"
|
| -#include "xfa/src/fxfa/parser/xfa_doclayout.h"
|
| -#include "xfa/src/fxfa/parser/xfa_document.h"
|
| -#include "xfa/src/fxfa/parser/xfa_localemgr.h"
|
| -#include "xfa/src/fxfa/parser/xfa_localevalue.h"
|
| -#include "xfa/src/fxfa/parser/xfa_object.h"
|
| -#include "xfa/src/fxfa/parser/xfa_parser.h"
|
| -#include "xfa/src/fxfa/parser/xfa_script.h"
|
| -
|
| -CXFA_Node* XFA_CreateUIChild(CXFA_Node* pNode, XFA_ELEMENT& eWidgetType) {
|
| - XFA_ELEMENT eType = pNode->GetClassID();
|
| - eWidgetType = eType;
|
| - if (eType != XFA_ELEMENT_Field && eType != XFA_ELEMENT_Draw) {
|
| - return NULL;
|
| - }
|
| - eWidgetType = XFA_ELEMENT_UNKNOWN;
|
| - XFA_ELEMENT eUIType = XFA_ELEMENT_UNKNOWN;
|
| - CXFA_Value defValue(pNode->GetProperty(0, XFA_ELEMENT_Value, TRUE));
|
| - XFA_ELEMENT eValueType = (XFA_ELEMENT)defValue.GetChildValueClassID();
|
| - switch (eValueType) {
|
| - case XFA_ELEMENT_Boolean:
|
| - eUIType = XFA_ELEMENT_CheckButton;
|
| - break;
|
| - case XFA_ELEMENT_Integer:
|
| - case XFA_ELEMENT_Decimal:
|
| - case XFA_ELEMENT_Float:
|
| - eUIType = XFA_ELEMENT_NumericEdit;
|
| - break;
|
| - case XFA_ELEMENT_ExData:
|
| - case XFA_ELEMENT_Text:
|
| - eUIType = XFA_ELEMENT_TextEdit;
|
| - eWidgetType = XFA_ELEMENT_Text;
|
| - break;
|
| - case XFA_ELEMENT_Date:
|
| - case XFA_ELEMENT_Time:
|
| - case XFA_ELEMENT_DateTime:
|
| - eUIType = XFA_ELEMENT_DateTimeEdit;
|
| - break;
|
| - case XFA_ELEMENT_Image:
|
| - eUIType = XFA_ELEMENT_ImageEdit;
|
| - eWidgetType = XFA_ELEMENT_Image;
|
| - break;
|
| - case XFA_ELEMENT_Arc:
|
| - case XFA_ELEMENT_Line:
|
| - case XFA_ELEMENT_Rectangle:
|
| - eUIType = XFA_ELEMENT_DefaultUi;
|
| - eWidgetType = eValueType;
|
| - break;
|
| - default:
|
| - break;
|
| - }
|
| - CXFA_Node* pUIChild = NULL;
|
| - CXFA_Node* pUI = pNode->GetProperty(0, XFA_ELEMENT_Ui, TRUE);
|
| - CXFA_Node* pChild = pUI->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - for (; pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) {
|
| - XFA_ELEMENT eChild = pChild->GetClassID();
|
| - if (eChild == XFA_ELEMENT_Extras || eChild == XFA_ELEMENT_Picture) {
|
| - continue;
|
| - }
|
| - const XFA_PROPERTY* pProperty =
|
| - XFA_GetPropertyOfElement(XFA_ELEMENT_Ui, eChild, XFA_XDPPACKET_Form);
|
| - if (pProperty && (pProperty->uFlags & XFA_PROPERTYFLAG_OneOf)) {
|
| - pUIChild = pChild;
|
| - break;
|
| - }
|
| - }
|
| - if (eType == XFA_ELEMENT_Draw) {
|
| - XFA_ELEMENT eDraw = pUIChild ? pUIChild->GetClassID() : XFA_ELEMENT_UNKNOWN;
|
| - switch (eDraw) {
|
| - case XFA_ELEMENT_TextEdit:
|
| - eWidgetType = XFA_ELEMENT_Text;
|
| - break;
|
| - case XFA_ELEMENT_ImageEdit:
|
| - eWidgetType = XFA_ELEMENT_Image;
|
| - break;
|
| - default:
|
| - eWidgetType =
|
| - eWidgetType == XFA_ELEMENT_UNKNOWN ? XFA_ELEMENT_Text : eWidgetType;
|
| - break;
|
| - }
|
| - } else {
|
| - if (pUIChild && pUIChild->GetClassID() == XFA_ELEMENT_DefaultUi) {
|
| - eWidgetType = XFA_ELEMENT_TextEdit;
|
| - } else {
|
| - eWidgetType = pUIChild
|
| - ? pUIChild->GetClassID()
|
| - : (eUIType == XFA_ELEMENT_UNKNOWN ? XFA_ELEMENT_TextEdit
|
| - : eUIType);
|
| - }
|
| - }
|
| - if (!pUIChild) {
|
| - if (eUIType == XFA_ELEMENT_UNKNOWN) {
|
| - eUIType = XFA_ELEMENT_TextEdit;
|
| - defValue.GetNode()->GetProperty(0, XFA_ELEMENT_Text, TRUE);
|
| - }
|
| - pUIChild = pUI->GetProperty(0, eUIType, TRUE);
|
| - } else if (eUIType == XFA_ELEMENT_UNKNOWN) {
|
| - switch (pUIChild->GetClassID()) {
|
| - case XFA_ELEMENT_CheckButton: {
|
| - eValueType = XFA_ELEMENT_Text;
|
| - if (CXFA_Node* pItems = pNode->GetChild(0, XFA_ELEMENT_Items)) {
|
| - if (CXFA_Node* pItem = pItems->GetChild(0, XFA_ELEMENT_UNKNOWN)) {
|
| - eValueType = pItem->GetClassID();
|
| - }
|
| - }
|
| - } break;
|
| - case XFA_ELEMENT_DateTimeEdit:
|
| - eValueType = XFA_ELEMENT_DateTime;
|
| - break;
|
| - case XFA_ELEMENT_ImageEdit:
|
| - eValueType = XFA_ELEMENT_Image;
|
| - break;
|
| - case XFA_ELEMENT_NumericEdit:
|
| - eValueType = XFA_ELEMENT_Float;
|
| - break;
|
| - case XFA_ELEMENT_ChoiceList: {
|
| - eValueType = (pUIChild->GetEnum(XFA_ATTRIBUTE_Open) ==
|
| - XFA_ATTRIBUTEENUM_MultiSelect)
|
| - ? XFA_ELEMENT_ExData
|
| - : XFA_ELEMENT_Text;
|
| - } break;
|
| - case XFA_ELEMENT_Barcode:
|
| - case XFA_ELEMENT_Button:
|
| - case XFA_ELEMENT_PasswordEdit:
|
| - case XFA_ELEMENT_Signature:
|
| - case XFA_ELEMENT_TextEdit:
|
| - default:
|
| - eValueType = XFA_ELEMENT_Text;
|
| - break;
|
| - }
|
| - defValue.GetNode()->GetProperty(0, eValueType, TRUE);
|
| - }
|
| - return pUIChild;
|
| -}
|
| -CXFA_LocaleValue XFA_GetLocaleValue(CXFA_WidgetData* pWidgetData) {
|
| - CXFA_Node* pNodeValue =
|
| - pWidgetData->GetNode()->GetChild(0, XFA_ELEMENT_Value);
|
| - if (!pNodeValue) {
|
| - return CXFA_LocaleValue();
|
| - }
|
| - CXFA_Node* pValueChild = pNodeValue->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - if (!pValueChild) {
|
| - return CXFA_LocaleValue();
|
| - }
|
| - 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;
|
| - }
|
| - return CXFA_LocaleValue(iVTType, pWidgetData->GetRawValue(),
|
| - pWidgetData->GetNode()->GetDocument()->GetLocalMgr());
|
| -}
|
| -void XFA_GetPlainTextFromRichText(IFDE_XMLNode* pXMLNode,
|
| - CFX_WideString& wsPlainText) {
|
| - if (pXMLNode == NULL) {
|
| - return;
|
| - }
|
| - switch (pXMLNode->GetType()) {
|
| - case FDE_XMLNODE_Element: {
|
| - IFDE_XMLElement* pXMLElement = (IFDE_XMLElement*)pXMLNode;
|
| - CFX_WideString wsTag;
|
| - pXMLElement->GetLocalTagName(wsTag);
|
| - uint32_t uTag = FX_HashCode_String_GetW(wsTag, wsTag.GetLength(), TRUE);
|
| - if (uTag == 0x0001f714) {
|
| - wsPlainText += L"\n";
|
| - } else if (uTag == 0x00000070) {
|
| - if (!wsPlainText.IsEmpty()) {
|
| - wsPlainText += L"\n";
|
| - }
|
| - } else if (uTag == 0xa48ac63) {
|
| - if (!wsPlainText.IsEmpty() &&
|
| - wsPlainText[wsPlainText.GetLength() - 1] != '\n') {
|
| - wsPlainText += L"\n";
|
| - }
|
| - }
|
| - } break;
|
| - case FDE_XMLNODE_Text: {
|
| - CFX_WideString wsContent;
|
| - ((IFDE_XMLText*)pXMLNode)->GetText(wsContent);
|
| - wsPlainText += wsContent;
|
| - } break;
|
| - case FDE_XMLNODE_CharData: {
|
| - CFX_WideString wsCharData;
|
| - ((IFDE_XMLCharData*)pXMLNode)->GetCharData(wsCharData);
|
| - wsPlainText += wsCharData;
|
| - } break;
|
| - default:
|
| - break;
|
| - }
|
| - for (IFDE_XMLNode* pChildXML =
|
| - pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild);
|
| - pChildXML;
|
| - pChildXML = pChildXML->GetNodeItem(IFDE_XMLNode::NextSibling)) {
|
| - XFA_GetPlainTextFromRichText(pChildXML, wsPlainText);
|
| - }
|
| -}
|
| -FX_BOOL XFA_FieldIsMultiListBox(CXFA_Node* pFieldNode) {
|
| - FX_BOOL bRet = FALSE;
|
| - if (!pFieldNode) {
|
| - return bRet;
|
| - }
|
| - CXFA_Node* pUIChild = pFieldNode->GetChild(0, XFA_ELEMENT_Ui);
|
| - if (pUIChild) {
|
| - CXFA_Node* pFirstChild = pUIChild->GetNodeItem(XFA_NODEITEM_FirstChild);
|
| - if (pFirstChild && pFirstChild->GetClassID() == XFA_ELEMENT_ChoiceList) {
|
| - bRet = pFirstChild->GetEnum(XFA_ATTRIBUTE_Open) ==
|
| - XFA_ATTRIBUTEENUM_MultiSelect;
|
| - }
|
| - }
|
| - return bRet;
|
| -}
|
| -FX_BOOL XFA_IsLayoutElement(XFA_ELEMENT eElement, FX_BOOL bLayoutContainer) {
|
| - switch (eElement) {
|
| - case XFA_ELEMENT_Draw:
|
| - case XFA_ELEMENT_Field:
|
| - case XFA_ELEMENT_InstanceManager:
|
| - return !bLayoutContainer;
|
| - case XFA_ELEMENT_Area:
|
| - case XFA_ELEMENT_Subform:
|
| - case XFA_ELEMENT_ExclGroup:
|
| - case XFA_ELEMENT_SubformSet:
|
| - return TRUE;
|
| - case XFA_ELEMENT_PageArea:
|
| - case XFA_ELEMENT_Form:
|
| - return TRUE;
|
| - default:
|
| - return FALSE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL XFA_IsTakingupSpace(XFA_ATTRIBUTEENUM ePresence) {
|
| - switch (ePresence) {
|
| - case XFA_ATTRIBUTEENUM_Visible:
|
| - case XFA_ATTRIBUTEENUM_Invisible:
|
| - return TRUE;
|
| - default:
|
| - return FALSE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL XFA_IsFlowingLayout(XFA_ATTRIBUTEENUM eLayout) {
|
| - switch (eLayout) {
|
| - case XFA_ATTRIBUTEENUM_Tb:
|
| - case XFA_ATTRIBUTEENUM_Lr_tb:
|
| - case XFA_ATTRIBUTEENUM_Rl_tb:
|
| - return TRUE;
|
| - default:
|
| - return FALSE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -FX_BOOL XFA_IsHorizontalFlow(XFA_ATTRIBUTEENUM eLayout) {
|
| - switch (eLayout) {
|
| - case XFA_ATTRIBUTEENUM_Lr_tb:
|
| - case XFA_ATTRIBUTEENUM_Rl_tb:
|
| - return TRUE;
|
| - default:
|
| - return FALSE;
|
| - }
|
| - return FALSE;
|
| -}
|
| -static const FX_DOUBLE fraction_scales[] = {0.1,
|
| - 0.01,
|
| - 0.001,
|
| - 0.0001,
|
| - 0.00001,
|
| - 0.000001,
|
| - 0.0000001,
|
| - 0.00000001,
|
| - 0.000000001,
|
| - 0.0000000001,
|
| - 0.00000000001,
|
| - 0.000000000001,
|
| - 0.0000000000001,
|
| - 0.00000000000001,
|
| - 0.000000000000001,
|
| - 0.0000000000000001};
|
| -FX_DOUBLE XFA_WideStringToDouble(const CFX_WideString& wsStringVal) {
|
| - CFX_WideString wsValue = wsStringVal;
|
| - wsValue.TrimLeft();
|
| - wsValue.TrimRight();
|
| - int64_t nIntegral = 0;
|
| - FX_DWORD dwFractional = 0;
|
| - int32_t nExponent = 0;
|
| - int32_t cc = 0;
|
| - FX_BOOL bNegative = FALSE, bExpSign = FALSE;
|
| - const FX_WCHAR* str = (const FX_WCHAR*)wsValue;
|
| - int32_t len = wsValue.GetLength();
|
| - if (str[0] == '+') {
|
| - cc++;
|
| - } else if (str[0] == '-') {
|
| - bNegative = TRUE;
|
| - cc++;
|
| - }
|
| - int32_t nIntegralLen = 0;
|
| - while (cc < len) {
|
| - if (str[cc] == '.' || str[cc] == 'E' || str[cc] == 'e' ||
|
| - nIntegralLen > 17) {
|
| - break;
|
| - }
|
| - if (!XFA_IsDigit(str[cc])) {
|
| - return 0;
|
| - }
|
| - nIntegral = nIntegral * 10 + str[cc] - '0';
|
| - cc++;
|
| - nIntegralLen++;
|
| - }
|
| - nIntegral = bNegative ? -nIntegral : nIntegral;
|
| - int32_t scale = 0;
|
| - FX_DOUBLE fraction = 0.0;
|
| - if (cc < len && str[cc] == '.') {
|
| - cc++;
|
| - while (cc < len) {
|
| - fraction += fraction_scales[scale] * (str[cc] - '0');
|
| - scale++;
|
| - cc++;
|
| - if (cc == len) {
|
| - break;
|
| - }
|
| - if (scale == sizeof(fraction_scales) / sizeof(FX_DOUBLE) ||
|
| - str[cc] == 'E' || str[cc] == 'e') {
|
| - break;
|
| - }
|
| - if (!XFA_IsDigit(str[cc])) {
|
| - return 0;
|
| - }
|
| - }
|
| - dwFractional = (FX_DWORD)(fraction * 4294967296.0);
|
| - }
|
| - if (cc < len && (str[cc] == 'E' || str[cc] == 'e')) {
|
| - cc++;
|
| - if (cc < len) {
|
| - if (str[cc] == '+') {
|
| - cc++;
|
| - } else if (str[cc] == '-') {
|
| - bExpSign = TRUE;
|
| - cc++;
|
| - }
|
| - }
|
| - while (cc < len) {
|
| - if (str[cc] == '.' || !XFA_IsDigit(str[cc])) {
|
| - return 0;
|
| - }
|
| - nExponent = nExponent * 10 + str[cc] - '0';
|
| - cc++;
|
| - }
|
| - nExponent = bExpSign ? -nExponent : nExponent;
|
| - }
|
| - FX_DOUBLE dValue = (dwFractional / 4294967296.0);
|
| - dValue = nIntegral + (nIntegral >= 0 ? dValue : -dValue);
|
| - if (nExponent != 0) {
|
| - dValue *= FXSYS_pow(10, (FX_FLOAT)nExponent);
|
| - }
|
| - return dValue;
|
| -}
|
| -
|
| -FX_DOUBLE XFA_ByteStringToDouble(const CFX_ByteStringC& szStringVal) {
|
| - CFX_WideString wsValue =
|
| - CFX_WideString::FromUTF8(szStringVal.GetCStr(), szStringVal.GetLength());
|
| - return XFA_WideStringToDouble(wsValue);
|
| -}
|
| -
|
| -int32_t XFA_MapRotation(int32_t nRotation) {
|
| - nRotation = nRotation % 360;
|
| - nRotation = nRotation < 0 ? nRotation + 360 : nRotation;
|
| - return nRotation;
|
| -}
|
|
|