64 lines
1.7 KiB
C++
64 lines
1.7 KiB
C++
// 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 <memory>
|
|
#include <vector>
|
|
|
|
#include "core/fxcrt/fx_coordinates.h"
|
|
#include "core/fxcrt/fx_string.h"
|
|
#include "core/fxcrt/fx_system.h"
|
|
#include "core/fxcrt/unowned_ptr.h"
|
|
#include "third_party/base/optional.h"
|
|
|
|
class CPDF_TextPage;
|
|
|
|
class CPDF_TextPageFind {
|
|
public:
|
|
struct Options {
|
|
bool bMatchCase = false;
|
|
bool bMatchWholeWord = false;
|
|
bool bConsecutive = false;
|
|
};
|
|
|
|
static std::unique_ptr<CPDF_TextPageFind> Create(
|
|
const CPDF_TextPage* pTextPage,
|
|
const WideString& findwhat,
|
|
const Options& options,
|
|
Optional<size_t> startPos);
|
|
|
|
~CPDF_TextPageFind();
|
|
|
|
bool FindNext();
|
|
bool FindPrev();
|
|
int GetCurOrder() const;
|
|
int GetMatchedCount() const;
|
|
|
|
private:
|
|
CPDF_TextPageFind(const CPDF_TextPage* pTextPage,
|
|
const std::vector<WideString>& findwhat_array,
|
|
const Options& options,
|
|
Optional<size_t> startPos);
|
|
|
|
// Should be called immediately after construction.
|
|
bool FindFirst();
|
|
|
|
int GetCharIndex(int index) const;
|
|
|
|
UnownedPtr<const CPDF_TextPage> const m_pTextPage;
|
|
const WideString m_strText;
|
|
const std::vector<WideString> m_csFindWhatArray;
|
|
Optional<size_t> m_findNextStart;
|
|
Optional<size_t> m_findPreStart;
|
|
int m_resStart = 0;
|
|
int m_resEnd = -1;
|
|
const Options m_options;
|
|
};
|
|
|
|
#endif // CORE_FPDFTEXT_CPDF_TEXTPAGEFIND_H_
|