Home | History | Annotate | Download | only in fpdfsdk
      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:
     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