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_coordinates.h" 11 #include "fpdfsdk/cpdfsdk_annot.h" 12 13 class CFX_Matrix; 14 class CFX_RenderDevice; 15 class CPDF_Annot; 16 class CPDFSDK_PageView; 17 18 #ifdef PDF_ENABLE_XFA 19 class CXFA_FFWidget; 20 #endif // PDF_ENABLE_XFA 21 22 class IPDFSDK_AnnotHandler { 23 public: ~IPDFSDK_AnnotHandler()24 virtual ~IPDFSDK_AnnotHandler() {} 25 26 virtual bool CanAnswer(CPDFSDK_Annot* pAnnot) = 0; 27 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; 36 virtual CFX_FloatRect GetViewBBox(CPDFSDK_PageView* pPageView, 37 CPDFSDK_Annot* pAnnot) = 0; 38 virtual WideString GetSelectedText(CPDFSDK_Annot* pAnnot) = 0; 39 virtual void ReplaceSelection(CPDFSDK_Annot* pAnnot, 40 const WideString& text) = 0; 41 virtual bool HitTest(CPDFSDK_PageView* pPageView, 42 CPDFSDK_Annot* pAnnot, 43 const CFX_PointF& point) = 0; 44 virtual void OnDraw(CPDFSDK_PageView* pPageView, 45 CPDFSDK_Annot* pAnnot, 46 CFX_RenderDevice* pDevice, 47 CFX_Matrix* pUser2Device, 48 bool bDrawAnnots) = 0; 49 virtual void OnLoad(CPDFSDK_Annot* pAnnot) = 0; 50 51 virtual void OnMouseEnter(CPDFSDK_PageView* pPageView, 52 CPDFSDK_Annot::ObservedPtr* pAnnot, 53 uint32_t nFlag) = 0; 54 virtual void OnMouseExit(CPDFSDK_PageView* pPageView, 55 CPDFSDK_Annot::ObservedPtr* pAnnot, 56 uint32_t nFlag) = 0; 57 virtual bool OnLButtonDown(CPDFSDK_PageView* pPageView, 58 CPDFSDK_Annot::ObservedPtr* pAnnot, 59 uint32_t nFlags, 60 const CFX_PointF& point) = 0; 61 virtual bool OnLButtonUp(CPDFSDK_PageView* pPageView, 62 CPDFSDK_Annot::ObservedPtr* pAnnot, 63 uint32_t nFlags, 64 const CFX_PointF& point) = 0; 65 virtual bool OnLButtonDblClk(CPDFSDK_PageView* pPageView, 66 CPDFSDK_Annot::ObservedPtr* pAnnot, 67 uint32_t nFlags, 68 const CFX_PointF& point) = 0; 69 virtual bool OnMouseMove(CPDFSDK_PageView* pPageView, 70 CPDFSDK_Annot::ObservedPtr* pAnnot, 71 uint32_t nFlags, 72 const CFX_PointF& point) = 0; 73 virtual bool OnMouseWheel(CPDFSDK_PageView* pPageView, 74 CPDFSDK_Annot::ObservedPtr* pAnnot, 75 uint32_t nFlags, 76 short zDelta, 77 const CFX_PointF& point) = 0; 78 virtual bool OnRButtonDown(CPDFSDK_PageView* pPageView, 79 CPDFSDK_Annot::ObservedPtr* pAnnot, 80 uint32_t nFlags, 81 const CFX_PointF& point) = 0; 82 virtual bool OnRButtonUp(CPDFSDK_PageView* pPageView, 83 CPDFSDK_Annot::ObservedPtr* pAnnot, 84 uint32_t nFlags, 85 const CFX_PointF& point) = 0; 86 virtual bool OnRButtonDblClk(CPDFSDK_PageView* pPageView, 87 CPDFSDK_Annot::ObservedPtr* pAnnot, 88 uint32_t nFlags, 89 const CFX_PointF& point) = 0; 90 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; 99 #ifdef PDF_ENABLE_XFA 100 virtual bool OnXFAChangedFocus(CPDFSDK_Annot::ObservedPtr* pOldAnnot, 101 CPDFSDK_Annot::ObservedPtr* pNewAnnot) = 0; 102 #endif // PDF_ENABLE_XFA 103 }; 104 105 #endif // FPDFSDK_IPDFSDK_ANNOTHANDLER_H_ 106