1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2020 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker // found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Worker // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6*3ac0a46fSAndroid Build Coastguard Worker 7*3ac0a46fSAndroid Build Coastguard Worker #ifndef FPDFSDK_PWL_IPWL_FILLERNOTIFY_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FPDFSDK_PWL_IPWL_FILLERNOTIFY_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 11*3ac0a46fSAndroid Build Coastguard Worker #include <utility> 12*3ac0a46fSAndroid Build Coastguard Worker 13*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/mask.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/widestring.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdf_fwlevent.h" 16*3ac0a46fSAndroid Build Coastguard Worker 17*3ac0a46fSAndroid Build Coastguard Worker class CFX_FloatRect; 18*3ac0a46fSAndroid Build Coastguard Worker 19*3ac0a46fSAndroid Build Coastguard Worker class IPWL_FillerNotify { 20*3ac0a46fSAndroid Build Coastguard Worker public: 21*3ac0a46fSAndroid Build Coastguard Worker // These must match the values in public/fpdf_formfill.h 22*3ac0a46fSAndroid Build Coastguard Worker enum CursorStyle { 23*3ac0a46fSAndroid Build Coastguard Worker kArrow = 0, 24*3ac0a46fSAndroid Build Coastguard Worker kNESW = 1, 25*3ac0a46fSAndroid Build Coastguard Worker kNWSE = 2, 26*3ac0a46fSAndroid Build Coastguard Worker kVBeam = 3, 27*3ac0a46fSAndroid Build Coastguard Worker kHBeam = 4, 28*3ac0a46fSAndroid Build Coastguard Worker kHand = 5, 29*3ac0a46fSAndroid Build Coastguard Worker }; 30*3ac0a46fSAndroid Build Coastguard Worker 31*3ac0a46fSAndroid Build Coastguard Worker class PerWindowData { 32*3ac0a46fSAndroid Build Coastguard Worker public: 33*3ac0a46fSAndroid Build Coastguard Worker virtual ~PerWindowData() = default; 34*3ac0a46fSAndroid Build Coastguard Worker virtual std::unique_ptr<PerWindowData> Clone() const = 0; 35*3ac0a46fSAndroid Build Coastguard Worker }; 36*3ac0a46fSAndroid Build Coastguard Worker 37*3ac0a46fSAndroid Build Coastguard Worker virtual ~IPWL_FillerNotify() = default; 38*3ac0a46fSAndroid Build Coastguard Worker 39*3ac0a46fSAndroid Build Coastguard Worker virtual void InvalidateRect(PerWindowData* pWidgetData, 40*3ac0a46fSAndroid Build Coastguard Worker const CFX_FloatRect& rect) = 0; 41*3ac0a46fSAndroid Build Coastguard Worker virtual void OutputSelectedRect(PerWindowData* pWidgetData, 42*3ac0a46fSAndroid Build Coastguard Worker const CFX_FloatRect& rect) = 0; 43*3ac0a46fSAndroid Build Coastguard Worker virtual bool IsSelectionImplemented() const = 0; 44*3ac0a46fSAndroid Build Coastguard Worker virtual void SetCursor(CursorStyle nCursorStyle) = 0; 45*3ac0a46fSAndroid Build Coastguard Worker 46*3ac0a46fSAndroid Build Coastguard Worker // Must write to |bBottom| and |fPopupRet|. 47*3ac0a46fSAndroid Build Coastguard Worker virtual void QueryWherePopup(const PerWindowData* pAttached, 48*3ac0a46fSAndroid Build Coastguard Worker float fPopupMin, 49*3ac0a46fSAndroid Build Coastguard Worker float fPopupMax, 50*3ac0a46fSAndroid Build Coastguard Worker bool* bBottom, 51*3ac0a46fSAndroid Build Coastguard Worker float* fPopupRet) = 0; 52*3ac0a46fSAndroid Build Coastguard Worker 53*3ac0a46fSAndroid Build Coastguard Worker virtual std::pair<bool, bool> OnBeforeKeyStroke( 54*3ac0a46fSAndroid Build Coastguard Worker const PerWindowData* pAttached, 55*3ac0a46fSAndroid Build Coastguard Worker WideString& strChange, 56*3ac0a46fSAndroid Build Coastguard Worker const WideString& strChangeEx, 57*3ac0a46fSAndroid Build Coastguard Worker int nSelStart, 58*3ac0a46fSAndroid Build Coastguard Worker int nSelEnd, 59*3ac0a46fSAndroid Build Coastguard Worker bool bKeyDown, 60*3ac0a46fSAndroid Build Coastguard Worker Mask<FWL_EVENTFLAG> nFlag) = 0; 61*3ac0a46fSAndroid Build Coastguard Worker 62*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnPopupPreOpen(const PerWindowData* pAttached, 63*3ac0a46fSAndroid Build Coastguard Worker Mask<FWL_EVENTFLAG> nFlag) = 0; 64*3ac0a46fSAndroid Build Coastguard Worker 65*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnPopupPostOpen(const PerWindowData* pAttached, 66*3ac0a46fSAndroid Build Coastguard Worker Mask<FWL_EVENTFLAG> nFlag) = 0; 67*3ac0a46fSAndroid Build Coastguard Worker }; 68*3ac0a46fSAndroid Build Coastguard Worker 69*3ac0a46fSAndroid Build Coastguard Worker #endif // FPDFSDK_PWL_IPWL_FILLERNOTIFY_H_ 70