| 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/fgas/layout/fgas_rtfbreak.h" | 7 #include "xfa/fgas/layout/fgas_rtfbreak.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| 11 #include "core/fxcrt/fx_arabic.h" | 11 #include "core/fxcrt/fx_arabic.h" |
| 12 #include "core/fxcrt/fx_arb.h" | 12 #include "core/fxcrt/fx_arb.h" |
| 13 #include "third_party/base/stl_util.h" |
| 13 #include "xfa/fgas/font/cfgas_gefont.h" | 14 #include "xfa/fgas/font/cfgas_gefont.h" |
| 14 #include "xfa/fgas/layout/fgas_linebreak.h" | 15 #include "xfa/fgas/layout/fgas_linebreak.h" |
| 15 #include "xfa/fgas/layout/fgas_unicode.h" | 16 #include "xfa/fgas/layout/fgas_unicode.h" |
| 16 | 17 |
| 17 CFX_RTFBreak::CFX_RTFBreak(uint32_t dwPolicies) | 18 CFX_RTFBreak::CFX_RTFBreak(uint32_t dwPolicies) |
| 18 : m_dwPolicies(dwPolicies), | 19 : m_dwPolicies(dwPolicies), |
| 19 m_iBoundaryStart(0), | 20 m_iBoundaryStart(0), |
| 20 m_iBoundaryEnd(2000000), | 21 m_iBoundaryEnd(2000000), |
| 21 m_dwLayoutStyles(0), | 22 m_dwLayoutStyles(0), |
| 22 m_bPagination(false), | 23 m_bPagination(false), |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 break; | 146 break; |
| 146 } | 147 } |
| 147 } | 148 } |
| 148 m_PositionedTabs.InsertAt(iFind, iTabPos); | 149 m_PositionedTabs.InsertAt(iFind, iTabPos); |
| 149 if (m_dwPolicies & FX_RTFBREAKPOLICY_OrphanPositionedTab) { | 150 if (m_dwPolicies & FX_RTFBREAKPOLICY_OrphanPositionedTab) { |
| 150 m_bOrphanLine = GetLastPositionedTab() >= iLineEnd; | 151 m_bOrphanLine = GetLastPositionedTab() >= iLineEnd; |
| 151 } else { | 152 } else { |
| 152 m_bOrphanLine = false; | 153 m_bOrphanLine = false; |
| 153 } | 154 } |
| 154 } | 155 } |
| 155 void CFX_RTFBreak::SetPositionedTabs(const CFX_FloatArray& tabs) { | 156 void CFX_RTFBreak::SetPositionedTabs(const std::vector<FX_FLOAT>& tabs) { |
| 156 m_PositionedTabs.RemoveAll(); | 157 m_PositionedTabs.RemoveAll(); |
| 157 int32_t iCount = tabs.GetSize(); | 158 int32_t iCount = pdfium::CollectionSize<int32_t>(tabs); |
| 158 m_PositionedTabs.SetSize(iCount); | 159 m_PositionedTabs.SetSize(iCount); |
| 159 int32_t iLineEnd = m_iBoundaryEnd; | 160 int32_t iLineEnd = m_iBoundaryEnd; |
| 160 int32_t iTabPos; | 161 int32_t iTabPos; |
| 161 for (int32_t i = 0; i < iCount; i++) { | 162 for (int32_t i = 0; i < iCount; i++) { |
| 162 iTabPos = FXSYS_round(tabs[i] * 20000.0f) + m_iBoundaryStart; | 163 iTabPos = FXSYS_round(tabs[i] * 20000.0f) + m_iBoundaryStart; |
| 163 if (iTabPos > iLineEnd) { | 164 if (iTabPos > iLineEnd) { |
| 164 iTabPos = iLineEnd; | 165 iTabPos = iLineEnd; |
| 165 } | 166 } |
| 166 m_PositionedTabs[i] = iTabPos; | 167 m_PositionedTabs[i] = iTabPos; |
| 167 } | 168 } |
| (...skipping 1390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1558 iLength(0), | 1559 iLength(0), |
| 1559 pFont(nullptr), | 1560 pFont(nullptr), |
| 1560 fFontSize(12.0f), | 1561 fFontSize(12.0f), |
| 1561 dwLayoutStyles(0), | 1562 dwLayoutStyles(0), |
| 1562 iCharRotation(0), | 1563 iCharRotation(0), |
| 1563 iBidiLevel(0), | 1564 iBidiLevel(0), |
| 1564 pRect(nullptr), | 1565 pRect(nullptr), |
| 1565 wLineBreakChar(L'\n'), | 1566 wLineBreakChar(L'\n'), |
| 1566 iHorizontalScale(100), | 1567 iHorizontalScale(100), |
| 1567 iVerticalScale(100) {} | 1568 iVerticalScale(100) {} |
| OLD | NEW |