• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #include "core/fpdfdoc/clines.h"
8 
9 #include "core/fpdfdoc/cline.h"
10 
CLines()11 CLines::CLines() : m_nTotal(0) {}
12 
~CLines()13 CLines::~CLines() {
14   RemoveAll();
15 }
16 
GetSize() const17 int32_t CLines::GetSize() const {
18   return m_Lines.GetSize();
19 }
20 
GetAt(int32_t nIndex) const21 CLine* CLines::GetAt(int32_t nIndex) const {
22   return m_Lines.GetAt(nIndex);
23 }
24 
Empty()25 void CLines::Empty() {
26   m_nTotal = 0;
27 }
28 
RemoveAll()29 void CLines::RemoveAll() {
30   for (int32_t i = 0, sz = GetSize(); i < sz; i++)
31     delete GetAt(i);
32   m_Lines.RemoveAll();
33   m_nTotal = 0;
34 }
35 
Add(const CPVT_LineInfo & lineinfo)36 int32_t CLines::Add(const CPVT_LineInfo& lineinfo) {
37   if (m_nTotal >= GetSize()) {
38     CLine* pLine = new CLine;
39     pLine->m_LineInfo = lineinfo;
40     m_Lines.Add(pLine);
41   } else if (CLine* pLine = GetAt(m_nTotal)) {
42     pLine->m_LineInfo = lineinfo;
43   }
44   return m_nTotal++;
45 }
46 
Clear()47 void CLines::Clear() {
48   for (int32_t i = GetSize() - 1; i >= m_nTotal; i--) {
49     delete GetAt(i);
50     m_Lines.RemoveAt(i);
51   }
52 }
53