From 68eefa6a6f6bbab73000a29e2cac3e104be1cc81 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Wed, 30 Aug 2017 12:16:16 -0400 Subject: Rebuild CFDE_TextEditEngine. This CL rebuilds the text edit engine in a simpler fashion. Instead of depending on multiple pages, paragraphs and buffer fields there is a single text edit engine which contains a gap buffer. This makes the code easier to understand and follow. Change-Id: I10fe85603fa9ed15a647eaac2d931f113cd0c7b0 Reviewed-on: https://pdfium-review.googlesource.com/11990 Commit-Queue: dsinclair Reviewed-by: Henrique Nakashima Reviewed-by: Ryan Harrison --- xfa/fde/cfde_txtedtpage.h | 94 ----------------------------------------------- 1 file changed, 94 deletions(-) delete mode 100644 xfa/fde/cfde_txtedtpage.h (limited to 'xfa/fde/cfde_txtedtpage.h') diff --git a/xfa/fde/cfde_txtedtpage.h b/xfa/fde/cfde_txtedtpage.h deleted file mode 100644 index cdf6c55080..0000000000 --- a/xfa/fde/cfde_txtedtpage.h +++ /dev/null @@ -1,94 +0,0 @@ -// 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 - -#ifndef XFA_FDE_CFDE_TXTEDTPAGE_H_ -#define XFA_FDE_CFDE_TXTEDTPAGE_H_ - -#include -#include -#include - -#include "core/fxcrt/fx_coordinates.h" -#include "core/fxcrt/ifx_chariter.h" -#include "core/fxge/cfx_renderdevice.h" - -class CFDE_TxtEdtEngine; -class CFDE_TxtEdtParag; -class CFDE_TxtEdtTextSet; - -struct FDE_TEXTEDITPIECE { - FDE_TEXTEDITPIECE(); - FDE_TEXTEDITPIECE(const FDE_TEXTEDITPIECE& that); - ~FDE_TEXTEDITPIECE(); - - int32_t nStart; - int32_t nCount; - int32_t nBidiLevel; - CFX_RectF rtPiece; - uint32_t dwCharStyles; -}; - -inline FDE_TEXTEDITPIECE::FDE_TEXTEDITPIECE() = default; -inline FDE_TEXTEDITPIECE::FDE_TEXTEDITPIECE(const FDE_TEXTEDITPIECE& that) = - default; -inline FDE_TEXTEDITPIECE::~FDE_TEXTEDITPIECE() = default; - -class CFDE_TxtEdtPage { - public: - CFDE_TxtEdtPage(CFDE_TxtEdtEngine* pEngine, int32_t nLineIndex); - ~CFDE_TxtEdtPage(); - - CFDE_TxtEdtEngine* GetEngine() const { return m_pEditEngine.Get(); } - - int32_t GetCharRect(int32_t nIndex, CFX_RectF& rect, bool bBBox) const; - int32_t GetCharIndex(const CFX_PointF& fPoint, bool& bBefore); - - void CalcRangeRectArray(int32_t nStart, - int32_t nCount, - std::vector* RectFArr) const; - - int32_t SelectWord(const CFX_PointF& fPoint, int32_t& nCount); - - int32_t GetCharStart() const { return m_nPageStart; } - int32_t GetCharCount() const { return m_nCharCount; } - - int32_t LoadPage(); - void UnloadPage(); - - const CFX_RectF& GetContentsBox() { return m_rtPageContents; } - - size_t GetTextPieceCount() const { return m_pTextSet ? m_Pieces.size() : 0; } - const FDE_TEXTEDITPIECE& GetTextPiece(size_t pos) const; - - wchar_t GetChar(const FDE_TEXTEDITPIECE* pIdentity, int32_t index) const; - int32_t GetWidth(const FDE_TEXTEDITPIECE* pIdentity, int32_t index) const; - - CFDE_TxtEdtTextSet* GetTextSet() const { return m_pTextSet.get(); } - - private: - void NormalizePt2Rect(CFX_PointF& ptF, - const CFX_RectF& rtF, - float fTolerance) const; - - std::unique_ptr m_pIter; - std::unique_ptr m_pTextSet; - CFX_UnownedPtr const m_pEditEngine; - std::deque m_Pieces; - CFDE_TxtEdtParag* m_pBgnParag; - CFDE_TxtEdtParag* m_pEndParag; - int32_t m_nRefCount; - int32_t m_nPageStart; - int32_t m_nCharCount; - int32_t m_nPageIndex; - bool m_bLoaded; - CFX_RectF m_rtPage; - CFX_RectF m_rtPageMargin; - CFX_RectF m_rtPageContents; - CFX_RectF m_rtPageCanvas; - std::vector m_CharWidths; -}; - -#endif // XFA_FDE_CFDE_TXTEDTPAGE_H_ -- cgit v1.2.3