1*3ac0a46fSAndroid Build Coastguard Worker // Copyright 2014 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_CPWL_WND_H_ 8*3ac0a46fSAndroid Build Coastguard Worker #define FPDFSDK_PWL_CPWL_WND_H_ 9*3ac0a46fSAndroid Build Coastguard Worker 10*3ac0a46fSAndroid Build Coastguard Worker #include <memory> 11*3ac0a46fSAndroid Build Coastguard Worker #include <vector> 12*3ac0a46fSAndroid Build Coastguard Worker 13*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/cfx_timer.h" 14*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/mask.h" 15*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/observed_ptr.h" 16*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr.h" 17*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/unowned_ptr_exclusion.h" 18*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxcrt/widestring.h" 19*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxge/cfx_color.h" 20*3ac0a46fSAndroid Build Coastguard Worker #include "core/fxge/cfx_renderdevice.h" 21*3ac0a46fSAndroid Build Coastguard Worker #include "fpdfsdk/pwl/ipwl_fillernotify.h" 22*3ac0a46fSAndroid Build Coastguard Worker #include "public/fpdf_fwlevent.h" 23*3ac0a46fSAndroid Build Coastguard Worker 24*3ac0a46fSAndroid Build Coastguard Worker class CPWL_Edit; 25*3ac0a46fSAndroid Build Coastguard Worker class CPWL_ScrollBar; 26*3ac0a46fSAndroid Build Coastguard Worker class IPVT_FontMap; 27*3ac0a46fSAndroid Build Coastguard Worker struct PWL_SCROLL_INFO; 28*3ac0a46fSAndroid Build Coastguard Worker 29*3ac0a46fSAndroid Build Coastguard Worker // window styles 30*3ac0a46fSAndroid Build Coastguard Worker #define PWS_BORDER 0x40000000L 31*3ac0a46fSAndroid Build Coastguard Worker #define PWS_BACKGROUND 0x20000000L 32*3ac0a46fSAndroid Build Coastguard Worker #define PWS_VSCROLL 0x08000000L 33*3ac0a46fSAndroid Build Coastguard Worker #define PWS_VISIBLE 0x04000000L 34*3ac0a46fSAndroid Build Coastguard Worker #define PWS_READONLY 0x01000000L 35*3ac0a46fSAndroid Build Coastguard Worker #define PWS_AUTOFONTSIZE 0x00800000L 36*3ac0a46fSAndroid Build Coastguard Worker #define PWS_AUTOTRANSPARENT 0x00400000L 37*3ac0a46fSAndroid Build Coastguard Worker #define PWS_NOREFRESHCLIP 0x00200000L 38*3ac0a46fSAndroid Build Coastguard Worker 39*3ac0a46fSAndroid Build Coastguard Worker // edit and label styles 40*3ac0a46fSAndroid Build Coastguard Worker #define PES_MULTILINE 0x0001L 41*3ac0a46fSAndroid Build Coastguard Worker #define PES_PASSWORD 0x0002L 42*3ac0a46fSAndroid Build Coastguard Worker #define PES_LEFT 0x0004L 43*3ac0a46fSAndroid Build Coastguard Worker #define PES_RIGHT 0x0008L 44*3ac0a46fSAndroid Build Coastguard Worker #define PES_MIDDLE 0x0010L 45*3ac0a46fSAndroid Build Coastguard Worker #define PES_TOP 0x0020L 46*3ac0a46fSAndroid Build Coastguard Worker #define PES_CENTER 0x0080L 47*3ac0a46fSAndroid Build Coastguard Worker #define PES_CHARARRAY 0x0100L 48*3ac0a46fSAndroid Build Coastguard Worker #define PES_AUTOSCROLL 0x0200L 49*3ac0a46fSAndroid Build Coastguard Worker #define PES_AUTORETURN 0x0400L 50*3ac0a46fSAndroid Build Coastguard Worker #define PES_UNDO 0x0800L 51*3ac0a46fSAndroid Build Coastguard Worker #define PES_RICH 0x1000L 52*3ac0a46fSAndroid Build Coastguard Worker #define PES_TEXTOVERFLOW 0x4000L 53*3ac0a46fSAndroid Build Coastguard Worker 54*3ac0a46fSAndroid Build Coastguard Worker // listbox styles 55*3ac0a46fSAndroid Build Coastguard Worker #define PLBS_MULTIPLESEL 0x0001L 56*3ac0a46fSAndroid Build Coastguard Worker #define PLBS_HOVERSEL 0x0008L 57*3ac0a46fSAndroid Build Coastguard Worker 58*3ac0a46fSAndroid Build Coastguard Worker // combobox styles 59*3ac0a46fSAndroid Build Coastguard Worker #define PCBS_ALLOWCUSTOMTEXT 0x0001L 60*3ac0a46fSAndroid Build Coastguard Worker 61*3ac0a46fSAndroid Build Coastguard Worker struct CPWL_Dash { CPWL_DashCPWL_Dash62*3ac0a46fSAndroid Build Coastguard Worker CPWL_Dash() : nDash(0), nGap(0), nPhase(0) {} CPWL_DashCPWL_Dash63*3ac0a46fSAndroid Build Coastguard Worker CPWL_Dash(int32_t dash, int32_t gap, int32_t phase) 64*3ac0a46fSAndroid Build Coastguard Worker : nDash(dash), nGap(gap), nPhase(phase) {} 65*3ac0a46fSAndroid Build Coastguard Worker ResetCPWL_Dash66*3ac0a46fSAndroid Build Coastguard Worker void Reset() { 67*3ac0a46fSAndroid Build Coastguard Worker nDash = 0; 68*3ac0a46fSAndroid Build Coastguard Worker nGap = 0; 69*3ac0a46fSAndroid Build Coastguard Worker nPhase = 0; 70*3ac0a46fSAndroid Build Coastguard Worker } 71*3ac0a46fSAndroid Build Coastguard Worker 72*3ac0a46fSAndroid Build Coastguard Worker int32_t nDash; 73*3ac0a46fSAndroid Build Coastguard Worker int32_t nGap; 74*3ac0a46fSAndroid Build Coastguard Worker int32_t nPhase; 75*3ac0a46fSAndroid Build Coastguard Worker }; 76*3ac0a46fSAndroid Build Coastguard Worker 77*3ac0a46fSAndroid Build Coastguard Worker class CPWL_Wnd : public Observable { 78*3ac0a46fSAndroid Build Coastguard Worker public: 79*3ac0a46fSAndroid Build Coastguard Worker static const CFX_Color kDefaultBlackColor; 80*3ac0a46fSAndroid Build Coastguard Worker static const CFX_Color kDefaultWhiteColor; 81*3ac0a46fSAndroid Build Coastguard Worker 82*3ac0a46fSAndroid Build Coastguard Worker class SharedCaptureFocusState; 83*3ac0a46fSAndroid Build Coastguard Worker 84*3ac0a46fSAndroid Build Coastguard Worker class ProviderIface : public Observable { 85*3ac0a46fSAndroid Build Coastguard Worker public: 86*3ac0a46fSAndroid Build Coastguard Worker virtual ~ProviderIface() = default; 87*3ac0a46fSAndroid Build Coastguard Worker 88*3ac0a46fSAndroid Build Coastguard Worker // get a matrix which map user space to CWnd client space 89*3ac0a46fSAndroid Build Coastguard Worker virtual CFX_Matrix GetWindowMatrix( 90*3ac0a46fSAndroid Build Coastguard Worker const IPWL_FillerNotify::PerWindowData* pAttached) = 0; 91*3ac0a46fSAndroid Build Coastguard Worker 92*3ac0a46fSAndroid Build Coastguard Worker virtual void OnSetFocusForEdit(CPWL_Edit* pEdit) = 0; 93*3ac0a46fSAndroid Build Coastguard Worker }; 94*3ac0a46fSAndroid Build Coastguard Worker 95*3ac0a46fSAndroid Build Coastguard Worker // Caller-provided options for window creation. 96*3ac0a46fSAndroid Build Coastguard Worker class CreateParams { 97*3ac0a46fSAndroid Build Coastguard Worker public: 98*3ac0a46fSAndroid Build Coastguard Worker CreateParams(CFX_Timer::HandlerIface* timer_handler, 99*3ac0a46fSAndroid Build Coastguard Worker IPWL_FillerNotify* filler_notify, 100*3ac0a46fSAndroid Build Coastguard Worker ProviderIface* provider); 101*3ac0a46fSAndroid Build Coastguard Worker CreateParams(const CreateParams& other); 102*3ac0a46fSAndroid Build Coastguard Worker ~CreateParams(); 103*3ac0a46fSAndroid Build Coastguard Worker 104*3ac0a46fSAndroid Build Coastguard Worker // Required: 105*3ac0a46fSAndroid Build Coastguard Worker CFX_FloatRect rcRectWnd; 106*3ac0a46fSAndroid Build Coastguard Worker ObservedPtr<CFX_Timer::HandlerIface> const pTimerHandler; 107*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<IPWL_FillerNotify> const pFillerNotify; 108*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<IPVT_FontMap> pFontMap; 109*3ac0a46fSAndroid Build Coastguard Worker ObservedPtr<ProviderIface> pProvider; 110*3ac0a46fSAndroid Build Coastguard Worker 111*3ac0a46fSAndroid Build Coastguard Worker // Optional: 112*3ac0a46fSAndroid Build Coastguard Worker uint32_t dwFlags = 0; 113*3ac0a46fSAndroid Build Coastguard Worker CFX_Color sBackgroundColor; 114*3ac0a46fSAndroid Build Coastguard Worker BorderStyle nBorderStyle = BorderStyle::kSolid; 115*3ac0a46fSAndroid Build Coastguard Worker int32_t dwBorderWidth = 1; 116*3ac0a46fSAndroid Build Coastguard Worker CFX_Color sBorderColor; 117*3ac0a46fSAndroid Build Coastguard Worker CFX_Color sTextColor; 118*3ac0a46fSAndroid Build Coastguard Worker int32_t nTransparency = 255; 119*3ac0a46fSAndroid Build Coastguard Worker float fFontSize; 120*3ac0a46fSAndroid Build Coastguard Worker CPWL_Dash sDash; 121*3ac0a46fSAndroid Build Coastguard Worker 122*3ac0a46fSAndroid Build Coastguard Worker // Ignore, used internally only: 123*3ac0a46fSAndroid Build Coastguard Worker // TODO(tsepez): fix murky ownership, bare delete. 124*3ac0a46fSAndroid Build Coastguard Worker UNOWNED_PTR_EXCLUSION SharedCaptureFocusState* pSharedCaptureFocusState = 125*3ac0a46fSAndroid Build Coastguard Worker nullptr; 126*3ac0a46fSAndroid Build Coastguard Worker IPWL_FillerNotify::CursorStyle eCursorType = 127*3ac0a46fSAndroid Build Coastguard Worker IPWL_FillerNotify::CursorStyle::kArrow; 128*3ac0a46fSAndroid Build Coastguard Worker }; 129*3ac0a46fSAndroid Build Coastguard Worker 130*3ac0a46fSAndroid Build Coastguard Worker static bool IsSHIFTKeyDown(Mask<FWL_EVENTFLAG> nFlag); 131*3ac0a46fSAndroid Build Coastguard Worker static bool IsCTRLKeyDown(Mask<FWL_EVENTFLAG> nFlag); 132*3ac0a46fSAndroid Build Coastguard Worker static bool IsALTKeyDown(Mask<FWL_EVENTFLAG> nFlag); 133*3ac0a46fSAndroid Build Coastguard Worker static bool IsMETAKeyDown(Mask<FWL_EVENTFLAG> nFlag); 134*3ac0a46fSAndroid Build Coastguard Worker 135*3ac0a46fSAndroid Build Coastguard Worker // Selects between IsCTRLKeyDown() and IsMETAKeyDown() depending on platform. 136*3ac0a46fSAndroid Build Coastguard Worker static bool IsPlatformShortcutKey(Mask<FWL_EVENTFLAG> nFlag); 137*3ac0a46fSAndroid Build Coastguard Worker 138*3ac0a46fSAndroid Build Coastguard Worker CPWL_Wnd(const CreateParams& cp, 139*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<IPWL_FillerNotify::PerWindowData> pAttachedData); 140*3ac0a46fSAndroid Build Coastguard Worker virtual ~CPWL_Wnd(); 141*3ac0a46fSAndroid Build Coastguard Worker 142*3ac0a46fSAndroid Build Coastguard Worker // Returns |true| iff this instance is still allocated. 143*3ac0a46fSAndroid Build Coastguard Worker [[nodiscard]] virtual bool InvalidateRect(const CFX_FloatRect* pRect); 144*3ac0a46fSAndroid Build Coastguard Worker 145*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnKeyDown(FWL_VKEYCODE nKeyCode, Mask<FWL_EVENTFLAG> nFlag); 146*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnChar(uint16_t nChar, Mask<FWL_EVENTFLAG> nFlag); 147*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnLButtonDblClk(Mask<FWL_EVENTFLAG> nFlag, 148*3ac0a46fSAndroid Build Coastguard Worker const CFX_PointF& point); 149*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnLButtonDown(Mask<FWL_EVENTFLAG> nFlag, 150*3ac0a46fSAndroid Build Coastguard Worker const CFX_PointF& point); 151*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnLButtonUp(Mask<FWL_EVENTFLAG> nFlag, const CFX_PointF& point); 152*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnRButtonDown(Mask<FWL_EVENTFLAG> nFlag, 153*3ac0a46fSAndroid Build Coastguard Worker const CFX_PointF& point); 154*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnRButtonUp(Mask<FWL_EVENTFLAG> nFlag, const CFX_PointF& point); 155*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnMouseMove(Mask<FWL_EVENTFLAG> nFlag, const CFX_PointF& point); 156*3ac0a46fSAndroid Build Coastguard Worker virtual bool OnMouseWheel(Mask<FWL_EVENTFLAG> nFlag, 157*3ac0a46fSAndroid Build Coastguard Worker const CFX_PointF& point, 158*3ac0a46fSAndroid Build Coastguard Worker const CFX_Vector& delta); 159*3ac0a46fSAndroid Build Coastguard Worker virtual void SetScrollInfo(const PWL_SCROLL_INFO& info); 160*3ac0a46fSAndroid Build Coastguard Worker virtual void SetScrollPosition(float pos); 161*3ac0a46fSAndroid Build Coastguard Worker virtual void ScrollWindowVertically(float pos); 162*3ac0a46fSAndroid Build Coastguard Worker virtual void NotifyLButtonDown(CPWL_Wnd* child, const CFX_PointF& pos); 163*3ac0a46fSAndroid Build Coastguard Worker virtual void NotifyLButtonUp(CPWL_Wnd* child, const CFX_PointF& pos); 164*3ac0a46fSAndroid Build Coastguard Worker virtual void NotifyMouseMove(CPWL_Wnd* child, const CFX_PointF& pos); 165*3ac0a46fSAndroid Build Coastguard Worker virtual void SetFocus(); 166*3ac0a46fSAndroid Build Coastguard Worker virtual void KillFocus(); 167*3ac0a46fSAndroid Build Coastguard Worker virtual void SetCursor(); 168*3ac0a46fSAndroid Build Coastguard Worker 169*3ac0a46fSAndroid Build Coastguard Worker // Returns |true| iff this instance is still allocated. 170*3ac0a46fSAndroid Build Coastguard Worker [[nodiscard]] virtual bool SetVisible(bool bVisible); 171*3ac0a46fSAndroid Build Coastguard Worker virtual void SetFontSize(float fFontSize); 172*3ac0a46fSAndroid Build Coastguard Worker virtual float GetFontSize() const; 173*3ac0a46fSAndroid Build Coastguard Worker 174*3ac0a46fSAndroid Build Coastguard Worker virtual WideString GetText(); 175*3ac0a46fSAndroid Build Coastguard Worker virtual WideString GetSelectedText(); 176*3ac0a46fSAndroid Build Coastguard Worker virtual void ReplaceAndKeepSelection(const WideString& text); 177*3ac0a46fSAndroid Build Coastguard Worker virtual void ReplaceSelection(const WideString& text); 178*3ac0a46fSAndroid Build Coastguard Worker virtual bool SelectAllText(); 179*3ac0a46fSAndroid Build Coastguard Worker 180*3ac0a46fSAndroid Build Coastguard Worker virtual bool CanUndo(); 181*3ac0a46fSAndroid Build Coastguard Worker virtual bool CanRedo(); 182*3ac0a46fSAndroid Build Coastguard Worker virtual bool Undo(); 183*3ac0a46fSAndroid Build Coastguard Worker virtual bool Redo(); 184*3ac0a46fSAndroid Build Coastguard Worker 185*3ac0a46fSAndroid Build Coastguard Worker virtual CFX_FloatRect GetFocusRect() const; 186*3ac0a46fSAndroid Build Coastguard Worker virtual CFX_FloatRect GetClientRect() const; 187*3ac0a46fSAndroid Build Coastguard Worker 188*3ac0a46fSAndroid Build Coastguard Worker virtual void OnSetFocus(); 189*3ac0a46fSAndroid Build Coastguard Worker virtual void OnKillFocus(); 190*3ac0a46fSAndroid Build Coastguard Worker 191*3ac0a46fSAndroid Build Coastguard Worker void AddChild(std::unique_ptr<CPWL_Wnd> pWnd); 192*3ac0a46fSAndroid Build Coastguard Worker void RemoveChild(CPWL_Wnd* pWnd); 193*3ac0a46fSAndroid Build Coastguard Worker void Realize(); 194*3ac0a46fSAndroid Build Coastguard Worker void Destroy(); 195*3ac0a46fSAndroid Build Coastguard Worker bool Move(const CFX_FloatRect& rcNew, bool bReset, bool bRefresh); 196*3ac0a46fSAndroid Build Coastguard Worker 197*3ac0a46fSAndroid Build Coastguard Worker void InvalidateProvider(ProviderIface* provider); 198*3ac0a46fSAndroid Build Coastguard Worker void DrawAppearance(CFX_RenderDevice* pDevice, 199*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& mtUser2Device); 200*3ac0a46fSAndroid Build Coastguard Worker 201*3ac0a46fSAndroid Build Coastguard Worker int32_t GetBorderWidth() const; 202*3ac0a46fSAndroid Build Coastguard Worker CFX_FloatRect GetWindowRect() const; 203*3ac0a46fSAndroid Build Coastguard Worker IsVisible()204*3ac0a46fSAndroid Build Coastguard Worker bool IsVisible() const { return m_bVisible; } 205*3ac0a46fSAndroid Build Coastguard Worker bool HasFlag(uint32_t dwFlags) const; 206*3ac0a46fSAndroid Build Coastguard Worker void RemoveFlag(uint32_t dwFlags); 207*3ac0a46fSAndroid Build Coastguard Worker void SetClipRect(const CFX_FloatRect& rect); 208*3ac0a46fSAndroid Build Coastguard Worker GetAttachedData()209*3ac0a46fSAndroid Build Coastguard Worker IPWL_FillerNotify::PerWindowData* GetAttachedData() const { 210*3ac0a46fSAndroid Build Coastguard Worker return m_pAttachedData.get(); 211*3ac0a46fSAndroid Build Coastguard Worker } 212*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<IPWL_FillerNotify::PerWindowData> CloneAttachedData() const; 213*3ac0a46fSAndroid Build Coastguard Worker std::vector<UnownedPtr<CPWL_Wnd>> GetAncestors(); 214*3ac0a46fSAndroid Build Coastguard Worker 215*3ac0a46fSAndroid Build Coastguard Worker bool WndHitTest(const CFX_PointF& point) const; 216*3ac0a46fSAndroid Build Coastguard Worker bool ClientHitTest(const CFX_PointF& point) const; 217*3ac0a46fSAndroid Build Coastguard Worker bool IsCaptureMouse() const; 218*3ac0a46fSAndroid Build Coastguard Worker 219*3ac0a46fSAndroid Build Coastguard Worker bool IsFocused() const; 220*3ac0a46fSAndroid Build Coastguard Worker bool IsReadOnly() const; 221*3ac0a46fSAndroid Build Coastguard Worker 222*3ac0a46fSAndroid Build Coastguard Worker void SetTransparency(int32_t nTransparency); 223*3ac0a46fSAndroid Build Coastguard Worker CFX_Matrix GetWindowMatrix() const; 224*3ac0a46fSAndroid Build Coastguard Worker 225*3ac0a46fSAndroid Build Coastguard Worker protected: 226*3ac0a46fSAndroid Build Coastguard Worker virtual void CreateChildWnd(const CreateParams& cp); 227*3ac0a46fSAndroid Build Coastguard Worker 228*3ac0a46fSAndroid Build Coastguard Worker // Returns |true| iff this instance is still allocated. 229*3ac0a46fSAndroid Build Coastguard Worker [[nodiscard]] virtual bool RepositionChildWnd(); 230*3ac0a46fSAndroid Build Coastguard Worker 231*3ac0a46fSAndroid Build Coastguard Worker virtual void DrawThisAppearance(CFX_RenderDevice* pDevice, 232*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& mtUser2Device); 233*3ac0a46fSAndroid Build Coastguard Worker 234*3ac0a46fSAndroid Build Coastguard Worker virtual void OnCreated(); 235*3ac0a46fSAndroid Build Coastguard Worker virtual void OnDestroy(); 236*3ac0a46fSAndroid Build Coastguard Worker IsValid()237*3ac0a46fSAndroid Build Coastguard Worker bool IsValid() const { return m_bCreated; } GetCreationParams()238*3ac0a46fSAndroid Build Coastguard Worker CreateParams* GetCreationParams() { return &m_CreationParams; } GetProvider()239*3ac0a46fSAndroid Build Coastguard Worker ProviderIface* GetProvider() const { 240*3ac0a46fSAndroid Build Coastguard Worker return m_CreationParams.pProvider.Get(); 241*3ac0a46fSAndroid Build Coastguard Worker } GetTimerHandler()242*3ac0a46fSAndroid Build Coastguard Worker CFX_Timer::HandlerIface* GetTimerHandler() const { 243*3ac0a46fSAndroid Build Coastguard Worker return m_CreationParams.pTimerHandler.Get(); 244*3ac0a46fSAndroid Build Coastguard Worker } GetFillerNotify()245*3ac0a46fSAndroid Build Coastguard Worker IPWL_FillerNotify* GetFillerNotify() const { 246*3ac0a46fSAndroid Build Coastguard Worker return m_CreationParams.pFillerNotify; 247*3ac0a46fSAndroid Build Coastguard Worker } 248*3ac0a46fSAndroid Build Coastguard Worker GetParentWindow()249*3ac0a46fSAndroid Build Coastguard Worker CPWL_Wnd* GetParentWindow() const { return m_pParent; } 250*3ac0a46fSAndroid Build Coastguard Worker CPWL_ScrollBar* GetVScrollBar() const; 251*3ac0a46fSAndroid Build Coastguard Worker 252*3ac0a46fSAndroid Build Coastguard Worker // Returns |true| iff this instance is still allocated. 253*3ac0a46fSAndroid Build Coastguard Worker [[nodiscard]] bool InvalidateRectMove(const CFX_FloatRect& rcOld, 254*3ac0a46fSAndroid Build Coastguard Worker const CFX_FloatRect& rcNew); 255*3ac0a46fSAndroid Build Coastguard Worker 256*3ac0a46fSAndroid Build Coastguard Worker void SetCapture(); 257*3ac0a46fSAndroid Build Coastguard Worker void ReleaseCapture(); 258*3ac0a46fSAndroid Build Coastguard Worker bool IsWndCaptureMouse(const CPWL_Wnd* pWnd) const; 259*3ac0a46fSAndroid Build Coastguard Worker bool IsWndCaptureKeyboard(const CPWL_Wnd* pWnd) const; 260*3ac0a46fSAndroid Build Coastguard Worker 261*3ac0a46fSAndroid Build Coastguard Worker CFX_Color GetBackgroundColor() const; 262*3ac0a46fSAndroid Build Coastguard Worker CFX_Color GetBorderColor() const; 263*3ac0a46fSAndroid Build Coastguard Worker CFX_Color GetTextColor() const; 264*3ac0a46fSAndroid Build Coastguard Worker CFX_Color GetBorderLeftTopColor(BorderStyle nBorderStyle) const; 265*3ac0a46fSAndroid Build Coastguard Worker CFX_Color GetBorderRightBottomColor(BorderStyle nBorderStyle) const; 266*3ac0a46fSAndroid Build Coastguard Worker BorderStyle GetBorderStyle() const; 267*3ac0a46fSAndroid Build Coastguard Worker const CPWL_Dash& GetBorderDash() const; 268*3ac0a46fSAndroid Build Coastguard Worker 269*3ac0a46fSAndroid Build Coastguard Worker int32_t GetTransparency(); 270*3ac0a46fSAndroid Build Coastguard Worker int32_t GetInnerBorderWidth() const; 271*3ac0a46fSAndroid Build Coastguard Worker CFX_PointF GetCenterPoint() const; 272*3ac0a46fSAndroid Build Coastguard Worker const CFX_FloatRect& GetClipRect() const; 273*3ac0a46fSAndroid Build Coastguard Worker GetFontMap()274*3ac0a46fSAndroid Build Coastguard Worker IPVT_FontMap* GetFontMap() const { return m_CreationParams.pFontMap; } 275*3ac0a46fSAndroid Build Coastguard Worker 276*3ac0a46fSAndroid Build Coastguard Worker private: 277*3ac0a46fSAndroid Build Coastguard Worker void DrawChildAppearance(CFX_RenderDevice* pDevice, 278*3ac0a46fSAndroid Build Coastguard Worker const CFX_Matrix& mtUser2Device); 279*3ac0a46fSAndroid Build Coastguard Worker 280*3ac0a46fSAndroid Build Coastguard Worker CFX_FloatRect PWLtoWnd(const CFX_FloatRect& rect) const; 281*3ac0a46fSAndroid Build Coastguard Worker 282*3ac0a46fSAndroid Build Coastguard Worker void CreateVScrollBar(const CreateParams& cp); 283*3ac0a46fSAndroid Build Coastguard Worker 284*3ac0a46fSAndroid Build Coastguard Worker void AdjustStyle(); 285*3ac0a46fSAndroid Build Coastguard Worker void CreateSharedCaptureFocusState(); 286*3ac0a46fSAndroid Build Coastguard Worker void DestroySharedCaptureFocusState(); 287*3ac0a46fSAndroid Build Coastguard Worker SharedCaptureFocusState* GetSharedCaptureFocusState() const; 288*3ac0a46fSAndroid Build Coastguard Worker 289*3ac0a46fSAndroid Build Coastguard Worker CreateParams m_CreationParams; 290*3ac0a46fSAndroid Build Coastguard Worker std::unique_ptr<IPWL_FillerNotify::PerWindowData> m_pAttachedData; 291*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<CPWL_Wnd> m_pParent; 292*3ac0a46fSAndroid Build Coastguard Worker std::vector<std::unique_ptr<CPWL_Wnd>> m_Children; 293*3ac0a46fSAndroid Build Coastguard Worker UnownedPtr<CPWL_ScrollBar> m_pVScrollBar; 294*3ac0a46fSAndroid Build Coastguard Worker CFX_FloatRect m_rcWindow; 295*3ac0a46fSAndroid Build Coastguard Worker CFX_FloatRect m_rcClip; 296*3ac0a46fSAndroid Build Coastguard Worker bool m_bCreated = false; 297*3ac0a46fSAndroid Build Coastguard Worker bool m_bVisible = false; 298*3ac0a46fSAndroid Build Coastguard Worker }; 299*3ac0a46fSAndroid Build Coastguard Worker 300*3ac0a46fSAndroid Build Coastguard Worker #endif // FPDFSDK_PWL_CPWL_WND_H_ 301