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