diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-03-30 10:58:49 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-03-30 17:40:25 +0000 |
commit | d9828fd1653f0334c4e9b027d708dbc3df8c838a (patch) | |
tree | 24220e1e7cba8dd23898569f452de3191c7d66ab /xfa/fde/cfde_visualsetiterator.cpp | |
parent | dd046dac0819b2db4c445f7cc4b8bab15d8409c1 (diff) | |
download | pdfium-d9828fd1653f0334c4e9b027d708dbc3df8c838a.tar.xz |
Rename FDE files to match contents.
This CL renames files in xfa/fde to match the contents. The fde_object.h
file is split apart into cfde_pen and cfde_brush.
Change-Id: I953f102182caa6d87c5ee9b99bbeb01c34a01aa9
Reviewed-on: https://pdfium-review.googlesource.com/3371
Reviewed-by: Nicolás Peña <npm@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fde/cfde_visualsetiterator.cpp')
-rw-r--r-- | xfa/fde/cfde_visualsetiterator.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/xfa/fde/cfde_visualsetiterator.cpp b/xfa/fde/cfde_visualsetiterator.cpp new file mode 100644 index 0000000000..5fd84ede8a --- /dev/null +++ b/xfa/fde/cfde_visualsetiterator.cpp @@ -0,0 +1,94 @@ +// Copyright 2014 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 "xfa/fde/cfde_visualsetiterator.h" + +#include "xfa/fde/cfde_txtedtpage.h" + +CFDE_VisualSetIterator::CFDE_VisualSetIterator() : m_dwFilter(0) {} + +CFDE_VisualSetIterator::~CFDE_VisualSetIterator() {} + +bool CFDE_VisualSetIterator::AttachCanvas(CFDE_TxtEdtPage* pCanvas) { + ASSERT(pCanvas); + m_CanvasStack = std::stack<FDE_CANVASITEM>(); + + FDE_CANVASITEM canvas; + canvas.hCanvas = nullptr; + canvas.pCanvas = pCanvas; + canvas.pos = pCanvas->GetFirstPosition(); + if (canvas.pos == 0) + return false; + + m_CanvasStack.push(canvas); + return true; +} + +bool CFDE_VisualSetIterator::FilterObjects(uint32_t dwObjects) { + if (m_CanvasStack.empty()) + return false; + + while (m_CanvasStack.size() > 1) + m_CanvasStack.pop(); + + m_dwFilter = dwObjects; + + FDE_CANVASITEM* pCanvas = &m_CanvasStack.top(); + ASSERT(pCanvas && pCanvas->pCanvas); + + pCanvas->pos = pCanvas->pCanvas->GetFirstPosition(); + return pCanvas->pos != 0; +} + +void CFDE_VisualSetIterator::Reset() { + FilterObjects(m_dwFilter); +} + +FDE_TEXTEDITPIECE* CFDE_VisualSetIterator::GetNext( + IFDE_VisualSet*& pVisualSet, + FDE_TEXTEDITPIECE** phCanvasObj, + CFDE_TxtEdtPage** ppCanvasSet) { + while (!m_CanvasStack.empty()) { + FDE_CANVASITEM* pCanvas = &m_CanvasStack.top(); + if (pCanvas->pos == 0) { + if (m_CanvasStack.size() == 1) + break; + + m_CanvasStack.pop(); + continue; + } + do { + FDE_TEXTEDITPIECE* pObj = + pCanvas->pCanvas->GetNext(&pCanvas->pos, pVisualSet); + ASSERT(pObj); + + FDE_VISUALOBJTYPE eType = pVisualSet->GetType(); + if (eType == FDE_VISUALOBJ_Canvas) { + FDE_CANVASITEM canvas; + canvas.hCanvas = pObj; + canvas.pCanvas = static_cast<CFDE_TxtEdtPage*>(pVisualSet); + canvas.pos = canvas.pCanvas->GetFirstPosition(); + m_CanvasStack.push(canvas); + break; + } + uint32_t dwObj = (uint32_t)eType; + if ((m_dwFilter & dwObj) != 0) { + if (ppCanvasSet) + *ppCanvasSet = pCanvas->pCanvas; + if (phCanvasObj) + *phCanvasObj = pCanvas->hCanvas; + return pObj; + } + } while (pCanvas->pos != 0); + } + if (ppCanvasSet) + *ppCanvasSet = nullptr; + if (phCanvasObj) + *phCanvasObj = nullptr; + + pVisualSet = nullptr; + return nullptr; +} |