blob: bffeac658be10c56f086ecdd1ad2b3e94bf6792b [file] [log] [blame]
jaepark98e10192016-08-15 10:51:11 -07001// 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
dsinclair114e46a2016-09-29 17:18:21 -07007#ifndef FPDFSDK_IPDFSDK_ANNOTHANDLER_H_
8#define FPDFSDK_IPDFSDK_ANNOTHANDLER_H_
jaepark98e10192016-08-15 10:51:11 -07009
dsinclaira52ab742016-09-29 13:59:29 -070010#include "core/fxcrt/fx_coordinates.h"
dsinclair114e46a2016-09-29 17:18:21 -070011#include "fpdfsdk/cpdfsdk_annot.h"
jaepark98e10192016-08-15 10:51:11 -070012
jaepark98e10192016-08-15 10:51:11 -070013class CFX_Matrix;
14class CFX_RenderDevice;
15class CPDF_Annot;
jaepark98e10192016-08-15 10:51:11 -070016class CPDFSDK_PageView;
17
18#ifdef PDF_ENABLE_XFA
19class CXFA_FFWidget;
20#endif // PDF_ENABLE_XFA
21
22class IPDFSDK_AnnotHandler {
23 public:
24 virtual ~IPDFSDK_AnnotHandler() {}
25
tsepez4cf55152016-11-02 14:37:54 -070026 virtual bool CanAnswer(CPDFSDK_Annot* pAnnot) = 0;
jaepark98e10192016-08-15 10:51:11 -070027 virtual CPDFSDK_Annot* NewAnnot(CPDF_Annot* pAnnot,
28 CPDFSDK_PageView* pPage) = 0;
29
30#ifdef PDF_ENABLE_XFA
31 virtual CPDFSDK_Annot* NewAnnot(CXFA_FFWidget* hWidget,
32 CPDFSDK_PageView* pPage) = 0;
33#endif // PDF_ENABLE_XFA
34
35 virtual void ReleaseAnnot(CPDFSDK_Annot* pAnnot) = 0;
jaepark98e10192016-08-15 10:51:11 -070036 virtual CFX_FloatRect GetViewBBox(CPDFSDK_PageView* pPageView,
37 CPDFSDK_Annot* pAnnot) = 0;
Ryan Harrison275e2602017-09-18 14:23:18 -040038 virtual WideString GetSelectedText(CPDFSDK_Annot* pAnnot) = 0;
Diana Gageab390972017-07-28 17:07:39 -070039 virtual void ReplaceSelection(CPDFSDK_Annot* pAnnot,
Ryan Harrison275e2602017-09-18 14:23:18 -040040 const WideString& text) = 0;
tsepez4cf55152016-11-02 14:37:54 -070041 virtual bool HitTest(CPDFSDK_PageView* pPageView,
42 CPDFSDK_Annot* pAnnot,
Dan Sinclairf528eee2017-02-14 11:52:07 -050043 const CFX_PointF& point) = 0;
jaepark98e10192016-08-15 10:51:11 -070044 virtual void OnDraw(CPDFSDK_PageView* pPageView,
45 CPDFSDK_Annot* pAnnot,
46 CFX_RenderDevice* pDevice,
jaepark75f84a52016-09-09 15:39:09 -070047 CFX_Matrix* pUser2Device,
48 bool bDrawAnnots) = 0;
jaepark98e10192016-08-15 10:51:11 -070049 virtual void OnLoad(CPDFSDK_Annot* pAnnot) = 0;
tsepezf8074ce2016-09-27 14:29:57 -070050
jaepark98e10192016-08-15 10:51:11 -070051 virtual void OnMouseEnter(CPDFSDK_PageView* pPageView,
tsepezf8074ce2016-09-27 14:29:57 -070052 CPDFSDK_Annot::ObservedPtr* pAnnot,
jaepark98e10192016-08-15 10:51:11 -070053 uint32_t nFlag) = 0;
54 virtual void OnMouseExit(CPDFSDK_PageView* pPageView,
tsepezf8074ce2016-09-27 14:29:57 -070055 CPDFSDK_Annot::ObservedPtr* pAnnot,
jaepark98e10192016-08-15 10:51:11 -070056 uint32_t nFlag) = 0;
tsepez4cf55152016-11-02 14:37:54 -070057 virtual bool OnLButtonDown(CPDFSDK_PageView* pPageView,
58 CPDFSDK_Annot::ObservedPtr* pAnnot,
59 uint32_t nFlags,
Dan Sinclairf528eee2017-02-14 11:52:07 -050060 const CFX_PointF& point) = 0;
tsepez4cf55152016-11-02 14:37:54 -070061 virtual bool OnLButtonUp(CPDFSDK_PageView* pPageView,
62 CPDFSDK_Annot::ObservedPtr* pAnnot,
63 uint32_t nFlags,
Dan Sinclairf528eee2017-02-14 11:52:07 -050064 const CFX_PointF& point) = 0;
tsepez4cf55152016-11-02 14:37:54 -070065 virtual bool OnLButtonDblClk(CPDFSDK_PageView* pPageView,
tsepezf8074ce2016-09-27 14:29:57 -070066 CPDFSDK_Annot::ObservedPtr* pAnnot,
jaepark98e10192016-08-15 10:51:11 -070067 uint32_t nFlags,
Dan Sinclairf528eee2017-02-14 11:52:07 -050068 const CFX_PointF& point) = 0;
tsepez4cf55152016-11-02 14:37:54 -070069 virtual bool OnMouseMove(CPDFSDK_PageView* pPageView,
70 CPDFSDK_Annot::ObservedPtr* pAnnot,
71 uint32_t nFlags,
Dan Sinclairf528eee2017-02-14 11:52:07 -050072 const CFX_PointF& point) = 0;
tsepez4cf55152016-11-02 14:37:54 -070073 virtual bool OnMouseWheel(CPDFSDK_PageView* pPageView,
74 CPDFSDK_Annot::ObservedPtr* pAnnot,
75 uint32_t nFlags,
76 short zDelta,
Dan Sinclairf528eee2017-02-14 11:52:07 -050077 const CFX_PointF& point) = 0;
tsepez4cf55152016-11-02 14:37:54 -070078 virtual bool OnRButtonDown(CPDFSDK_PageView* pPageView,
79 CPDFSDK_Annot::ObservedPtr* pAnnot,
80 uint32_t nFlags,
Dan Sinclairf528eee2017-02-14 11:52:07 -050081 const CFX_PointF& point) = 0;
tsepez4cf55152016-11-02 14:37:54 -070082 virtual bool OnRButtonUp(CPDFSDK_PageView* pPageView,
83 CPDFSDK_Annot::ObservedPtr* pAnnot,
84 uint32_t nFlags,
Dan Sinclairf528eee2017-02-14 11:52:07 -050085 const CFX_PointF& point) = 0;
tsepez4cf55152016-11-02 14:37:54 -070086 virtual bool OnRButtonDblClk(CPDFSDK_PageView* pPageView,
87 CPDFSDK_Annot::ObservedPtr* pAnnot,
88 uint32_t nFlags,
Dan Sinclairf528eee2017-02-14 11:52:07 -050089 const CFX_PointF& point) = 0;
tsepez4cf55152016-11-02 14:37:54 -070090 virtual bool OnChar(CPDFSDK_Annot* pAnnot,
91 uint32_t nChar,
92 uint32_t nFlags) = 0;
93 virtual bool OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) = 0;
94 virtual bool OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) = 0;
95 virtual bool OnSetFocus(CPDFSDK_Annot::ObservedPtr* pAnnot,
96 uint32_t nFlag) = 0;
97 virtual bool OnKillFocus(CPDFSDK_Annot::ObservedPtr* pAnnot,
98 uint32_t nFlag) = 0;
jaepark98e10192016-08-15 10:51:11 -070099#ifdef PDF_ENABLE_XFA
tsepez4cf55152016-11-02 14:37:54 -0700100 virtual bool OnXFAChangedFocus(CPDFSDK_Annot::ObservedPtr* pOldAnnot,
101 CPDFSDK_Annot::ObservedPtr* pNewAnnot) = 0;
jaepark98e10192016-08-15 10:51:11 -0700102#endif // PDF_ENABLE_XFA
103};
104
dsinclair114e46a2016-09-29 17:18:21 -0700105#endif // FPDFSDK_IPDFSDK_ANNOTHANDLER_H_