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