1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef _XFA_UTILS_H_ 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define _XFA_UTILS_H_ 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL XFA_FDEExtension_ResolveNamespaceQualifier( 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFDE_XMLElement* pNode, 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const CFX_WideStringC& wsQualifier, 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString& wsNamespaceURI); 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmanntemplate <class NodeType, class TraverseStrategy> 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CXFA_NodeIteratorTemplate { 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_NodeIteratorTemplate(NodeType* pRootNode = NULL) : m_pRoot(pRootNode) { 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pRootNode) { 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(pRootNode); 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL Init(NodeType* pRootNode) { 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pRootNode) { 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pRoot = pRootNode; 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.RemoveAll(); 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(pRootNode); 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void Clear() { m_NodeStack.RemoveAll(); } 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void Reset() { 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann Clear(); 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pRoot) { 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(m_pRoot); 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL SetCurrent(NodeType* pCurNode) { 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.RemoveAll(); 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pCurNode) { 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_StackTemplate<NodeType*> revStack; 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pNode; 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (pNode = pCurNode; pNode && pNode != m_pRoot; 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pNode = TraverseStrategy::GetParent(pNode)) { 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann revStack.Push(pNode); 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pNode) { 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann revStack.Push(m_pRoot); 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (revStack.GetSize()) { 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(*revStack.GetTopElement()); 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann revStack.Pop(); 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* GetCurrent() const { 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_NodeStack.GetSize() ? *m_NodeStack.GetTopElement() : NULL; 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* GetRoot() const { return m_pRoot; } 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* MoveToPrev() { 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t nStackLength = m_NodeStack.GetSize(); 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (nStackLength == 1) { 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else if (nStackLength > 1) { 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pCurItem = *m_NodeStack.GetTopElement(); 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Pop(); 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pParentItem = *m_NodeStack.GetTopElement(); 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pParentFirstChildItem = 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TraverseStrategy::GetFirstChild(pParentItem); 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pCurItem == pParentFirstChildItem) { 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pParentItem; 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType *pPrevItem = pParentFirstChildItem, *pPrevItemNext = NULL; 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (; pPrevItem; pPrevItem = pPrevItemNext) { 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pPrevItemNext = TraverseStrategy::GetNextSibling(pPrevItem); 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!pPrevItemNext || pPrevItemNext == pCurItem) { 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(pPrevItem); 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } else { 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.RemoveAll(); 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pRoot) { 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(m_pRoot); 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_NodeStack.GetSize() > 0) { 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pChildItem = *m_NodeStack.GetTopElement(); 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while ((pChildItem = TraverseStrategy::GetFirstChild(pChildItem)) != 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NULL) { 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (NodeType* pNextItem = 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann TraverseStrategy::GetNextSibling(pChildItem)) { 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pChildItem = pNextItem; 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(pChildItem); 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *m_NodeStack.GetTopElement(); 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* MoveToNext() { 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType** ppNode = NULL; 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pCurrent = GetCurrent(); 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (m_NodeStack.GetSize() > 0) { 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while ((ppNode = m_NodeStack.GetTopElement()) != NULL) { 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pCurrent != *ppNode) { 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return *ppNode; 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pChild = TraverseStrategy::GetFirstChild(*ppNode); 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pChild == NULL) { 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(pChild); 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while ((ppNode = m_NodeStack.GetTopElement()) != NULL) { 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pNext = TraverseStrategy::GetNextSibling(*ppNode); 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Pop(); 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_NodeStack.GetSize() == 0) { 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pNext) { 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(pNext); 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* SkipChildrenAndMoveToNext() { 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType** ppNode = NULL; 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while ((ppNode = m_NodeStack.GetTopElement()) != NULL) { 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* pNext = TraverseStrategy::GetNextSibling(*ppNode); 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Pop(); 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_NodeStack.GetSize() == 0) { 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pNext) { 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_NodeStack.Push(pNext); 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return GetCurrent(); 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann protected: 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann NodeType* m_pRoot; 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_StackTemplate<NodeType*> m_NodeStack; 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmanntemplate <class KeyType> 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CXFA_PtrSetTemplate : private CFX_MapPtrToPtr { 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public: 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_PtrSetTemplate() : CFX_MapPtrToPtr(10) {} 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int GetCount() const { return CFX_MapPtrToPtr::GetCount(); } 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL IsEmpty() const { return CFX_MapPtrToPtr::IsEmpty(); } 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL Lookup(KeyType key) const { 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* pValue = NULL; 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CFX_MapPtrToPtr::Lookup((void*)key, pValue); 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL operator[](KeyType key) { return Lookup(key); } 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void Add(KeyType key) { CFX_MapPtrToPtr::SetAt((void*)key, (void*)key); } 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL RemoveKey(KeyType key) { 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CFX_MapPtrToPtr::RemoveKey((void*)key); 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void RemoveAll() { CFX_MapPtrToPtr::RemoveAll(); } 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_POSITION GetStartPosition() const { 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return CFX_MapPtrToPtr::GetStartPosition(); 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void GetNextAssoc(FX_POSITION& rNextPosition, KeyType& rKey) const { 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* pKey = NULL; 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann void* pValue = NULL; 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_MapPtrToPtr::GetNextAssoc(rNextPosition, pKey, pValue); 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann rKey = (KeyType)(uintptr_t)pKey; 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann}; 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CXFA_Node; 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CXFA_WidgetData; 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "fxfa_localevalue.h" 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_Node* XFA_CreateUIChild(CXFA_Node* pNode, XFA_ELEMENT& eWidgetType); 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_LocaleValue XFA_GetLocaleValue(CXFA_WidgetData* pWidgetData); 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCFX_WideString XFA_NumericLimit(const CFX_WideString& wsValue, 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iLead, 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iTread); 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_DOUBLE XFA_WideStringToDouble(const CFX_WideString& wsStringVal); 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_DOUBLE XFA_ByteStringToDouble(const CFX_ByteStringC& szStringVal); 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannint32_t XFA_MapRotation(int32_t nRotation); 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#ifndef XFA_PARSE_HAS_LINEIDENTIFIER 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define XFA_PARSE_HAS_LINEIDENTIFIER 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL XFA_RecognizeRichText(IFDE_XMLElement* pRichTextXMLNode); 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid XFA_GetPlainTextFromRichText(IFDE_XMLNode* pXMLNode, 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CFX_WideString& wsPlainText); 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL XFA_FieldIsMultiListBox(CXFA_Node* pFieldNode); 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFX_Stream* XFA_CreateWideTextRead(const CFX_WideString& wsBuffer); 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL XFA_IsLayoutElement(XFA_ELEMENT eElement, 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bLayoutContainer = FALSE); 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL XFA_IsTakingupSpace(XFA_ATTRIBUTEENUM ePresence); 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL XFA_IsFlowingLayout(XFA_ATTRIBUTEENUM eLayout); 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL XFA_IsHorizontalFlow(XFA_ATTRIBUTEENUM eLayout); 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid XFA_DataExporter_DealWithDataGroupNode(CXFA_Node* pDataNode); 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid XFA_DataExporter_RegenerateFormFile(CXFA_Node* pNode, 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFX_Stream* pStream, 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann const FX_CHAR* pChecksum = NULL, 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bSaveXML = FALSE); 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 215