|  | // Copyright 2016 PDFium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
|  |  | 
|  | #ifndef FPDFSDK_FPDFXFA_CPDFXFA_WIDGET_H_ | 
|  | #define FPDFSDK_FPDFXFA_CPDFXFA_WIDGET_H_ | 
|  |  | 
|  | #include "core/fxcrt/fx_coordinates.h" | 
|  | #include "fpdfsdk/cpdfsdk_annot.h" | 
|  | #include "v8/include/cppgc/persistent.h" | 
|  | #include "xfa/fxfa/cxfa_ffwidget.h" | 
|  |  | 
|  | class CPDFSDK_PageView; | 
|  | class CXFA_FFDocView; | 
|  | class CXFA_FFWidgetHandler; | 
|  |  | 
|  | class CPDFXFA_Widget final : public CPDFSDK_Annot, | 
|  | CPDFSDK_Annot::UnsafeInputHandlers { | 
|  | public: | 
|  | CPDFXFA_Widget(CXFA_FFWidget* pXFAFFWidget, CPDFSDK_PageView* pPageView); | 
|  | ~CPDFXFA_Widget() override; | 
|  |  | 
|  | // CPDFSDK_Annot: | 
|  | CPDFXFA_Widget* AsXFAWidget() override; | 
|  | CPDFSDK_Annot::UnsafeInputHandlers* GetUnsafeInputHandlers() override; | 
|  | CPDF_Annot::Subtype GetAnnotSubtype() const override; | 
|  | CFX_FloatRect GetRect() const override; | 
|  | void OnDraw(CFX_RenderDevice* pDevice, | 
|  | const CFX_Matrix& mtUser2Device, | 
|  | bool bDrawAnnots) override; | 
|  | bool DoHitTest(const CFX_PointF& point) override; | 
|  | CFX_FloatRect GetViewBBox() override; | 
|  | bool CanUndo() override; | 
|  | bool CanRedo() override; | 
|  | bool Undo() override; | 
|  | bool Redo() override; | 
|  | WideString GetText() override; | 
|  | WideString GetSelectedText() override; | 
|  | void ReplaceSelection(const WideString& text) override; | 
|  | bool SelectAllText() override; | 
|  | bool SetIndexSelected(int index, bool selected) override; | 
|  | bool IsIndexSelected(int index) override; | 
|  |  | 
|  | CXFA_FFWidget* GetXFAFFWidget() const { return m_pXFAFFWidget.Get(); } | 
|  |  | 
|  | bool OnChangedFocus(); | 
|  |  | 
|  | private: | 
|  | // CPDFSDK_Annot::UnsafeInputHandlers: | 
|  | void OnMouseEnter(Mask<FWL_EVENTFLAG> nFlags) override; | 
|  | void OnMouseExit(Mask<FWL_EVENTFLAG> nFlags) override; | 
|  | bool OnLButtonDown(Mask<FWL_EVENTFLAG> nFlags, | 
|  | const CFX_PointF& point) override; | 
|  | bool OnLButtonUp(Mask<FWL_EVENTFLAG> nFlags, | 
|  | const CFX_PointF& point) override; | 
|  | bool OnLButtonDblClk(Mask<FWL_EVENTFLAG> nFlags, | 
|  | const CFX_PointF& point) override; | 
|  | bool OnMouseMove(Mask<FWL_EVENTFLAG> nFlags, | 
|  | const CFX_PointF& point) override; | 
|  | bool OnMouseWheel(Mask<FWL_EVENTFLAG> nFlags, | 
|  | const CFX_PointF& point, | 
|  | const CFX_Vector& delta) override; | 
|  | bool OnRButtonDown(Mask<FWL_EVENTFLAG> nFlags, | 
|  | const CFX_PointF& point) override; | 
|  | bool OnRButtonUp(Mask<FWL_EVENTFLAG> nFlags, | 
|  | const CFX_PointF& point) override; | 
|  | bool OnChar(uint32_t nChar, Mask<FWL_EVENTFLAG> nFlags) override; | 
|  | bool OnKeyDown(FWL_VKEYCODE nKeyCode, Mask<FWL_EVENTFLAG> nFlags) override; | 
|  | bool OnSetFocus(Mask<FWL_EVENTFLAG> nFlags) override; | 
|  | bool OnKillFocus(Mask<FWL_EVENTFLAG> nFlags) override; | 
|  |  | 
|  | CXFA_FFDocView* GetDocView(); | 
|  | CXFA_FFWidgetHandler* GetWidgetHandler(); | 
|  |  | 
|  | cppgc::Persistent<CXFA_FFWidget> const m_pXFAFFWidget; | 
|  | }; | 
|  |  | 
|  | #endif  // FPDFSDK_FPDFXFA_CPDFXFA_WIDGET_H_ |