PWL_Wnd.h revision 4d3acf4ec42bf6e838f9060103aff98fbf170794
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
124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#define PWL_SCROLLBAR_TRANSPARANCY 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    sTextStrokeColor.Reset();
1854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    nTransparency = 0;
1864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    fFontSize = 0.0f;
1874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    sDash.Reset();
1884d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pAttachedData = nullptr;
1894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pParentWnd = nullptr;
1904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    pMsgControl = nullptr;
1914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    eCursorType = 0;
1924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann    mtChild.SetIdentity();
1934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  }
1944d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann
1954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_FloatRect rcRectWnd;            // required
1964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_SystemHandler* pSystemHandler;  // required
1974d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  IPVT_FontMap* pFontMap;             // required
1984d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  IPWL_Provider::ObservedPtr pProvider;  // required
199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  IPWL_FocusHandler* pFocusHandler;   // optional
2004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  uint32_t dwFlags;                   // optional
201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color sBackgroundColor;        // optional
2024d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPDFSDK_Widget::ObservedPtr pAttachedWidget;  // required
2034d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  BorderStyle nBorderStyle;           // optional
204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t dwBorderWidth;              // optional
205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color sBorderColor;            // optional
206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color sTextColor;              // optional
207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Color sTextStrokeColor;        // optional
208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t nTransparency;              // optional
209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  FX_FLOAT fFontSize;                 // optional
210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Dash sDash;                    // optional
211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void* pAttachedData;                // optional
212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Wnd* pParentWnd;               // ignore
213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_MsgControl* pMsgControl;       // ignore
214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t eCursorType;                // ignore
215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix mtChild;                 // ignore
216e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
217e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
218ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_Timer {
219ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
2204d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CPWL_Timer(CPWL_TimerHandler* pAttached, CFX_SystemHandler* pSystemHandler);
221ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual ~CPWL_Timer();
222e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
223ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t SetPWLTimer(int32_t nElapse);
224ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void KillPWLTimer();
225ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  static void TimerProc(int32_t idEvent);
226e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
227ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private:
228ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t m_nTimerID;
229ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_TimerHandler* m_pAttached;
2304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_SystemHandler* m_pSystemHandler;
231e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
232e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
233ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_TimerHandler {
234ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
235ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_TimerHandler();
236ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual ~CPWL_TimerHandler();
237e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
238ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void BeginTimer(int32_t nElapse);
239ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void EndTimer();
240ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void TimerProc();
2414d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_SystemHandler* GetSystemHandler() const = 0;
242e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
243ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private:
2444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::unique_ptr<CPWL_Timer> m_pTimer;
245e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
246e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
247ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannclass CPWL_Wnd : public CPWL_TimerHandler {
248ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  friend class CPWL_MsgControl;
249ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
250ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann public:
251ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Wnd();
252ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  ~CPWL_Wnd() override;
253ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
254ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void Create(const PWL_CREATEPARAM& cp);
255ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual CFX_ByteString GetClassName() const;
256ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void InvalidateFocusHandler(IPWL_FocusHandler* handler);
257ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void InvalidateProvider(IPWL_Provider* provider);
258ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void Destroy();
2594d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void Move(const CFX_FloatRect& rcNew, bool bReset, bool bRefresh);
2604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual void InvalidateRect(CFX_FloatRect* pRect = nullptr);
261ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
262ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void DrawAppearance(CFX_RenderDevice* pDevice, CFX_Matrix* pUser2Device);
263ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
2644d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnKeyDown(uint16_t nChar, uint32_t nFlag);
2654d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnKeyUp(uint16_t nChar, uint32_t nFlag);
2664d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnChar(uint16_t nChar, uint32_t nFlag);
2674d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnLButtonDblClk(const CFX_FloatPoint& point, uint32_t nFlag);
2684d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnLButtonDown(const CFX_FloatPoint& point, uint32_t nFlag);
2694d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnLButtonUp(const CFX_FloatPoint& point, uint32_t nFlag);
2704d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnMButtonDblClk(const CFX_FloatPoint& point, uint32_t nFlag);
2714d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnMButtonDown(const CFX_FloatPoint& point, uint32_t nFlag);
2724d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnMButtonUp(const CFX_FloatPoint& point, uint32_t nFlag);
2734d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnRButtonDown(const CFX_FloatPoint& point, uint32_t nFlag);
2744d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnRButtonUp(const CFX_FloatPoint& point, uint32_t nFlag);
2754d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnMouseMove(const CFX_FloatPoint& point, uint32_t nFlag);
2764d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual bool OnMouseWheel(short zDelta,
2774d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                            const CFX_FloatPoint& point,
2784d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                            uint32_t nFlag);
279ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
280ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void SetFocus();
281ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void KillFocus();
282ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void SetCapture();
283ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void ReleaseCapture();
284ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
285ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnNotify(CPWL_Wnd* pWnd,
2864d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                        uint32_t msg,
287ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                        intptr_t wParam = 0,
288ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                        intptr_t lParam = 0);
289ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void SetTextColor(const CPWL_Color& color);
290ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void SetTextStrokeColor(const CPWL_Color& color);
2914d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual void SetVisible(bool bVisible);
292ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
2934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_FloatRect GetFocusRect() const;
294ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual CPWL_Color GetBackgroundColor() const;
295ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual CPWL_Color GetBorderColor() const;
296ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual CPWL_Color GetTextColor() const;
297ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual CPWL_Color GetTextStrokeColor() const;
298ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual FX_FLOAT GetFontSize() const;
299ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual int32_t GetInnerBorderWidth() const;
3004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CPWL_Color GetBorderLeftTopColor(BorderStyle nBorderStyle) const;
3014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CPWL_Color GetBorderRightBottomColor(BorderStyle nBorderStyle) const;
302ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
303ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void SetFontSize(FX_FLOAT fFontSize);
304ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
305ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void SetBackgroundColor(const CPWL_Color& color);
3064d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetClipRect(const CFX_FloatRect& rect);
3074d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetBorderStyle(BorderStyle eBorderStyle);
308ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3094d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_FloatRect GetWindowRect() const;
3104d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_FloatRect GetClientRect() const;
3114d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_FloatPoint GetCenterPoint() const;
312ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t GetBorderWidth() const;
3134d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsVisible() const { return m_bVisible; }
3144d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool HasFlag(uint32_t dwFlags) const;
3154d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void AddFlag(uint32_t dwFlags);
3164d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void RemoveFlag(uint32_t dwFlags);
3174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  const CFX_FloatRect& GetClipRect() const;
318ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_Wnd* GetParentWindow() const;
3194d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  BorderStyle GetBorderStyle() const;
320ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  const CPWL_Dash& GetBorderDash() const;
321ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void* GetAttachedData() const;
322ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool WndHitTest(const CFX_FloatPoint& point) const;
3244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool ClientHitTest(const CFX_FloatPoint& point) const;
3254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsCaptureMouse() const;
326ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
327ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  const CPWL_Wnd* GetFocused() const;
3284d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsFocused() const;
3294d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsReadOnly() const;
330ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_ScrollBar* GetVScrollBar() const;
331ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3324d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  IPVT_FontMap* GetFontMap() const;
333ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  IPWL_Provider* GetProvider() const;
334ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  IPWL_FocusHandler* GetFocusHandler() const;
335ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
336ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  int32_t GetTransparency();
337ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void SetTransparency(int32_t nTransparency);
338ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
339ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix GetChildToRoot() const;
340ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix GetChildMatrix() const;
341ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void SetChildMatrix(const CFX_Matrix& mt);
342ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CFX_Matrix GetWindowMatrix() const;
343ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3444d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_FloatPoint ChildToParent(const CFX_FloatPoint& point) const;
3454d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_FloatRect ChildToParent(const CFX_FloatRect& rect) const;
3464d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_FloatPoint ParentToChild(const CFX_FloatPoint& point) const;
3474d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual CFX_FloatRect ParentToChild(const CFX_FloatRect& rect) const;
348ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
349ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  // those methods only implemented by listctrl item
3504d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual FX_FLOAT GetItemHeight(FX_FLOAT fLimitWidth);
3514d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual FX_FLOAT GetItemLeftMargin();
3524d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  virtual FX_FLOAT GetItemRightMargin();
353ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3544d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void EnableWindow(bool bEnable);
3554d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsEnabled();
356ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void SetCursor();
357ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
358ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann protected:
359ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  // CPWL_TimerHandler
3604d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_SystemHandler* GetSystemHandler() const override;
361ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
362ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void CreateChildWnd(const PWL_CREATEPARAM& cp);
363ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void RePosChildWnd();
364ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void GetAppearanceStream(CFX_ByteTextBuf& sAppStream);
365ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void GetThisAppearanceStream(CFX_ByteTextBuf& sAppStream);
366ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void GetChildAppearanceStream(CFX_ByteTextBuf& sAppStream);
367ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
368ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void DrawThisAppearance(CFX_RenderDevice* pDevice,
369ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                  CFX_Matrix* pUser2Device);
370ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void DrawChildAppearance(CFX_RenderDevice* pDevice,
371ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann                                   CFX_Matrix* pUser2Device);
372ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
373ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnCreate(PWL_CREATEPARAM& cp);
374ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnCreated();
375ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnDestroy();
376ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
377ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnSetFocus();
378ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnKillFocus();
379ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
380ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnEnabled();
381ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  virtual void OnDisabled();
382ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3834d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void SetNotifyFlag(bool bNotifying = true) { m_bNotifying = bNotifying; }
384ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3854d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsValid() const;
386ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  const PWL_CREATEPARAM& GetCreationParam() const;
3874d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsNotifying() const { return m_bNotifying; }
388ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3894d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void InvalidateRectMove(const CFX_FloatRect& rcOld,
3904d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann                          const CFX_FloatRect& rcNew);
391ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3924d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  void PWLtoWnd(const CFX_FloatPoint& point, int32_t& x, int32_t& y) const;
3934d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  FX_RECT PWLtoWnd(const CFX_FloatRect& rect) const;
394ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3954d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsWndCaptureMouse(const CPWL_Wnd* pWnd) const;
3964d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsWndCaptureKeyboard(const CPWL_Wnd* pWnd) const;
397ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  const CPWL_Wnd* GetRootWnd() const;
398ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
3994d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsCTRLpressed(uint32_t nFlag) const;
4004d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsSHIFTpressed(uint32_t nFlag) const;
4014d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool IsALTpressed(uint32_t nFlag) const;
402ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
403ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private:
404ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void AddChild(CPWL_Wnd* pWnd);
405ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void RemoveChild(CPWL_Wnd* pWnd);
406ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
407ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void CreateScrollBar(const PWL_CREATEPARAM& cp);
408ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void CreateVScrollBar(const PWL_CREATEPARAM& cp);
409ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
410ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void AdjustStyle();
411ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void CreateMsgControl();
412ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  void DestroyMsgControl();
413ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
414ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_MsgControl* GetMsgControl() const;
415ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
416ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann protected:
4174d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  std::vector<CPWL_Wnd*> m_Children;
418ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann
419ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann private:
420ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  PWL_CREATEPARAM m_sPrivateParam;
421ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann  CPWL_ScrollBar* m_pVScrollBar;
4224d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_FloatRect m_rcWindow;
4234d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  CFX_FloatRect m_rcClip;
4244d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bCreated;
4254d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bVisible;
4264d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bNotifying;
4274d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann  bool m_bEnabled;
428e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov};
429e6986e1e8d4a57987f47c215490cb080a65ee29aSvet Ganov
4304d3acf4ec42bf6e838f9060103aff98fbf170794Philip P. Moltmann#endif  // FPDFSDK_PDFWINDOW_PWL_WND_H_
431