OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/src/foxitlib.h" | 7 #include "xfa/src/foxitlib.h" |
8 #include "xfa/src/fxfa/src/common/xfa_utils.h" | 8 #include "xfa/src/fxfa/src/common/xfa_utils.h" |
9 #include "xfa/src/fxfa/src/common/xfa_object.h" | 9 #include "xfa/src/fxfa/src/common/xfa_object.h" |
10 #include "xfa/src/fxfa/src/common/xfa_document.h" | 10 #include "xfa/src/fxfa/src/common/xfa_document.h" |
(...skipping 441 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
452 if (bUpLevel || wsRef != FX_WSTRC(L"name")) { | 452 if (bUpLevel || wsRef != FX_WSTRC(L"name")) { |
453 dFlags |= (XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings); | 453 dFlags |= (XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings); |
454 } | 454 } |
455 XFA_RESOLVENODE_RS rs; | 455 XFA_RESOLVENODE_RS rs; |
456 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, dFlags, | 456 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, dFlags, |
457 pTemplateNode); | 457 pTemplateNode); |
458 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeAll || | 458 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeAll || |
459 rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeMidAll || | 459 rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeMidAll || |
460 rs.nodes.GetSize() > 1) { | 460 rs.nodes.GetSize() > 1) { |
461 return pDocument->GetNotBindNode(rs.nodes); | 461 return pDocument->GetNotBindNode(rs.nodes); |
462 } else if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeOne) { | 462 } |
| 463 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeOne) { |
463 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; | 464 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; |
464 CXFA_Node* pNode = | 465 CXFA_Node* pNode = ToNode(pObject); |
465 (pObject && pObject->IsNode()) ? (CXFA_Node*)pObject : NULL; | 466 if (!bForceBind && pNode && pNode->HasBindItem()) { |
466 if (!bForceBind && (pNode != NULL) && pNode->HasBindItem()) { | |
467 pNode = NULL; | 467 pNode = NULL; |
468 } | 468 } |
469 return pNode; | 469 return pNode; |
470 } | 470 } |
471 return NULL; | 471 return NULL; |
472 } | 472 } |
473 CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, | 473 CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, |
474 XFA_ELEMENT eClassID, | 474 XFA_ELEMENT eClassID, |
475 FX_DWORD dwNameHash, | 475 FX_DWORD dwNameHash, |
476 CXFA_Node* pFormParent) { | 476 CXFA_Node* pFormParent) { |
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
833 pFirstInstance = pSubformNode; | 833 pFirstInstance = pSubformNode; |
834 } | 834 } |
835 XFA_DataMerge_CreateDataBinding(pSubformNode, pDataNode); | 835 XFA_DataMerge_CreateDataBinding(pSubformNode, pDataNode); |
836 FXSYS_assert(pSubformNode); | 836 FXSYS_assert(pSubformNode); |
837 subformMapArray.SetAt(pSubformNode, pDataNode); | 837 subformMapArray.SetAt(pSubformNode, pDataNode); |
838 subformArray.Add(pSubformNode); | 838 subformArray.Add(pSubformNode); |
839 } | 839 } |
840 subformMapArray.GetStartPosition(); | 840 subformMapArray.GetStartPosition(); |
841 for (int32_t iIndex = 0; iIndex < subformArray.GetSize(); iIndex++) { | 841 for (int32_t iIndex = 0; iIndex < subformArray.GetSize(); iIndex++) { |
842 CXFA_Node* pSubform = subformArray[iIndex]; | 842 CXFA_Node* pSubform = subformArray[iIndex]; |
843 CXFA_Node* pDataNode = (CXFA_Node*)subformMapArray.GetValueAt(pSubform); | 843 CXFA_Node* pDataNode = |
| 844 reinterpret_cast<CXFA_Node*>(subformMapArray.GetValueAt(pSubform)); |
844 for (CXFA_Node* pTemplateChild = | 845 for (CXFA_Node* pTemplateChild = |
845 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 846 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
846 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 847 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
847 XFA_NODEITEM_NextSibling)) { | 848 XFA_NODEITEM_NextSibling)) { |
848 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { | 849 if (XFA_NeedGenerateForm(pTemplateChild, bUseInstanceManager)) { |
849 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubform, | 850 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubform, |
850 pTemplateChild, TRUE); | 851 pTemplateChild, TRUE); |
851 } else if (pTemplateChild->GetObjectType() == | 852 } else if (pTemplateChild->GetObjectType() == |
852 XFA_OBJECTTYPE_ContainerNode) { | 853 XFA_OBJECTTYPE_ContainerNode) { |
853 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubform, | 854 pDocument->DataMerge_CopyContainer(pTemplateChild, pSubform, |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1155 if (!bDataRef || bParentDataRef) { | 1156 if (!bDataRef || bParentDataRef) { |
1156 FX_DWORD dwNameHash = pFormNode->GetNameHash(); | 1157 FX_DWORD dwNameHash = pFormNode->GetNameHash(); |
1157 if (dwNameHash != 0 && !pDataNode) { | 1158 if (dwNameHash != 0 && !pDataNode) { |
1158 pDataNode = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); | 1159 pDataNode = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); |
1159 if (!pDataNode) { | 1160 if (!pDataNode) { |
1160 XFA_ELEMENT eDataNodeType = (eClassID == XFA_ELEMENT_Subform || | 1161 XFA_ELEMENT eDataNodeType = (eClassID == XFA_ELEMENT_Subform || |
1161 XFA_FieldIsMultiListBox(pFormNode)) | 1162 XFA_FieldIsMultiListBox(pFormNode)) |
1162 ? XFA_ELEMENT_DataGroup | 1163 ? XFA_ELEMENT_DataGroup |
1163 : XFA_ELEMENT_DataValue; | 1164 : XFA_ELEMENT_DataValue; |
1164 CXFA_Node* pRecordNode = | 1165 CXFA_Node* pRecordNode = |
1165 (CXFA_Node*)pDocument->GetXFAObject(XFA_HASHCODE_Record); | 1166 ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record)); |
1166 pDataNode = XFA_DataDescription_MaybeCreateDataNode( | 1167 pDataNode = XFA_DataDescription_MaybeCreateDataNode( |
1167 pDocument, pRecordNode, eDataNodeType, | 1168 pDocument, pRecordNode, eDataNodeType, |
1168 pFormNode->GetCData(XFA_ATTRIBUTE_Name)); | 1169 pFormNode->GetCData(XFA_ATTRIBUTE_Name)); |
1169 if (pDataNode) { | 1170 if (pDataNode) { |
1170 XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE); | 1171 XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE); |
1171 XFA_DataMerge_RegisterGlobalBinding( | 1172 XFA_DataMerge_RegisterGlobalBinding( |
1172 pDocument, pFormNode->GetNameHash(), pDataNode); | 1173 pDocument, pFormNode->GetNameHash(), pDataNode); |
1173 } | 1174 } |
1174 } else { | 1175 } else { |
1175 XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode); | 1176 XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode); |
1176 } | 1177 } |
1177 } | 1178 } |
1178 if (!pDataNode) { | 1179 if (!pDataNode) { |
1179 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); | 1180 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); |
1180 } | 1181 } |
1181 } | 1182 } |
1182 break; | 1183 break; |
1183 case XFA_ATTRIBUTEENUM_DataRef: { | 1184 case XFA_ATTRIBUTEENUM_DataRef: { |
1184 bMatchRef = bDataRef; | 1185 bMatchRef = bDataRef; |
1185 bParentDataRef = TRUE; | 1186 bParentDataRef = TRUE; |
1186 if (!pDataNode && bDataRef) { | 1187 if (!pDataNode && bDataRef) { |
1187 CFX_WideStringC wsRef = | 1188 CFX_WideStringC wsRef = |
1188 pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref); | 1189 pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref); |
1189 FX_DWORD dFlags = | 1190 FX_DWORD dFlags = |
1190 XFA_RESOLVENODE_Children | XFA_RESOLVENODE_CreateNode; | 1191 XFA_RESOLVENODE_Children | XFA_RESOLVENODE_CreateNode; |
1191 XFA_RESOLVENODE_RS rs; | 1192 XFA_RESOLVENODE_RS rs; |
1192 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, | 1193 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, |
1193 dFlags, pTemplateNode); | 1194 dFlags, pTemplateNode); |
1194 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; | 1195 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; |
1195 pDataNode = | 1196 pDataNode = ToNode(pObject); |
1196 (pObject && pObject->IsNode()) ? (CXFA_Node*)pObject : NULL; | |
1197 if (pDataNode) { | 1197 if (pDataNode) { |
1198 XFA_DataMerge_CreateDataBinding( | 1198 XFA_DataMerge_CreateDataBinding( |
1199 pFormNode, pDataNode, | 1199 pFormNode, pDataNode, |
1200 rs.dwFlags == XFA_RESOVENODE_RSTYPE_ExistNodes); | 1200 rs.dwFlags == XFA_RESOVENODE_RSTYPE_ExistNodes); |
1201 } else { | 1201 } else { |
1202 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); | 1202 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); |
1203 } | 1203 } |
1204 } | 1204 } |
1205 } break; | 1205 } break; |
1206 default: | 1206 default: |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1272 } break; | 1272 } break; |
1273 case XFA_ATTRIBUTEENUM_Global: { | 1273 case XFA_ATTRIBUTEENUM_Global: { |
1274 FX_DWORD dwNameHash = pFormNode->GetNameHash(); | 1274 FX_DWORD dwNameHash = pFormNode->GetNameHash(); |
1275 if (dwNameHash != 0 && !pDataNode) { | 1275 if (dwNameHash != 0 && !pDataNode) { |
1276 pDataNode = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); | 1276 pDataNode = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); |
1277 if (!pDataNode) { | 1277 if (!pDataNode) { |
1278 XFA_ELEMENT eDataNodeType = eClassID == XFA_ELEMENT_Subform | 1278 XFA_ELEMENT eDataNodeType = eClassID == XFA_ELEMENT_Subform |
1279 ? XFA_ELEMENT_DataGroup | 1279 ? XFA_ELEMENT_DataGroup |
1280 : XFA_ELEMENT_DataValue; | 1280 : XFA_ELEMENT_DataValue; |
1281 CXFA_Node* pRecordNode = | 1281 CXFA_Node* pRecordNode = |
1282 (CXFA_Node*)pDocument->GetXFAObject(XFA_HASHCODE_Record); | 1282 ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record)); |
1283 pDataNode = XFA_DataDescription_MaybeCreateDataNode( | 1283 pDataNode = XFA_DataDescription_MaybeCreateDataNode( |
1284 pDocument, pRecordNode, eDataNodeType, | 1284 pDocument, pRecordNode, eDataNodeType, |
1285 pFormNode->GetCData(XFA_ATTRIBUTE_Name)); | 1285 pFormNode->GetCData(XFA_ATTRIBUTE_Name)); |
1286 } | 1286 } |
1287 if (pDataNode) { | 1287 if (pDataNode) { |
1288 XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE); | 1288 XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE); |
1289 XFA_DataMerge_RegisterGlobalBinding( | 1289 XFA_DataMerge_RegisterGlobalBinding( |
1290 pDocument, pFormNode->GetNameHash(), pDataNode); | 1290 pDocument, pFormNode->GetNameHash(), pDataNode); |
1291 } | 1291 } |
1292 } | 1292 } |
1293 } break; | 1293 } break; |
1294 case XFA_ATTRIBUTEENUM_DataRef: { | 1294 case XFA_ATTRIBUTEENUM_DataRef: { |
1295 if (!pDataNode) { | 1295 if (!pDataNode) { |
1296 CFX_WideStringC wsRef = pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref); | 1296 CFX_WideStringC wsRef = pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref); |
1297 FX_DWORD dFlags = XFA_RESOLVENODE_Children | | 1297 FX_DWORD dFlags = XFA_RESOLVENODE_Children | |
1298 XFA_RESOLVENODE_Attributes | | 1298 XFA_RESOLVENODE_Attributes | |
1299 XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_Parent | | 1299 XFA_RESOLVENODE_Siblings | XFA_RESOLVENODE_Parent | |
1300 XFA_RESOLVENODE_CreateNode; | 1300 XFA_RESOLVENODE_CreateNode; |
1301 XFA_RESOLVENODE_RS rs; | 1301 XFA_RESOLVENODE_RS rs; |
1302 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, | 1302 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, |
1303 dFlags, pTemplateNode); | 1303 dFlags, pTemplateNode); |
1304 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; | 1304 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; |
1305 pDataNode = (pObject && pObject->IsNode()) ? (CXFA_Node*)pObject : NULL; | 1305 pDataNode = ToNode(pObject); |
1306 if (pDataNode) { | 1306 if (pDataNode) { |
1307 XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE); | 1307 XFA_DataMerge_CreateDataBinding(pFormNode, pDataNode, FALSE); |
1308 } | 1308 } |
1309 } | 1309 } |
1310 } break; | 1310 } break; |
1311 } | 1311 } |
1312 } | 1312 } |
1313 if(eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_ExclGroup || eClas
sID == XFA_ELEMENT_SubformSet || eClassID == XFA_ELEMENT_Area || eClassID == XFA
_ELEMENT_PageArea) | 1313 if(eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_ExclGroup || eClas
sID == XFA_ELEMENT_SubformSet || eClassID == XFA_ELEMENT_Area || eClassID == XFA
_ELEMENT_PageArea) |
1314 { | 1314 { |
1315 for (CXFA_Node* pFormChild = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 1315 for (CXFA_Node* pFormChild = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
(...skipping 14 matching lines...) Expand all Loading... |
1330 CXFA_Node* XFA_DataMerge_FindDataScope(CXFA_Node* pParentFormNode) { | 1330 CXFA_Node* XFA_DataMerge_FindDataScope(CXFA_Node* pParentFormNode) { |
1331 for (CXFA_Node* pRootBoundNode = pParentFormNode; | 1331 for (CXFA_Node* pRootBoundNode = pParentFormNode; |
1332 pRootBoundNode && | 1332 pRootBoundNode && |
1333 pRootBoundNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode; | 1333 pRootBoundNode->GetObjectType() == XFA_OBJECTTYPE_ContainerNode; |
1334 pRootBoundNode = pRootBoundNode->GetNodeItem(XFA_NODEITEM_Parent)) { | 1334 pRootBoundNode = pRootBoundNode->GetNodeItem(XFA_NODEITEM_Parent)) { |
1335 CXFA_Node* pDataScope = pRootBoundNode->GetBindData(); | 1335 CXFA_Node* pDataScope = pRootBoundNode->GetBindData(); |
1336 if (pDataScope) { | 1336 if (pDataScope) { |
1337 return pDataScope; | 1337 return pDataScope; |
1338 } | 1338 } |
1339 } | 1339 } |
1340 return (CXFA_Node*)pParentFormNode->GetDocument()->GetXFAObject( | 1340 return ToNode( |
1341 XFA_HASHCODE_Data); | 1341 pParentFormNode->GetDocument()->GetXFAObject(XFA_HASHCODE_Data)); |
1342 } | 1342 } |
1343 void CXFA_Document::DataMerge_UpdateBindingRelations( | 1343 void CXFA_Document::DataMerge_UpdateBindingRelations( |
1344 CXFA_Node* pFormUpdateRoot) { | 1344 CXFA_Node* pFormUpdateRoot) { |
1345 CXFA_Node* pDataScope = XFA_DataMerge_FindDataScope( | 1345 CXFA_Node* pDataScope = XFA_DataMerge_FindDataScope( |
1346 pFormUpdateRoot->GetNodeItem(XFA_NODEITEM_Parent)); | 1346 pFormUpdateRoot->GetNodeItem(XFA_NODEITEM_Parent)); |
1347 if (!pDataScope) { | 1347 if (!pDataScope) { |
1348 return; | 1348 return; |
1349 } | 1349 } |
1350 #ifdef XFA_DATAMERGE_UPDATEBINDINGRELATIONS_DFS | 1350 #ifdef XFA_DATAMERGE_UPDATEBINDINGRELATIONS_DFS |
1351 XFA_DataMerge_UpdateBindingRelations(this, pFormUpdateRoot, pDataScope, FALSE, | 1351 XFA_DataMerge_UpdateBindingRelations(this, pFormUpdateRoot, pDataScope, FALSE, |
1352 FALSE); | 1352 FALSE); |
1353 XFA_DataMerge_UpdateBindingRelations(this, pFormUpdateRoot, pDataScope, TRUE, | 1353 XFA_DataMerge_UpdateBindingRelations(this, pFormUpdateRoot, pDataScope, TRUE, |
1354 FALSE); | 1354 FALSE); |
1355 #else | 1355 #else |
1356 CFX_PtrList rgFormNodeList, rgDataScopeList; | 1356 CFX_PtrList rgFormNodeList, rgDataScopeList; |
1357 rgFormNodeList.AddTail(pFormUpdateRoot); | 1357 rgFormNodeList.AddTail(pFormUpdateRoot); |
1358 rgDataScopeList.AddTail(pDataScope); | 1358 rgDataScopeList.AddTail(pDataScope); |
1359 while (rgFormNodeList.GetCount()) { | 1359 while (rgFormNodeList.GetCount()) { |
1360 FX_POSITION pos; | 1360 FX_POSITION pos; |
1361 pos = rgFormNodeList.GetHeadPosition(); | 1361 pos = rgFormNodeList.GetHeadPosition(); |
1362 CXFA_Node* pCurFormNode = (CXFA_Node*)rgFormNodeList.GetAt(pos); | 1362 CXFA_Node* pCurFormNode = ToNode(rgFormNodeList.GetAt(pos)); |
1363 rgFormNodeList.RemoveAt(pos); | 1363 rgFormNodeList.RemoveAt(pos); |
1364 pos = rgDataScopeList.GetHeadPosition(); | 1364 pos = rgDataScopeList.GetHeadPosition(); |
1365 CXFA_Node* pCurDataScope = (CXFA_Node*)rgDataScopeList.GetAt(pos); | 1365 CXFA_Node* pCurDataScope = ToNode(rgDataScopeList.GetAt(pos)); |
1366 rgDataScopeList.RemoveAt(pos); | 1366 rgDataScopeList.RemoveAt(pos); |
1367 XFA_DataMerge_UpdateBindingRelations(this, pCurFormNode, pCurDataScope, | 1367 XFA_DataMerge_UpdateBindingRelations(this, pCurFormNode, pCurDataScope, |
1368 rgFormNodeList, rgDataScopeList); | 1368 rgFormNodeList, rgDataScopeList); |
1369 } | 1369 } |
1370 #endif | 1370 #endif |
1371 } | 1371 } |
1372 CXFA_Node* CXFA_Document::GetNotBindNode(CXFA_ObjArray& arrayNodes) { | 1372 CXFA_Node* CXFA_Document::GetNotBindNode(CXFA_ObjArray& arrayNodes) { |
1373 for (int32_t i = 0; i < arrayNodes.GetSize(); i++) { | 1373 for (int32_t i = 0; i < arrayNodes.GetSize(); i++) { |
1374 CXFA_Object* pObject = arrayNodes[i]; | 1374 CXFA_Node* pNode = arrayNodes[i]->AsNode(); |
1375 if (!pObject->IsNode()) { | 1375 if (pNode && !pNode->HasBindItem()) |
1376 continue; | 1376 return pNode; |
1377 } | |
1378 if (((CXFA_Node*)pObject)->HasBindItem()) { | |
1379 continue; | |
1380 } | |
1381 return ((CXFA_Node*)pObject); | |
1382 } | 1377 } |
1383 return NULL; | 1378 return nullptr; |
1384 } | 1379 } |
1385 void CXFA_Document::DoDataMerge() { | 1380 void CXFA_Document::DoDataMerge() { |
1386 CXFA_Node* pDatasetsRoot = (CXFA_Node*)GetXFAObject(XFA_HASHCODE_Datasets); | 1381 CXFA_Node* pDatasetsRoot = ToNode(GetXFAObject(XFA_HASHCODE_Datasets)); |
1387 if (!pDatasetsRoot) { | 1382 if (!pDatasetsRoot) { |
1388 IFDE_XMLElement* pDatasetsXMLNode = | 1383 IFDE_XMLElement* pDatasetsXMLNode = |
1389 IFDE_XMLElement::Create(FX_WSTRC(L"xfa:datasets")); | 1384 IFDE_XMLElement::Create(FX_WSTRC(L"xfa:datasets")); |
1390 FXSYS_assert(pDatasetsXMLNode); | 1385 FXSYS_assert(pDatasetsXMLNode); |
1391 pDatasetsXMLNode->SetString( | 1386 pDatasetsXMLNode->SetString( |
1392 FX_WSTRC(L"xmlns:xfa"), | 1387 FX_WSTRC(L"xmlns:xfa"), |
1393 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/")); | 1388 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/")); |
1394 pDatasetsRoot = CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel); | 1389 pDatasetsRoot = CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel); |
1395 pDatasetsRoot->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"datasets")); | 1390 pDatasetsRoot->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"datasets")); |
1396 m_pRootNode->GetXMLMappingNode()->InsertChildNode(pDatasetsXMLNode); | 1391 m_pRootNode->GetXMLMappingNode()->InsertChildNode(pDatasetsXMLNode); |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1530 pNode = sIterator.MoveToNext(); | 1525 pNode = sIterator.MoveToNext(); |
1531 } | 1526 } |
1532 } else { | 1527 } else { |
1533 pNode->SetFlag(XFA_NODEFLAG_Initialized); | 1528 pNode->SetFlag(XFA_NODEFLAG_Initialized); |
1534 pNode = sIterator.MoveToNext(); | 1529 pNode = sIterator.MoveToNext(); |
1535 } | 1530 } |
1536 } | 1531 } |
1537 } | 1532 } |
1538 } | 1533 } |
1539 void CXFA_Document::DoDataRemerge(FX_BOOL bDoDataMerge) { | 1534 void CXFA_Document::DoDataRemerge(FX_BOOL bDoDataMerge) { |
1540 CXFA_Node* pFormRoot = (CXFA_Node*)this->GetXFAObject(XFA_HASHCODE_Form); | 1535 CXFA_Node* pFormRoot = ToNode(GetXFAObject(XFA_HASHCODE_Form)); |
1541 if (pFormRoot) { | 1536 if (pFormRoot) { |
1542 while (CXFA_Node* pNode = pFormRoot->GetNodeItem(XFA_NODEITEM_FirstChild)) { | 1537 while (CXFA_Node* pNode = pFormRoot->GetNodeItem(XFA_NODEITEM_FirstChild)) { |
1543 pFormRoot->RemoveChild(pNode); | 1538 pFormRoot->RemoveChild(pNode); |
1544 } | 1539 } |
1545 pFormRoot->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); | 1540 pFormRoot->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); |
1546 } | 1541 } |
1547 XFA_DataMerge_ClearGlobalBinding(this); | 1542 XFA_DataMerge_ClearGlobalBinding(this); |
1548 if (bDoDataMerge) { | 1543 if (bDoDataMerge) { |
1549 DoDataMerge(); | 1544 DoDataMerge(); |
1550 } | 1545 } |
1551 CXFA_LayoutProcessor* pLayoutProcessor = GetLayoutProcessor(); | 1546 CXFA_LayoutProcessor* pLayoutProcessor = GetLayoutProcessor(); |
1552 pLayoutProcessor->SetForceReLayout(TRUE); | 1547 pLayoutProcessor->SetForceReLayout(TRUE); |
1553 } | 1548 } |
OLD | NEW |