// Copyright 2014 The PDFium Authors // 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_LINKEXTRACT_H_ #define CORE_FPDFTEXT_CPDF_LINKEXTRACT_H_ #include #include #include #include #include "core/fxcrt/fx_coordinates.h" #include "core/fxcrt/unowned_ptr.h" #include "core/fxcrt/widestring.h" class CPDF_TextPage; class CPDF_LinkExtract { public: struct Range { size_t m_Start; size_t m_Count; }; explicit CPDF_LinkExtract(const CPDF_TextPage* pTextPage); ~CPDF_LinkExtract(); void ExtractLinks(); size_t CountLinks() const { return m_LinkArray.size(); } WideString GetURL(size_t index) const; std::vector GetRects(size_t index) const; std::optional GetTextRange(size_t index) const; protected: struct Link : public Range { WideString m_strUrl; }; std::optional CheckWebLink(const WideString& str); bool CheckMailLink(WideString* str); UnownedPtr const m_pTextPage; std::vector m_LinkArray; }; #endif // CORE_FPDFTEXT_CPDF_LINKEXTRACT_H_