Home | History | Annotate | Download | only in fpdftext
      1 // Copyright 2014 PDFium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
      6 
      7 #ifndef CORE_FPDFTEXT_CPDF_LINKEXTRACT_H_
      8 #define CORE_FPDFTEXT_CPDF_LINKEXTRACT_H_
      9 
     10 #include <vector>
     11 
     12 #include "core/fxcrt/fx_basic.h"
     13 #include "core/fxcrt/fx_coordinates.h"
     14 #include "core/fxcrt/fx_string.h"
     15 #include "core/fxcrt/fx_system.h"
     16 
     17 class CPDF_TextPage;
     18 
     19 class CPDF_LinkExtract {
     20  public:
     21   explicit CPDF_LinkExtract(const CPDF_TextPage* pTextPage);
     22   ~CPDF_LinkExtract();
     23 
     24   void ExtractLinks();
     25   size_t CountLinks() const { return m_LinkArray.size(); }
     26   CFX_WideString GetURL(size_t index) const;
     27   std::vector<CFX_FloatRect> GetRects(size_t index) const;
     28 
     29  protected:
     30   void ParseLink();
     31   bool CheckWebLink(CFX_WideString& str);
     32   bool CheckMailLink(CFX_WideString& str);
     33 
     34  private:
     35   struct Link {
     36     int m_Start;
     37     int m_Count;
     38     CFX_WideString m_strUrl;
     39   };
     40 
     41   const CPDF_TextPage* const m_pTextPage;
     42   CFX_WideString m_strPageText;
     43   std::vector<Link> m_LinkArray;
     44 };
     45 
     46 #endif  // CORE_FPDFTEXT_CPDF_LINKEXTRACT_H_
     47