diff options
Diffstat (limited to 'core/fpdftext/include/ipdf_textpage.h')
-rw-r--r-- | core/fpdftext/include/ipdf_textpage.h | 69 |
1 files changed, 69 insertions, 0 deletions
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_ |