7#ifndef FPDFSDK_PWL_CPWL_WND_H_
8#define FPDFSDK_PWL_CPWL_WND_H_
13#include "core/fxcrt/cfx_timer.h"
14#include "core/fxcrt/mask.h"
15#include "core/fxcrt/observed_ptr.h"
16#include "core/fxcrt/unowned_ptr.h"
17#include "core/fxcrt/unowned_ptr_exclusion.h"
18#include "core/fxcrt/widestring.h"
19#include "core/fxge/cfx_color.h"
20#include "core/fxge/cfx_renderdevice.h"
21#include "fpdfsdk/pwl/ipwl_fillernotify.h"
22#include "public/fpdf_fwlevent.h"
30#define PWS_BORDER 0x40000000L
31#define PWS_BACKGROUND 0x20000000L
32#define PWS_VSCROLL 0x08000000L
33#define PWS_VISIBLE 0x04000000L
34#define PWS_READONLY 0x01000000L
35#define PWS_AUTOFONTSIZE 0x00800000L
36#define PWS_AUTOTRANSPARENT 0x00400000L
37#define PWS_NOREFRESHCLIP 0x00200000L
40#define PES_MULTILINE 0x0001L
41#define PES_PASSWORD 0x0002L
42#define PES_LEFT 0x0004L
43#define PES_RIGHT 0x0008L
44#define PES_MIDDLE 0x0010L
45#define PES_TOP 0x0020L
46#define PES_CENTER 0x0080L
47#define PES_CHARARRAY 0x0100L
48#define PES_AUTOSCROLL 0x0200L
49#define PES_AUTORETURN 0x0400L
50#define PES_UNDO 0x0800L
51#define PES_RICH 0x1000L
52#define PES_TEXTOVERFLOW 0x4000L
55#define PLBS_MULTIPLESEL 0x0001L
56#define PLBS_HOVERSEL 0x0008L
59#define PCBS_ALLOWCUSTOMTEXT 0x0001L
82 class SharedCaptureFocusState;
139 std::unique_ptr<IPWL_FillerNotify::PerWindowData> pAttachedData);
145 virtual bool OnKeyDown(FWL_VKEYCODE nKeyCode,
Mask<FWL_EVENTFLAG> nFlag);
146 virtual bool OnChar(uint16_t nChar,
Mask<FWL_EVENTFLAG> nFlag);
148 const CFX_PointF& point);
150 const CFX_PointF& point);
153 const CFX_PointF& point);
154 virtual bool OnRButtonUp(
Mask<FWL_EVENTFLAG> nFlag,
const CFX_PointF& point);
157 const CFX_PointF& point,
158 const CFX_Vector& delta);
191 void AddChild(std::unique_ptr<CPWL_Wnd> pWnd);
205 bool HasFlag(uint32_t dwFlags)
const;
210 return m_pAttachedData.get();
215 bool WndHitTest(
const CFX_PointF& point)
const;
240 return m_CreationParams.pProvider.Get();
243 return m_CreationParams.pTimerHandler.Get();
246 return m_CreationParams.pFillerNotify;
285 void CreateSharedCaptureFocusState();
286 void DestroySharedCaptureFocusState();
287 SharedCaptureFocusState* GetSharedCaptureFocusState()
const;
290 std::unique_ptr<IPWL_FillerNotify::PerWindowData> m_pAttachedData;
292 std::vector<std::unique_ptr<CPWL_Wnd>> m_Children;
296 bool m_bCreated =
false;
297 bool m_bVisible =
false;
constexpr CFX_FloatRect(float l, float b, float r, float t)
CPDFSDK_Annot * GetFirstAnnot()
CPDFSDK_Annot * GetLastAnnot()
CPDFSDK_Annot * GetNextAnnot(CPDFSDK_Annot *pAnnot)
CPDFSDK_Annot * GetPrevAnnot(CPDFSDK_Annot *pAnnot)
virtual CFX_FloatRect GetRect() const =0
UnownedPtr< IPWL_FillerNotify > const pFillerNotify
CreateParams(const CreateParams &other)
IPWL_FillerNotify::CursorStyle eCursorType
CreateParams(CFX_Timer::HandlerIface *timer_handler, IPWL_FillerNotify *filler_notify, ProviderIface *provider)
ObservedPtr< ProviderIface > pProvider
CFX_Color sBackgroundColor
ObservedPtr< CFX_Timer::HandlerIface > const pTimerHandler
UnownedPtr< IPVT_FontMap > pFontMap
UNOWNED_PTR_EXCLUSION SharedCaptureFocusState * pSharedCaptureFocusState
virtual ~ProviderIface()=default
virtual void OnSetFocusForEdit(CPWL_Edit *pEdit)=0
virtual CFX_Matrix GetWindowMatrix(const IPWL_FillerNotify::PerWindowData *pAttached)=0
CFX_Matrix GetWindowMatrix() const
static bool IsPlatformShortcutKey(Mask< FWL_EVENTFLAG > nFlag)
static bool IsCTRLKeyDown(Mask< FWL_EVENTFLAG > nFlag)
virtual bool OnMouseWheel(Mask< FWL_EVENTFLAG > nFlag, const CFX_PointF &point, const CFX_Vector &delta)
virtual bool SelectAllText()
virtual void ScrollWindowVertically(float pos)
virtual bool OnRButtonDown(Mask< FWL_EVENTFLAG > nFlag, const CFX_PointF &point)
bool InvalidateRectMove(const CFX_FloatRect &rcOld, const CFX_FloatRect &rcNew)
bool ClientHitTest(const CFX_PointF &point) const
static bool IsALTKeyDown(Mask< FWL_EVENTFLAG > nFlag)
CFX_Color GetBorderColor() const
const CFX_FloatRect & GetClipRect() const
BorderStyle GetBorderStyle() const
virtual void NotifyMouseMove(CPWL_Wnd *child, const CFX_PointF &pos)
virtual bool OnChar(uint16_t nChar, Mask< FWL_EVENTFLAG > nFlag)
bool WndHitTest(const CFX_PointF &point) const
virtual void ReplaceAndKeepSelection(const WideString &text)
CFX_PointF GetCenterPoint() const
void RemoveFlag(uint32_t dwFlags)
CFX_Color GetBackgroundColor() const
std::vector< UnownedPtr< CPWL_Wnd > > GetAncestors()
IPWL_FillerNotify * GetFillerNotify() const
bool HasFlag(uint32_t dwFlags) const
virtual CFX_FloatRect GetClientRect() const
virtual WideString GetSelectedText()
CFX_FloatRect GetWindowRect() const
bool IsCaptureMouse() const
CPWL_Wnd * GetParentWindow() const
virtual void NotifyLButtonDown(CPWL_Wnd *child, const CFX_PointF &pos)
IPVT_FontMap * GetFontMap() const
void SetTransparency(int32_t nTransparency)
CPWL_Wnd(const CreateParams &cp, std::unique_ptr< IPWL_FillerNotify::PerWindowData > pAttachedData)
virtual bool OnLButtonUp(Mask< FWL_EVENTFLAG > nFlag, const CFX_PointF &point)
virtual bool OnMouseMove(Mask< FWL_EVENTFLAG > nFlag, const CFX_PointF &point)
virtual bool RepositionChildWnd()
void InvalidateProvider(ProviderIface *provider)
static bool IsSHIFTKeyDown(Mask< FWL_EVENTFLAG > nFlag)
virtual bool OnRButtonUp(Mask< FWL_EVENTFLAG > nFlag, const CFX_PointF &point)
virtual bool OnKeyDown(FWL_VKEYCODE nKeyCode, Mask< FWL_EVENTFLAG > nFlag)
int32_t GetBorderWidth() const
CreateParams * GetCreationParams()
virtual float GetFontSize() const
CFX_Color GetBorderRightBottomColor(BorderStyle nBorderStyle) const
virtual void SetScrollInfo(const PWL_SCROLL_INFO &info)
virtual bool InvalidateRect(const CFX_FloatRect *pRect)
virtual void CreateChildWnd(const CreateParams &cp)
virtual CFX_FloatRect GetFocusRect() const
virtual bool SetVisible(bool bVisible)
virtual void ReplaceSelection(const WideString &text)
IPWL_FillerNotify::PerWindowData * GetAttachedData() const
const CPWL_Dash & GetBorderDash() const
virtual void OnSetFocus()
virtual void SetFontSize(float fFontSize)
int32_t GetInnerBorderWidth() const
int32_t GetTransparency()
bool IsWndCaptureMouse(const CPWL_Wnd *pWnd) const
virtual void SetScrollPosition(float pos)
virtual void DrawThisAppearance(CFX_RenderDevice *pDevice, const CFX_Matrix &mtUser2Device)
ProviderIface * GetProvider() const
bool Move(const CFX_FloatRect &rcNew, bool bReset, bool bRefresh)
void SetClipRect(const CFX_FloatRect &rect)
bool IsWndCaptureKeyboard(const CPWL_Wnd *pWnd) const
CFX_Color GetBorderLeftTopColor(BorderStyle nBorderStyle) const
static const CFX_Color kDefaultWhiteColor
virtual void OnKillFocus()
CFX_Timer::HandlerIface * GetTimerHandler() const
std::unique_ptr< IPWL_FillerNotify::PerWindowData > CloneAttachedData() const
virtual bool OnLButtonDblClk(Mask< FWL_EVENTFLAG > nFlag, const CFX_PointF &point)
CFX_Color GetTextColor() const
virtual void NotifyLButtonUp(CPWL_Wnd *child, const CFX_PointF &pos)
CPWL_ScrollBar * GetVScrollBar() const
static const CFX_Color kDefaultBlackColor
static bool IsMETAKeyDown(Mask< FWL_EVENTFLAG > nFlag)
virtual bool OnLButtonDown(Mask< FWL_EVENTFLAG > nFlag, const CFX_PointF &point)
void AddChild(std::unique_ptr< CPWL_Wnd > pWnd)
void DrawAppearance(CFX_RenderDevice *pDevice, const CFX_Matrix &mtUser2Device)
void RemoveChild(CPWL_Wnd *pWnd)
virtual WideString GetText()
virtual ~PerWindowData()=default
virtual std::unique_ptr< PerWindowData > Clone() const =0
virtual void SetCursor(CursorStyle nCursorStyle)=0
virtual BeforeKeystrokeResult OnBeforeKeyStroke(const PerWindowData *pAttached, WideString &strChange, const WideString &strChangeEx, int nSelStart, int nSelEnd, bool bKeyDown, Mask< FWL_EVENTFLAG > nFlag)=0
virtual ~IPWL_FillerNotify()=default
virtual void QueryWherePopup(const PerWindowData *pAttached, float fPopupMin, float fPopupMax, bool *bBottom, float *fPopupRet)=0
virtual bool OnPopupPostOpen(const PerWindowData *pAttached, Mask< FWL_EVENTFLAG > nFlag)=0
virtual bool OnPopupPreOpen(const PerWindowData *pAttached, Mask< FWL_EVENTFLAG > nFlag)=0
virtual bool IsSelectionImplemented() const =0
virtual void OutputSelectedRect(PerWindowData *pWidgetData, const CFX_FloatRect &rect)=0
virtual void InvalidateRect(PerWindowData *pWidgetData, const CFX_FloatRect &rect)=0
TEST_F(CPDFSDK_AnnotIteratorTest, CPDFSDK_AnnotIterator)
CPWL_Dash(int32_t dash, int32_t gap, int32_t phase)
#define UNOWNED_PTR_EXCLUSION