1 // Copyright 2016 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_CPDFSDK_BAANNOTHANDLER_H_
8 #define FPDFSDK_CPDFSDK_BAANNOTHANDLER_H_
9 
10 #include "core/fxcrt/fx_coordinates.h"
11 #include "fpdfsdk/ipdfsdk_annothandler.h"
12 
13 class CFFL_InteractiveFormFiller;
14 class CFX_Matrix;
15 class CFX_RenderDevice;
16 class CPDF_Annot;
17 class CPDFSDK_FormFillEnvironment;
18 class CPDFSDK_Annot;
19 class CPDFSDK_PageView;
20 
21 #ifdef PDF_ENABLE_XFA
22 class CXFA_FFWidget;
23 #endif  // PDF_ENABLE_XFA
24 
25 class CPDFSDK_BAAnnotHandler : public IPDFSDK_AnnotHandler {
26  public:
27   CPDFSDK_BAAnnotHandler();
28   ~CPDFSDK_BAAnnotHandler() override;
29 
30   bool CanAnswer(CPDFSDK_Annot* pAnnot) override;
31   CPDFSDK_Annot* NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPage) override;
32 #ifdef PDF_ENABLE_XFA
33   CPDFSDK_Annot* NewAnnot(CXFA_FFWidget* hWidget,
34                           CPDFSDK_PageView* pPage) override;
35 #endif  // PDF_ENABLE_XFA
36   void ReleaseAnnot(CPDFSDK_Annot* pAnnot) override;
37   CFX_FloatRect GetViewBBox(CPDFSDK_PageView* pPageView,
38                             CPDFSDK_Annot* pAnnot) override;
39   WideString GetSelectedText(CPDFSDK_Annot* pAnnot) override;
40   void ReplaceSelection(CPDFSDK_Annot* pAnnot, const WideString& text) override;
41   bool HitTest(CPDFSDK_PageView* pPageView,
42                CPDFSDK_Annot* pAnnot,
43                const CFX_PointF& point) override;
44   void OnDraw(CPDFSDK_PageView* pPageView,
45               CPDFSDK_Annot* pAnnot,
46               CFX_RenderDevice* pDevice,
47               CFX_Matrix* pUser2Device,
48               bool bDrawAnnots) override;
49   void OnLoad(CPDFSDK_Annot* pAnnot) override;
50 
51   void OnMouseEnter(CPDFSDK_PageView* pPageView,
52                     CPDFSDK_Annot::ObservedPtr* pAnnot,
53                     uint32_t nFlag) override;
54   void OnMouseExit(CPDFSDK_PageView* pPageView,
55                    CPDFSDK_Annot::ObservedPtr* pAnnot,
56                    uint32_t nFlag) override;
57   bool OnLButtonDown(CPDFSDK_PageView* pPageView,
58                      CPDFSDK_Annot::ObservedPtr* pAnnot,
59                      uint32_t nFlags,
60                      const CFX_PointF& point) override;
61   bool OnLButtonUp(CPDFSDK_PageView* pPageView,
62                    CPDFSDK_Annot::ObservedPtr* pAnnot,
63                    uint32_t nFlags,
64                    const CFX_PointF& point) override;
65   bool OnLButtonDblClk(CPDFSDK_PageView* pPageView,
66                        CPDFSDK_Annot::ObservedPtr* pAnnot,
67                        uint32_t nFlags,
68                        const CFX_PointF& point) override;
69   bool OnMouseMove(CPDFSDK_PageView* pPageView,
70                    CPDFSDK_Annot::ObservedPtr* pAnnot,
71                    uint32_t nFlags,
72                    const CFX_PointF& point) override;
73   bool OnMouseWheel(CPDFSDK_PageView* pPageView,
74                     CPDFSDK_Annot::ObservedPtr* pAnnot,
75                     uint32_t nFlags,
76                     short zDelta,
77                     const CFX_PointF& point) override;
78   bool OnRButtonDown(CPDFSDK_PageView* pPageView,
79                      CPDFSDK_Annot::ObservedPtr* pAnnot,
80                      uint32_t nFlags,
81                      const CFX_PointF& point) override;
82   bool OnRButtonUp(CPDFSDK_PageView* pPageView,
83                    CPDFSDK_Annot::ObservedPtr* pAnnot,
84                    uint32_t nFlags,
85                    const CFX_PointF& point) override;
86   bool OnRButtonDblClk(CPDFSDK_PageView* pPageView,
87                        CPDFSDK_Annot::ObservedPtr* pAnnot,
88                        uint32_t nFlags,
89                        const CFX_PointF& point) override;
90   bool OnChar(CPDFSDK_Annot* pAnnot, uint32_t nChar, uint32_t nFlags) override;
91   bool OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) override;
92   bool OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) override;
93   bool OnSetFocus(CPDFSDK_Annot::ObservedPtr* pAnnot, uint32_t nFlag) override;
94   bool OnKillFocus(CPDFSDK_Annot::ObservedPtr* pAnnot, uint32_t nFlag) override;
95 #ifdef PDF_ENABLE_XFA
96   bool OnXFAChangedFocus(CPDFSDK_Annot::ObservedPtr* pOldAnnot,
97                          CPDFSDK_Annot::ObservedPtr* pNewAnnot) override;
98 #endif  // PDF_ENABLE_XFA
99 };
100 
101 #endif  // FPDFSDK_CPDFSDK_BAANNOTHANDLER_H_
102