You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
58 lines
1.7 KiB
// 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_CPDF_TEXTPAGEFIND_H_ |
|
#define CORE_FPDFTEXT_CPDF_TEXTPAGEFIND_H_ |
|
|
|
#include <vector> |
|
|
|
#include "core/fxcrt/fx_coordinates.h" |
|
#include "core/fxcrt/fx_string.h" |
|
#include "core/fxcrt/fx_system.h" |
|
|
|
class CPDF_TextPage; |
|
|
|
class CPDF_TextPageFind { |
|
public: |
|
explicit CPDF_TextPageFind(const CPDF_TextPage* pTextPage); |
|
~CPDF_TextPageFind(); |
|
|
|
bool FindFirst(const CFX_WideString& findwhat, int flags, int startPos = 0); |
|
bool FindNext(); |
|
bool FindPrev(); |
|
int GetCurOrder() const; |
|
int GetMatchedCount() const; |
|
|
|
protected: |
|
void ExtractFindWhat(const CFX_WideString& findwhat); |
|
bool IsMatchWholeWord(const CFX_WideString& csPageText, |
|
int startPos, |
|
int endPos); |
|
bool ExtractSubString(CFX_WideString& rString, |
|
const FX_WCHAR* lpszFullString, |
|
int iSubString, |
|
FX_WCHAR chSep); |
|
CFX_WideString MakeReverse(const CFX_WideString& str); |
|
int GetCharIndex(int index) const; |
|
|
|
private: |
|
std::vector<uint16_t> m_CharIndex; |
|
const CPDF_TextPage* m_pTextPage; |
|
CFX_WideString m_strText; |
|
CFX_WideString m_findWhat; |
|
int m_flags; |
|
std::vector<CFX_WideString> m_csFindWhatArray; |
|
int m_findNextStart; |
|
int m_findPreStart; |
|
bool m_bMatchCase; |
|
bool m_bMatchWholeWord; |
|
int m_resStart; |
|
int m_resEnd; |
|
std::vector<CFX_FloatRect> m_resArray; |
|
bool m_IsFind; |
|
}; |
|
|
|
#endif // CORE_FPDFTEXT_CPDF_TEXTPAGEFIND_H_
|
|
|