1d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Copyright 2017 PDFium Authors. All rights reserved. 2d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// found in the LICENSE file. 4d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 5d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 7d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann#include "xfa/fgas/layout/cfx_breakpiece.h" 8d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 9d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCFX_BreakPiece::CFX_BreakPiece() 10d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann : m_dwStatus(CFX_BreakType::Piece), 11d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iStartPos(0), 12d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iWidth(-1), 13d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iStartChar(0), 14d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iChars(0), 15d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iBidiLevel(0), 16d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iBidiPos(0), 17d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iFontSize(0), 18d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iHorizontalScale(100), 19d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_iVerticalScale(100), 20d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_dwIdentity(0), 21d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_dwCharStyles(0), 22d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann m_pChars(nullptr) {} 23d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 24d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCFX_BreakPiece::CFX_BreakPiece(const CFX_BreakPiece& other) = default; 25d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 26d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCFX_BreakPiece::~CFX_BreakPiece() = default; 27d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 28d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannint32_t CFX_BreakPiece::GetEndPos() const { 29d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return m_iWidth < 0 ? m_iStartPos : m_iStartPos + m_iWidth; 30d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 31d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 32d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannCFX_Char* CFX_BreakPiece::GetChar(int32_t index) const { 33d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ASSERT(index >= 0 && index < m_iChars && m_pChars); 34d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return &(*m_pChars)[m_iStartChar + index]; 35d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 36d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 37d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. MoltmannWideString CFX_BreakPiece::GetString() const { 38d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann WideString ret; 39d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ret.Reserve(m_iChars); 40d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann for (int32_t i = m_iStartChar; i < m_iStartChar + m_iChars; i++) 41d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ret += static_cast<wchar_t>((*m_pChars)[i].char_code()); 42d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return ret; 43d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 44d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann 45d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmannstd::vector<int32_t> CFX_BreakPiece::GetWidths() const { 46d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann std::vector<int32_t> ret; 47d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ret.reserve(m_iChars); 48d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann for (int32_t i = m_iStartChar; i < m_iStartChar + m_iChars; i++) 49d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann ret.push_back((*m_pChars)[i].m_iCharWidth); 50d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann return ret; 51d904c1ec7e8d1d86ed56f0dd252435d12cd345aePhilip P. Moltmann} 52