diff options
Diffstat (limited to 'core/fpdfdoc/clines.cpp')
-rw-r--r-- | core/fpdfdoc/clines.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/core/fpdfdoc/clines.cpp b/core/fpdfdoc/clines.cpp new file mode 100644 index 0000000000..b11731042d --- /dev/null +++ b/core/fpdfdoc/clines.cpp @@ -0,0 +1,50 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fpdfdoc/clines.h" + +CLines::CLines() : m_nTotal(0) {} + +CLines::~CLines() { + RemoveAll(); +} + +int32_t CLines::GetSize() const { + return m_Lines.GetSize(); +} + +CLine* CLines::GetAt(int32_t nIndex) const { + return m_Lines.GetAt(nIndex); +} + +void CLines::Empty() { + m_nTotal = 0; +} + +void CLines::RemoveAll() { + for (int32_t i = 0, sz = GetSize(); i < sz; i++) + delete GetAt(i); + m_Lines.RemoveAll(); + m_nTotal = 0; +} + +int32_t CLines::Add(const CPVT_LineInfo& lineinfo) { + if (m_nTotal >= GetSize()) { + CLine* pLine = new CLine; + pLine->m_LineInfo = lineinfo; + m_Lines.Add(pLine); + } else if (CLine* pLine = GetAt(m_nTotal)) { + pLine->m_LineInfo = lineinfo; + } + return m_nTotal++; +} + +void CLines::Clear() { + for (int32_t i = GetSize() - 1; i >= m_nTotal; i--) { + delete GetAt(i); + m_Lines.RemoveAt(i); + } +} |