From 13ee55a8267963c9b39486a6a22646fbdd770742 Mon Sep 17 00:00:00 2001 From: Dan Sinclair Date: Mon, 14 Mar 2016 15:56:00 -0400 Subject: Move fx_crypto.h and fpdf_text.h out of core/include. This CL moves the two files and breaks fpdf_text.h apart into individual pieces. R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1801973002 . --- core/fpdftext/fpdf_text_int.cpp | 19 +++++++-- core/fpdftext/include/ipdf_linkextract.h | 26 ++++++++++++ core/fpdftext/include/ipdf_textpage.h | 69 +++++++++++++++++++++++++++++++ core/fpdftext/include/ipdf_textpagefind.h | 29 +++++++++++++ core/fpdftext/text_int.h | 4 +- 5 files changed, 142 insertions(+), 5 deletions(-) create mode 100644 core/fpdftext/include/ipdf_linkextract.h create mode 100644 core/fpdftext/include/ipdf_textpage.h create mode 100644 core/fpdftext/include/ipdf_textpagefind.h (limited to 'core/fpdftext') diff --git a/core/fpdftext/fpdf_text_int.cpp b/core/fpdftext/fpdf_text_int.cpp index d16ccb8dde..1bd544c444 100644 --- a/core/fpdftext/fpdf_text_int.cpp +++ b/core/fpdftext/fpdf_text_int.cpp @@ -13,18 +13,28 @@ #include #include +#include "core/fpdftext/include/ipdf_linkextract.h" +#include "core/fpdftext/include/ipdf_textpage.h" +#include "core/fpdftext/include/ipdf_textpagefind.h" #include "core/include/fpdfapi/cpdf_dictionary.h" #include "core/include/fpdfapi/cpdf_string.h" #include "core/include/fpdfapi/fpdf_module.h" #include "core/include/fpdfapi/fpdf_page.h" #include "core/include/fpdfapi/fpdf_pageobj.h" #include "core/include/fpdfapi/fpdf_resource.h" -#include "core/include/fpdftext/fpdf_text.h" #include "core/include/fxcrt/fx_bidi.h" #include "core/include/fxcrt/fx_ext.h" #include "core/include/fxcrt/fx_ucd.h" #include "third_party/base/stl_util.h" +#define FPDFTEXT_RLTB 1 +#define FPDFTEXT_LEFT -1 +#define FPDFTEXT_RIGHT 1 + +#define FPDFTEXT_MATCHCASE 0x00000001 +#define FPDFTEXT_MATCHWHOLEWORD 0x00000002 +#define FPDFTEXT_CONSECUTIVE 0x00000004 + namespace { FX_BOOL _IsIgnoreSpaceCharacter(FX_WCHAR curChar) { @@ -1899,7 +1909,8 @@ CPDF_TextPageFind::CPDF_TextPageFind(const IPDF_TextPage* pTextPage) FPDF_CHAR_INFO info; pTextPage->GetCharInfo(i, &info); int indexSize = pdfium::CollectionSize(m_CharIndex); - if (info.m_Flag == CHAR_NORMAL || info.m_Flag == CHAR_GENERATED) { + if (info.m_Flag == FPDFTEXT_CHAR_NORMAL || + info.m_Flag == FPDFTEXT_CHAR_GENERATED) { if (indexSize % 2) { m_CharIndex.push_back(1); } else { @@ -2325,8 +2336,8 @@ void CPDF_LinkExtract::ParseLink() { while (pos < TotalChar) { FPDF_CHAR_INFO pageChar; m_pTextPage->GetCharInfo(pos, &pageChar); - if (pageChar.m_Flag == CHAR_GENERATED || pageChar.m_Unicode == 0x20 || - pos == TotalChar - 1) { + if (pageChar.m_Flag == FPDFTEXT_CHAR_GENERATED || + pageChar.m_Unicode == 0x20 || pos == TotalChar - 1) { int nCount = pos - start; if (pos == TotalChar - 1) { nCount++; diff --git a/core/fpdftext/include/ipdf_linkextract.h b/core/fpdftext/include/ipdf_linkextract.h new file mode 100644 index 0000000000..2d7fe02127 --- /dev/null +++ b/core/fpdftext/include/ipdf_linkextract.h @@ -0,0 +1,26 @@ +// 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 + +#ifndef CORE_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_ +#define CORE_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_ + +#include "core/include/fxcrt/fx_coordinates.h" +#include "core/include/fxcrt/fx_system.h" +#include "core/fpdftext/include/ipdf_textpage.h" + +class IPDF_LinkExtract { + public: + static IPDF_LinkExtract* CreateLinkExtract(); + virtual ~IPDF_LinkExtract() {} + + virtual FX_BOOL ExtractLinks(const IPDF_TextPage* pTextPage) = 0; + virtual int CountLinks() const = 0; + virtual CFX_WideString GetURL(int index) const = 0; + virtual void GetBoundedSegment(int index, int& start, int& count) const = 0; + virtual void GetRects(int index, CFX_RectArray& rects) const = 0; +}; + +#endif // CORE_FPDFTEXT_INCLUDE_IPDF_LINKEXTRACT_H_ diff --git a/core/fpdftext/include/ipdf_textpage.h b/core/fpdftext/include/ipdf_textpage.h new file mode 100644 index 0000000000..1698e9ab28 --- /dev/null +++ b/core/fpdftext/include/ipdf_textpage.h @@ -0,0 +1,69 @@ +// 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 + +#ifndef CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_ +#define CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_ + +#include "core/include/fpdfapi/fpdf_page.h" +#include "core/include/fpdfapi/fpdf_pageobj.h" +#include "core/include/fxcrt/fx_coordinates.h" +#include "core/include/fxcrt/fx_system.h" + +struct FPDF_CHAR_INFO { + FX_WCHAR m_Unicode; + FX_WCHAR m_Charcode; + int32_t m_Flag; + FX_FLOAT m_FontSize; + FX_FLOAT m_OriginX; + FX_FLOAT m_OriginY; + CFX_FloatRect m_CharBox; + CPDF_TextObject* m_pTextObj; + CFX_Matrix m_Matrix; +}; + +class IPDF_TextPage { + public: + static IPDF_TextPage* CreateTextPage(const CPDF_Page* pPage, int flags = 0); + virtual ~IPDF_TextPage() {} + + virtual void ParseTextPage() = 0; + virtual bool IsParsed() const = 0; + virtual int CharIndexFromTextIndex(int TextIndex) const = 0; + virtual int TextIndexFromCharIndex(int CharIndex) const = 0; + virtual int CountChars() const = 0; + virtual void GetCharInfo(int index, FPDF_CHAR_INFO* info) const = 0; + virtual void GetRectArray(int start, + int nCount, + CFX_RectArray& rectArray) const = 0; + virtual int GetIndexAtPos(CFX_FloatPoint point, + FX_FLOAT xTolerance, + FX_FLOAT yTolerance) const = 0; + virtual int GetIndexAtPos(FX_FLOAT x, + FX_FLOAT y, + FX_FLOAT xTolerance, + FX_FLOAT yTolerance) const = 0; + virtual CFX_WideString GetTextByRect(const CFX_FloatRect& rect) const = 0; + virtual void GetRectsArrayByRect(const CFX_FloatRect& rect, + CFX_RectArray& resRectArray) const = 0; + virtual int CountRects(int start, int nCount) = 0; + virtual void GetRect(int rectIndex, + FX_FLOAT& left, + FX_FLOAT& top, + FX_FLOAT& right, + FX_FLOAT& bottom) const = 0; + virtual FX_BOOL GetBaselineRotate(int rectIndex, int& Rotate) = 0; + virtual FX_BOOL GetBaselineRotate(const CFX_FloatRect& rect, int& Rotate) = 0; + virtual int CountBoundedSegments(FX_FLOAT left, + FX_FLOAT top, + FX_FLOAT right, + FX_FLOAT bottom, + FX_BOOL bContains = FALSE) = 0; + virtual void GetBoundedSegment(int index, int& start, int& count) const = 0; + virtual int GetWordBreak(int index, int direction) const = 0; + virtual CFX_WideString GetPageText(int start = 0, int nCount = -1) const = 0; +}; + +#endif // CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGE_H_ diff --git a/core/fpdftext/include/ipdf_textpagefind.h b/core/fpdftext/include/ipdf_textpagefind.h new file mode 100644 index 0000000000..88774b6061 --- /dev/null +++ b/core/fpdftext/include/ipdf_textpagefind.h @@ -0,0 +1,29 @@ +// 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 + +#ifndef CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_ +#define CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_ + +#include "core/fpdftext/include/ipdf_textpage.h" +#include "core/include/fxcrt/fx_coordinates.h" +#include "core/include/fxcrt/fx_string.h" + +class IPDF_TextPageFind { + public: + static IPDF_TextPageFind* CreatePageFind(const IPDF_TextPage* pTextPage); + virtual ~IPDF_TextPageFind() {} + + virtual FX_BOOL FindFirst(const CFX_WideString& findwhat, + int flags, + int startPos = 0) = 0; + virtual FX_BOOL FindNext() = 0; + virtual FX_BOOL FindPrev() = 0; + virtual void GetRectArray(CFX_RectArray& rects) const = 0; + virtual int GetCurOrder() const = 0; + virtual int GetMatchedCount() const = 0; +}; + +#endif // CORE_FPDFTEXT_INCLUDE_IPDF_TEXTPAGEFIND_H_ diff --git a/core/fpdftext/text_int.h b/core/fpdftext/text_int.h index bc110c719b..42e254ee63 100644 --- a/core/fpdftext/text_int.h +++ b/core/fpdftext/text_int.h @@ -10,8 +10,10 @@ #include #include +#include "core/fpdftext/include/ipdf_linkextract.h" +#include "core/fpdftext/include/ipdf_textpage.h" +#include "core/fpdftext/include/ipdf_textpagefind.h" #include "core/include/fpdfapi/fpdf_page.h" -#include "core/include/fpdftext/fpdf_text.h" #include "core/include/fxcrt/fx_basic.h" class CFX_BidiChar; -- cgit v1.2.3