Chromium Code Reviews| 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/fxfa/parser/xfa_layout_itemlayout.h" | 7 #include "xfa/fxfa/parser/xfa_layout_itemlayout.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| 11 | 11 |
| 12 #include "xfa/fgas/crt/fgas_algorithm.h" | |
| 13 #include "xfa/fxfa/app/xfa_ffnotify.h" | 12 #include "xfa/fxfa/app/xfa_ffnotify.h" |
| 14 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" | 13 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" |
| 15 #include "xfa/fxfa/parser/cxfa_occur.h" | 14 #include "xfa/fxfa/parser/cxfa_occur.h" |
| 16 #include "xfa/fxfa/parser/xfa_doclayout.h" | 15 #include "xfa/fxfa/parser/xfa_doclayout.h" |
| 17 #include "xfa/fxfa/parser/xfa_document.h" | 16 #include "xfa/fxfa/parser/xfa_document.h" |
| 18 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" | 17 #include "xfa/fxfa/parser/xfa_document_layout_imp.h" |
| 19 #include "xfa/fxfa/parser/xfa_layout_appadapter.h" | 18 #include "xfa/fxfa/parser/xfa_layout_appadapter.h" |
| 20 #include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h" | 19 #include "xfa/fxfa/parser/xfa_layout_pagemgr_new.h" |
| 21 #include "xfa/fxfa/parser/xfa_localemgr.h" | 20 #include "xfa/fxfa/parser/xfa_localemgr.h" |
| 22 #include "xfa/fxfa/parser/xfa_object.h" | 21 #include "xfa/fxfa/parser/xfa_object.h" |
| 23 #include "xfa/fxfa/parser/xfa_parser.h" | 22 #include "xfa/fxfa/parser/xfa_parser.h" |
| 24 #include "xfa/fxfa/parser/xfa_parser_imp.h" | 23 #include "xfa/fxfa/parser/xfa_parser_imp.h" |
| 25 #include "xfa/fxfa/parser/xfa_script.h" | 24 #include "xfa/fxfa/parser/xfa_script.h" |
| 26 #include "xfa/fxfa/parser/xfa_utils.h" | 25 #include "xfa/fxfa/parser/xfa_utils.h" |
| 27 | 26 |
| 27 namespace { | |
| 28 | |
| 29 int32_t SeparateStringW(const FX_WCHAR* pStr, | |
| 30 int32_t iStrLen, | |
| 31 FX_WCHAR delimiter, | |
| 32 CFX_WideStringArray& pieces) { | |
| 33 if (pStr == NULL) { | |
|
Tom Sepez
2016/05/18 22:01:22
nit: !pStr, no braces
dsinclair
2016/05/19 14:24:44
Done.
| |
| 34 return 0; | |
| 35 } | |
| 36 if (iStrLen < 0) { | |
|
Tom Sepez
2016/05/18 22:01:21
no {}
dsinclair
2016/05/19 14:24:44
Done.
| |
| 37 iStrLen = FXSYS_wcslen(pStr); | |
| 38 } | |
| 39 const FX_WCHAR* pToken = pStr; | |
| 40 const FX_WCHAR* pEnd = pStr + iStrLen; | |
| 41 while (TRUE) { | |
| 42 if (pStr >= pEnd || delimiter == *pStr) { | |
| 43 CFX_WideString sub(pToken, pStr - pToken); | |
| 44 pieces.Add(sub); | |
| 45 pToken = pStr + 1; | |
| 46 if (pStr >= pEnd) { | |
| 47 break; | |
| 48 } | |
| 49 } | |
| 50 pStr++; | |
| 51 } | |
| 52 return pieces.GetSize(); | |
| 53 } | |
| 54 | |
| 55 } // namespace | |
| 56 | |
| 28 CXFA_ItemLayoutProcessor::CXFA_ItemLayoutProcessor(CXFA_Node* pNode, | 57 CXFA_ItemLayoutProcessor::CXFA_ItemLayoutProcessor(CXFA_Node* pNode, |
| 29 CXFA_LayoutPageMgr* pPageMgr) | 58 CXFA_LayoutPageMgr* pPageMgr) |
| 30 : m_bKeepBreakFinish(FALSE), | 59 : m_bKeepBreakFinish(FALSE), |
| 31 m_bIsProcessKeep(FALSE), | 60 m_bIsProcessKeep(FALSE), |
| 32 m_pKeepHeadNode(nullptr), | 61 m_pKeepHeadNode(nullptr), |
| 33 m_pKeepTailNode(nullptr), | 62 m_pKeepTailNode(nullptr), |
| 34 m_pFormNode(pNode), | 63 m_pFormNode(pNode), |
| 35 m_pLayoutItem(nullptr), | 64 m_pLayoutItem(nullptr), |
| 36 m_pOldLayoutItem(nullptr), | 65 m_pOldLayoutItem(nullptr), |
| 37 m_pCurChildNode(XFA_LAYOUT_INVALIDNODE), | 66 m_pCurChildNode(XFA_LAYOUT_INVALIDNODE), |
| (...skipping 1335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1373 pMarginNode->GetMeasure(XFA_ATTRIBUTE_LeftInset).ToUnit(XFA_UNIT_Pt); | 1402 pMarginNode->GetMeasure(XFA_ATTRIBUTE_LeftInset).ToUnit(XFA_UNIT_Pt); |
| 1374 fRightInset = | 1403 fRightInset = |
| 1375 pMarginNode->GetMeasure(XFA_ATTRIBUTE_RightInset).ToUnit(XFA_UNIT_Pt); | 1404 pMarginNode->GetMeasure(XFA_ATTRIBUTE_RightInset).ToUnit(XFA_UNIT_Pt); |
| 1376 } | 1405 } |
| 1377 FX_FLOAT fContentWidthLimit = | 1406 FX_FLOAT fContentWidthLimit = |
| 1378 bContainerWidthAutoSize ? XFA_LAYOUT_FLOAT_MAX | 1407 bContainerWidthAutoSize ? XFA_LAYOUT_FLOAT_MAX |
| 1379 : fContainerWidth - fLeftInset - fRightInset; | 1408 : fContainerWidth - fLeftInset - fRightInset; |
| 1380 CFX_WideStringC wsColumnWidths; | 1409 CFX_WideStringC wsColumnWidths; |
| 1381 if (pLayoutNode->TryCData(XFA_ATTRIBUTE_ColumnWidths, wsColumnWidths)) { | 1410 if (pLayoutNode->TryCData(XFA_ATTRIBUTE_ColumnWidths, wsColumnWidths)) { |
| 1382 CFX_WideStringArray widths; | 1411 CFX_WideStringArray widths; |
| 1383 if (FX_SeparateStringW(wsColumnWidths.c_str(), wsColumnWidths.GetLength(), | 1412 if (SeparateStringW(wsColumnWidths.c_str(), wsColumnWidths.GetLength(), |
| 1384 L' ', widths) > 0) { | 1413 L' ', widths) > 0) { |
| 1385 int32_t iCols = widths.GetSize(); | 1414 int32_t iCols = widths.GetSize(); |
| 1386 CFX_WideString wsWidth; | 1415 CFX_WideString wsWidth; |
| 1387 for (int32_t i = 0; i < iCols; i++) { | 1416 for (int32_t i = 0; i < iCols; i++) { |
| 1388 wsWidth = widths[i]; | 1417 wsWidth = widths[i]; |
| 1389 wsWidth.TrimLeft(L' '); | 1418 wsWidth.TrimLeft(L' '); |
| 1390 if (!wsWidth.IsEmpty()) { | 1419 if (!wsWidth.IsEmpty()) { |
| 1391 CXFA_Measurement measure(wsWidth.AsStringC()); | 1420 CXFA_Measurement measure(wsWidth.AsStringC()); |
| 1392 m_rgSpecifiedColumnWidths.Add(measure.ToUnit(XFA_UNIT_Pt)); | 1421 m_rgSpecifiedColumnWidths.Add(measure.ToUnit(XFA_UNIT_Pt)); |
| 1393 } | 1422 } |
| 1394 } | 1423 } |
| (...skipping 1568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2963 (int32_t)(uintptr_t)m_PendingNodesCount.GetValueAt(pTemplate); | 2992 (int32_t)(uintptr_t)m_PendingNodesCount.GetValueAt(pTemplate); |
| 2964 if (iCount >= iMax) { | 2993 if (iCount >= iMax) { |
| 2965 return FALSE; | 2994 return FALSE; |
| 2966 } | 2995 } |
| 2967 iCount++; | 2996 iCount++; |
| 2968 m_PendingNodesCount.SetAt(pTemplate, (void*)(uintptr_t)(iCount)); | 2997 m_PendingNodesCount.SetAt(pTemplate, (void*)(uintptr_t)(iCount)); |
| 2969 return TRUE; | 2998 return TRUE; |
| 2970 } | 2999 } |
| 2971 return TRUE; | 3000 return TRUE; |
| 2972 } | 3001 } |
| OLD | NEW |