1e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// found in the LICENSE file.
4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
5e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
74d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#ifndef FPDFSDK_PDFWINDOW_PWL_WND_H_
84d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#define FPDFSDK_PDFWINDOW_PWL_WND_H_
9e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <memory>
114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include <vector>
124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fpdfdoc/cpdf_formcontrol.h"
144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/cfx_observable.h"
154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "core/fxcrt/fx_basic.h"
164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cfx_systemhandler.h"
174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/cpdfsdk_widget.h"
184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#include "fpdfsdk/pdfwindow/cpwl_color.h"
19e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
20e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_MsgControl;
21e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_ScrollBar;
22e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_Timer;
23e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_TimerHandler;
24e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass CPWL_Wnd;
254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass CFX_SystemHandler;
264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass IPVT_FontMap;
27e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganovclass IPWL_Provider;
28e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// window styles
30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_CHILD 0x80000000L
31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_BORDER 0x40000000L
32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_BACKGROUND 0x20000000L
33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_HSCROLL 0x10000000L
34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_VSCROLL 0x08000000L
35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_VISIBLE 0x04000000L
36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_DISABLE 0x02000000L
37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_READONLY 0x01000000L
38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_AUTOFONTSIZE 0x00800000L
39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_AUTOTRANSPARENT 0x00400000L
40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWS_NOREFRESHCLIP 0x00200000L
41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// edit and label styles
43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_MULTILINE 0x0001L
44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_PASSWORD 0x0002L
45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_LEFT 0x0004L
46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_RIGHT 0x0008L
47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_MIDDLE 0x0010L
48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_TOP 0x0020L
49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_BOTTOM 0x0040L
50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_CENTER 0x0080L
51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_CHARARRAY 0x0100L
52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_AUTOSCROLL 0x0200L
53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_AUTORETURN 0x0400L
54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_UNDO 0x0800L
55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_RICH 0x1000L
56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_SPELLCHECK 0x2000L
57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_TEXTOVERFLOW 0x4000L
58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PES_NOREAD 0x8000L
59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// listbox styles
61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PLBS_MULTIPLESEL 0x0001L
62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PLBS_HOVERSEL 0x0008L
63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// combobox styles
65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PCBS_ALLOWCUSTOMTEXT 0x0001L
66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// richedit styles
68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_MULTILINE 0x0001L
69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_AUTORETURN 0x0002L
70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_AUTOSCROLL 0x0004L
71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_UNDO 0x0100L
72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_MULTIPAGES 0x0200L
73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PRES_TEXTOVERFLOW 0x0400L
74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// notification messages
76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_ADDCHILD 0x00000000L
77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_REMOVECHILD 0x00000001L
78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SETSCROLLINFO 0x00000002L
79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SETSCROLLPOS 0x00000003L
80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SCROLLWINDOW 0x00000004L
81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_LBUTTONDOWN 0x00000005L
82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_LBUTTONUP 0x00000006L
83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_MOUSEMOVE 0x00000007L
84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_NOTERESET 0x00000008L
85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SETCARETINFO 0x00000009L
86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_SELCHANGED 0x0000000AL
87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PNM_NOTEEDITCHANGED 0x0000000BL
88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_CLASSNAME_EDIT "CPWL_Edit"
90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstruct CPWL_Dash {
924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Dash() : nDash(0), nGap(0), nPhase(0) {}
93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Dash(int32_t dash, int32_t gap, int32_t phase)
94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann      : nDash(dash), nGap(gap), nPhase(phase) {}
95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void Reset() {
974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    nDash = 0;
984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    nGap = 0;
994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    nPhase = 0;
1004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  }
1014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t nDash;
103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t nGap;
104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t nPhase;
105e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
106e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
1074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmanninline bool operator==(const CPWL_Color& c1, const CPWL_Color& c2) {
108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  return c1.nColorType == c2.nColorType && c1.fColor1 - c2.fColor1 < 0.0001 &&
109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann         c1.fColor1 - c2.fColor1 > -0.0001 &&
110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann         c1.fColor2 - c2.fColor2 < 0.0001 &&
111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann         c1.fColor2 - c2.fColor2 > -0.0001 &&
112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann         c1.fColor3 - c2.fColor3 < 0.0001 &&
113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann         c1.fColor3 - c2.fColor3 > -0.0001 &&
114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann         c1.fColor4 - c2.fColor4 < 0.0001 && c1.fColor4 - c2.fColor4 > -0.0001;
115e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
116e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
1174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmanninline bool operator!=(const CPWL_Color& c1, const CPWL_Color& c2) {
1184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  return !(c1 == c2);
119e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov}
120e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_WIDTH 12.0f
122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_BUTTON_WIDTH 9.0f
123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_POSBUTTON_MINWIDTH 2.0f
1245ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann#define PWL_SCROLLBAR_TRANSPARENCY 150
125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_BKCOLOR \
126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color(COLORTYPE_RGB, 220.0f / 255.0f, 220.0f / 255.0f, 220.0f / 255.0f)
127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_SELTEXTCOLOR CPWL_Color(COLORTYPE_RGB, 1, 1, 1)
128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_SELBACKCOLOR \
129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color(COLORTYPE_RGB, 0, 51.0f / 255.0f, 113.0f / 255.0f)
130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_BACKCOLOR PWL_DEFAULT_SELTEXTCOLOR
131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_TEXTCOLOR CPWL_Color(COLORTYPE_RGB, 0, 0, 0)
132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_FONTSIZE 9.0f
133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_BLACKCOLOR CPWL_Color(COLORTYPE_GRAY, 0)
134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_WHITECOLOR CPWL_Color(COLORTYPE_GRAY, 1)
135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_HEAVYGRAYCOLOR CPWL_Color(COLORTYPE_GRAY, 0.50)
136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_DEFAULT_LIGHTGRAYCOLOR CPWL_Color(COLORTYPE_GRAY, 0.75)
137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_TRIANGLE_HALFLEN 2.0f
138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_CBBUTTON_TRIANGLE_HALFLEN 3.0f
139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_INVALIDATE_INFLATE 2
140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
1414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmannclass IPWL_Provider : public CFX_Observable<IPWL_Provider> {
142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual ~IPWL_Provider() {}
144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  // get a matrix which map user space to CWnd client space
146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual CFX_Matrix GetWindowMatrix(void* pAttachedData) = 0;
147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  /*
149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  0 L"&Undo\tCtrl+Z"
150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  1 L"&Redo\tCtrl+Shift+Z"
151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  2 L"Cu&t\tCtrl+X"
152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  3 L"&Copy\tCtrl+C"
153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  4 L"&Paste\tCtrl+V"
154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  5 L"&Delete"
155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  6  L"&Select All\tCtrl+A"
156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  */
157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual CFX_WideString LoadPopupMenuString(int32_t nIndex) = 0;
158e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
159e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass IPWL_FocusHandler {
161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual ~IPWL_FocusHandler() {}
163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnSetFocus(CPWL_Wnd* pWnd) = 0;
164e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
165e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannstruct PWL_CREATEPARAM {
167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
1684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  PWL_CREATEPARAM();
1694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  PWL_CREATEPARAM(const PWL_CREATEPARAM& other);
1704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void Reset() {
1724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    rcRectWnd.Reset();
1734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pSystemHandler = nullptr;
1744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pFontMap = nullptr;
1754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pProvider.Reset();
1764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pFocusHandler = nullptr;
1774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    dwFlags = 0;
1784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    sBackgroundColor.Reset();
1794d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pAttachedWidget.Reset();
1804d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    nBorderStyle = BorderStyle::SOLID;
1814d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    dwBorderWidth = 0;
1824d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    sBorderColor.Reset();
1834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    sTextColor.Reset();
1844d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    nTransparency = 0;
1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    fFontSize = 0.0f;
1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    sDash.Reset();
1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pAttachedData = nullptr;
1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pParentWnd = nullptr;
1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pMsgControl = nullptr;
1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    eCursorType = 0;
1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    mtChild.SetIdentity();
1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  }
1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_FloatRect rcRectWnd;            // required
1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_SystemHandler* pSystemHandler;  // required
1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  IPVT_FontMap* pFontMap;             // required
1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  IPWL_Provider::ObservedPtr pProvider;  // required
198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  IPWL_FocusHandler* pFocusHandler;   // optional
1994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  uint32_t dwFlags;                   // optional
200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color sBackgroundColor;        // optional
2014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_Widget::ObservedPtr pAttachedWidget;  // required
2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  BorderStyle nBorderStyle;           // optional
203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t dwBorderWidth;              // optional
204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color sBorderColor;            // optional
205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color sTextColor;              // optional
206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t nTransparency;              // optional
207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  FX_FLOAT fFontSize;                 // optional
208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Dash sDash;                    // optional
209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void* pAttachedData;                // optional
210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Wnd* pParentWnd;               // ignore
211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_MsgControl* pMsgControl;       // ignore
212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t eCursorType;                // ignore
213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix mtChild;                 // ignore
214e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
215e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
216ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_Timer {
217ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
2184d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Timer(CPWL_TimerHandler* pAttached, CFX_SystemHandler* pSystemHandler);
219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual ~CPWL_Timer();
220e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t SetPWLTimer(int32_t nElapse);
222ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void KillPWLTimer();
223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  static void TimerProc(int32_t idEvent);
224e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private:
226ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t m_nTimerID;
227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_TimerHandler* m_pAttached;
2284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_SystemHandler* m_pSystemHandler;
229e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
230e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
231ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_TimerHandler {
232ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_TimerHandler();
234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual ~CPWL_TimerHandler();
235e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void BeginTimer(int32_t nElapse);
237ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void EndTimer();
238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void TimerProc();
2394d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_SystemHandler* GetSystemHandler() const = 0;
240e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
241ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private:
2424d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::unique_ptr<CPWL_Timer> m_pTimer;
243e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
244e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
245ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_Wnd : public CPWL_TimerHandler {
246ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Wnd();
248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  ~CPWL_Wnd() override;
249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual CFX_ByteString GetClassName() const;
2514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual void InvalidateRect(CFX_FloatRect* pRect = nullptr);
252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
2534d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnKeyDown(uint16_t nChar, uint32_t nFlag);
2544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnChar(uint16_t nChar, uint32_t nFlag);
2555ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual bool OnLButtonDblClk(const CFX_PointF& point, uint32_t nFlag);
2565ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual bool OnLButtonDown(const CFX_PointF& point, uint32_t nFlag);
2575ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual bool OnLButtonUp(const CFX_PointF& point, uint32_t nFlag);
2585ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual bool OnRButtonDown(const CFX_PointF& point, uint32_t nFlag);
2595ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual bool OnRButtonUp(const CFX_PointF& point, uint32_t nFlag);
2605ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual bool OnMouseMove(const CFX_PointF& point, uint32_t nFlag);
2614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnMouseWheel(short zDelta,
2625ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann                            const CFX_PointF& point,
2634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                            uint32_t nFlag);
264ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnNotify(CPWL_Wnd* pWnd,
2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                        uint32_t msg,
266ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                        intptr_t wParam = 0,
267ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                        intptr_t lParam = 0);
2685ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual void SetFocus();
2695ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual void KillFocus();
2705ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual void SetCursor();
2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual void SetVisible(bool bVisible);
2725ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual void SetFontSize(FX_FLOAT fFontSize);
2735ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual FX_FLOAT GetFontSize() const;
274ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_FloatRect GetFocusRect() const;
2765ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  virtual CFX_FloatRect GetClientRect() const;
277ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
2785ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void InvalidateFocusHandler(IPWL_FocusHandler* handler);
2795ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void InvalidateProvider(IPWL_Provider* provider);
2805ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void Create(const PWL_CREATEPARAM& cp);
2815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void Destroy();
2825ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void Move(const CFX_FloatRect& rcNew, bool bReset, bool bRefresh);
2835ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
2845ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void SetCapture();
2855ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void ReleaseCapture();
2865ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
2875ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void DrawAppearance(CFX_RenderDevice* pDevice, CFX_Matrix* pUser2Device);
288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
2895ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CPWL_Color GetBackgroundColor() const;
290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void SetBackgroundColor(const CPWL_Color& color);
2915ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CPWL_Color GetBorderColor() const;
2925ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CPWL_Color GetTextColor() const;
2935ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void SetTextColor(const CPWL_Color& color);
2945ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CPWL_Color GetBorderLeftTopColor(BorderStyle nBorderStyle) const;
2955ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CPWL_Color GetBorderRightBottomColor(BorderStyle nBorderStyle) const;
2965ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
2974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetBorderStyle(BorderStyle eBorderStyle);
2985ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  BorderStyle GetBorderStyle() const;
2995ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  const CPWL_Dash& GetBorderDash() const;
300ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
301ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t GetBorderWidth() const;
3025ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  int32_t GetInnerBorderWidth() const;
3035ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CFX_FloatRect GetWindowRect() const;
3045ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CFX_PointF GetCenterPoint() const;
3055ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsVisible() const { return m_bVisible; }
3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool HasFlag(uint32_t dwFlags) const;
3084d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void AddFlag(uint32_t dwFlags);
3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void RemoveFlag(uint32_t dwFlags);
3105ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
3115ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void SetClipRect(const CFX_FloatRect& rect);
3124d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  const CFX_FloatRect& GetClipRect() const;
3135ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
314ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Wnd* GetParentWindow() const;
315ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void* GetAttachedData() const;
316ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3175ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  bool WndHitTest(const CFX_PointF& point) const;
3185ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  bool ClientHitTest(const CFX_PointF& point) const;
3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsCaptureMouse() const;
320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3215ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void EnableWindow(bool bEnable);
3225ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  bool IsEnabled() const { return m_bEnabled; }
323ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  const CPWL_Wnd* GetFocused() const;
3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsFocused() const;
3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsReadOnly() const;
326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_ScrollBar* GetVScrollBar() const;
327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  IPVT_FontMap* GetFontMap() const;
329ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  IPWL_Provider* GetProvider() const;
330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  IPWL_FocusHandler* GetFocusHandler() const;
331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
332ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t GetTransparency();
333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void SetTransparency(int32_t nTransparency);
334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix GetChildToRoot() const;
336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix GetChildMatrix() const;
337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void SetChildMatrix(const CFX_Matrix& mt);
338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix GetWindowMatrix() const;
339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann protected:
3415ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  friend class CPWL_MsgControl;
3425ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  // CPWL_TimerHandler
3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_SystemHandler* GetSystemHandler() const override;
345ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
346ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void CreateChildWnd(const PWL_CREATEPARAM& cp);
347ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void RePosChildWnd();
348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream);
349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
350ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void DrawThisAppearance(CFX_RenderDevice* pDevice,
351ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                  CFX_Matrix* pUser2Device);
352ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnCreate(PWL_CREATEPARAM& cp);
354ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnCreated();
355ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnDestroy();
356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnSetFocus();
358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnKillFocus();
359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3605ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void GetAppearanceStream(CFX_ByteTextBuf& sAppStream);
3614d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetNotifyFlag(bool bNotifying = true) { m_bNotifying = bNotifying; }
362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3634d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsValid() const;
364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  const PWL_CREATEPARAM& GetCreationParam() const;
3654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsNotifying() const { return m_bNotifying; }
366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void InvalidateRectMove(const CFX_FloatRect& rcOld,
3684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                          const CFX_FloatRect& rcNew);
369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsWndCaptureMouse(const CPWL_Wnd* pWnd) const;
3714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsWndCaptureKeyboard(const CPWL_Wnd* pWnd) const;
372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  const CPWL_Wnd* GetRootWnd() const;
373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsCTRLpressed(uint32_t nFlag) const;
3754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsSHIFTpressed(uint32_t nFlag) const;
3764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsALTpressed(uint32_t nFlag) const;
377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private:
3795ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CFX_PointF ParentToChild(const CFX_PointF& point) const;
3805ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  CFX_FloatRect ParentToChild(const CFX_FloatRect& rect) const;
3815ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
3825ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void GetChildAppearanceStream(CFX_ByteTextBuf& sAppStream);
3835ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  void DrawChildAppearance(CFX_RenderDevice* pDevice, CFX_Matrix* pUser2Device);
3845ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
3855ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann  FX_RECT PWLtoWnd(const CFX_FloatRect& rect) const;
3865ae9d0c6fd838a2967cca72aa5751b51dadc2769Philip P. Moltmann
387ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void AddChild(CPWL_Wnd* pWnd);
388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void RemoveChild(CPWL_Wnd* pWnd);
389ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
390ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void CreateScrollBar(const PWL_CREATEPARAM& cp);
391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void CreateVScrollBar(const PWL_CREATEPARAM& cp);
392ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
393ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void AdjustStyle();
394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void CreateMsgControl();
395ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void DestroyMsgControl();
396ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_MsgControl* GetMsgControl() const;
398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::vector<CPWL_Wnd*> m_Children;
400ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  PWL_CREATEPARAM m_sPrivateParam;
401ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_ScrollBar* m_pVScrollBar;
4024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_FloatRect m_rcWindow;
4034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_FloatRect m_rcClip;
4044d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bCreated;
4054d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bVisible;
4064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bNotifying;
4074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bEnabled;
408e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
409e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
4104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // FPDFSDK_PDFWINDOW_PWL_WND_H_
411