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