Home | History | Annotate | Download | only in pdfwindow
      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 FPDFSDK_INCLUDE_PDFWINDOW_PWL_CARET_H_
      8 #define FPDFSDK_INCLUDE_PDFWINDOW_PWL_CARET_H_
      9 
     10 #include "PWL_Wnd.h"
     11 
     12 struct PWL_CARET_INFO {
     13  public:
     14   PWL_CARET_INFO() : bVisible(FALSE), ptHead(0, 0), ptFoot(0, 0) {}
     15 
     16   FX_BOOL bVisible;
     17   CPDF_Point ptHead;
     18   CPDF_Point ptFoot;
     19 };
     20 
     21 class CPWL_Caret : public CPWL_Wnd {
     22  public:
     23   CPWL_Caret();
     24   ~CPWL_Caret() override;
     25 
     26   // CPWL_Wnd
     27   CFX_ByteString GetClassName() const override;
     28   void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream) override;
     29   void DrawThisAppearance(CFX_RenderDevice* pDevice,
     30                           CFX_Matrix* pUser2Device) override;
     31   void InvalidateRect(CPDF_Rect* pRect = NULL) override;
     32   void SetVisible(FX_BOOL bVisible) override {}
     33   void TimerProc() override;
     34 
     35   void SetCaret(FX_BOOL bVisible,
     36                 const CPDF_Point& ptHead,
     37                 const CPDF_Point& ptFoot);
     38   CFX_ByteString GetCaretAppearanceStream(const CPDF_Point& ptOffset);
     39   void SetInvalidRect(CPDF_Rect rc) { m_rcInvalid = rc; }
     40 
     41  private:
     42   void GetCaretApp(CFX_ByteTextBuf& sAppStream, const CPDF_Point& ptOffset);
     43   CPDF_Rect GetCaretRect() const;
     44 
     45   FX_BOOL m_bFlash;
     46   CPDF_Point m_ptHead;
     47   CPDF_Point m_ptFoot;
     48   FX_FLOAT m_fWidth;
     49   int32_t m_nDelay;
     50   CPDF_Rect m_rcInvalid;
     51 };
     52 
     53 #endif  // FPDFSDK_INCLUDE_PDFWINDOW_PWL_CARET_H_
     54