summaryrefslogtreecommitdiff
path: root/xfa/fde/cfde_visualsetiterator.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-03-30 10:58:49 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-03-30 17:40:25 +0000
commitd9828fd1653f0334c4e9b027d708dbc3df8c838a (patch)
tree24220e1e7cba8dd23898569f452de3191c7d66ab /xfa/fde/cfde_visualsetiterator.cpp
parentdd046dac0819b2db4c445f7cc4b8bab15d8409c1 (diff)
downloadpdfium-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.cpp94
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;
+}