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