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