Clean up CPDF_AnnotList.
[pdfium.git] / fpdfsdk / include / pdfwindow / PWL_Caret.h
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                           CPDF_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_