Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Side by Side Diff: xfa/include/fwl/core/fwl_note.h

Issue 1827923002: Move xfa/include/fwl/{core,basewidget} to xfa/fwl/{core,basewidget}. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase to master Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/include/fwl/core/fwl_grid.h ('k') | xfa/include/fwl/core/fwl_panel.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef XFA_INCLUDE_FWL_CORE_FWL_NOTE_H_
8 #define XFA_INCLUDE_FWL_CORE_FWL_NOTE_H_
9
10 #include "core/fxcrt/include/fx_coordinates.h"
11 #include "xfa/fxgraphics/include/cfx_graphics.h"
12 #include "xfa/include/fwl/core/fwl_error.h"
13
14 class IFWL_Widget;
15 class IFWL_NoteThread;
16 class CFWL_Note;
17 class CFWL_Message;
18 class CFWL_MsgActivate;
19 class CFWL_MsgDeactivate;
20 class CFWL_MsgMouse;
21 class CFWL_MsgMouseWheel;
22 class CFWL_MsgKey;
23 class CFWL_MsgSetFocus;
24 class CFWL_MsgKillFocus;
25 class CFWL_MsgCursor;
26 class CFWL_MsgSize;
27 class CFWL_MsgWindowMove;
28 class CFWL_MsgDropFiles;
29 class CFWL_MsgTaskClicked;
30 class CFWL_MsgClose;
31 class CFWL_MsgWindowWillMove;
32 class CFWL_Event;
33 class CFWL_EvtMouse;
34 class CFWL_EvtMouseWheel;
35 class CFWL_EvtKey;
36 class CFWL_EvtSetFocus;
37 class CFWL_EvtKillFocus;
38 class CFWL_EvtDraw;
39 class CFWL_EvtClick;
40 class CFWL_EvtScroll;
41 class CFWL_EvtClose;
42 class CFWL_EvtContextMenu;
43 class CFWL_EvtMenuCommand;
44 class CFWL_EvtSizeChanged;
45 class CFWL_EvtIdle;
46 class IFWL_NoteDriver;
47 class IFWL_NoteLoop;
48
49 #define FWL_MSG_Activate L"FWL_MESSAGE_Activate"
50 #define FWL_MSG_Deactivate L"FWL_MESSAGE_Deactivate"
51 #define FWL_MSG_SetFocus L"FWL_MESSAGE_SetFocus"
52 #define FWL_MSG_KillFocus L"FWL_MESSAGE_KillFocus"
53 #define FWL_MSG_Mouse L"FWL_MESSAGE_Mouse"
54 #define FWL_MSG_MouseWheel L"FWL_MESSAGE_MouseWheel"
55 #define FWL_MSG_Key L"FWL_MESSAGE_Key"
56 #define FWL_MSG_Cursor L"FWL_MESSAGE_Cursor"
57 #define FWL_MSG_Size L"FWL_MESSAGE_Size"
58 #define FWL_MSG_WindowMove L"FWL_MESSAGE_WindowMove"
59 #define FWL_MSG_DropFiles L"FWL_MESSAGE_DropFiles"
60 #define FWL_MSG_TaskClicked L"FWL_MESSAGE_TaskClicked"
61 #define FWL_MSG_Close L"FWL_MESSAGE_Close"
62 #define FWL_MSG_Post L"FWL_MESSAGE_Post"
63 #define FWL_MSG_WindowWillMove L"FWL_MESSAGE_WindowWillMove"
64 #define FWL_MSGHASH_Activate 2410369469
65 #define FWL_MSGHASH_Deactivate 1184214790
66 #define FWL_MSGHASH_SetFocus 4174512504
67 #define FWL_MSGHASH_KillFocus 1557903832
68 #define FWL_MSGHASH_Mouse 706128309
69 #define FWL_MSGHASH_MouseWheel 893703466
70 #define FWL_MSGHASH_Key 3751372405
71 #define FWL_MSGHASH_Cursor 3182626218
72 #define FWL_MSGHASH_Size 160077735
73 #define FWL_MSGHASH_WindowMove 1032269377
74 #define FWL_MSGHASH_DropFiles 2004165236
75 #define FWL_MSGHASH_TaskClicked 3128231086
76 #define FWL_MSGHASH_Close 2977563906
77 #define FWL_MSGHASH_Post 1969633074
78 #define FWL_MSGHASH_WindowWillMove 2229175763
79 #define FWL_EVT_Mouse L"FWL_EVENT_Mouse"
80 #define FWL_EVT_MouseWheel L"FWL_EVENT_MouseWheel"
81 #define FWL_EVT_Key L"FWL_EVENT_Key"
82 #define FWL_EVT_SetFocus L"FWL_EVENT_SetFocus"
83 #define FWL_EVT_KillFocus L"FWL_EVENT_KillFocus"
84 #define FWL_EVT_Click L"FWL_EVENT_Click"
85 #define FWL_EVT_Draw L"FWL_EVENT_Draw"
86 #define FWL_EVT_Scroll L"FWL_EVENT_Scroll"
87 #define FWL_EVT_Close L"FWL_EVENT_Close"
88 #define FWL_EVT_ContextMenu L"FWL_EVENT_ContextMenu"
89 #define FWL_EVT_MenuCommand L"FWL_EVENT_MenuCommand"
90 #define FWL_EVT_SizeChanged L"FWL_EVENT_SizeChanged"
91 #define FWL_EVTHASH_Mouse 1765258002
92 #define FWL_EVTHASH_MouseWheel 3907114407
93 #define FWL_EVTHASH_Key 2408354450
94 #define FWL_EVTHASH_SetFocus 3909721269
95 #define FWL_EVTHASH_KillFocus 1779363253
96 #define FWL_EVTHASH_Draw 2430713303
97 #define FWL_EVTHASH_Click 4026328783
98 #define FWL_EVTHASH_Scroll 2965158968
99 #define FWL_EVTHASH_Close 4036693599
100 #define FWL_EVTHASH_ContextMenu 2717307715
101 #define FWL_EVTHASH_MenuCommand 497763741
102 #define FWL_EVTHASH_SizeChanged 3083958510
103 #define FWL_EVTHASH_Idle 839546759
104 #define FWL_MSGMOUSECMD_LButtonDown 1
105 #define FWL_MSGMOUSECMD_LButtonUp 2
106 #define FWL_MSGMOUSECMD_LButtonDblClk 3
107 #define FWL_MSGMOUSECMD_RButtonDown 4
108 #define FWL_MSGMOUSECMD_RButtonUp 5
109 #define FWL_MSGMOUSECMD_RButtonDblClk 6
110 #define FWL_MSGMOUSECMD_MButtonDown 7
111 #define FWL_MSGMOUSECMD_MButtonUp 8
112 #define FWL_MSGMOUSECMD_MButtonDblClk 9
113 #define FWL_MSGMOUSECMD_MouseMove 10
114 #define FWL_MSGMOUSECMD_MouseEnter 11
115 #define FWL_MSGMOUSECMD_MouseLeave 12
116 #define FWL_MSGMOUSECMD_MouseHover 13
117 #define FWL_MSGKEYCMD_KeyDown 1
118 #define FWL_MSGKEYCMD_KeyUp 2
119 #define FWL_MSGKEYCMD_Char 3
120 #define FWL_KEYFLAG_Ctrl (1 << 0)
121 #define FWL_KEYFLAG_Alt (1 << 1)
122 #define FWL_KEYFLAG_Shift (1 << 2)
123 #define FWL_KEYFLAG_Command (1 << 3)
124 #define FWL_KEYFLAG_LButton (1 << 4)
125 #define FWL_KEYFLAG_RButton (1 << 5)
126 #define FWL_KEYFLAG_MButton (1 << 6)
127
128 // Separate hierarchy not related to IFWL_* hierarchy. These should not
129 // get cast to IFWL_* types.
130 class CFWL_Note {
131 public:
132 virtual FX_DWORD Release() {
133 m_dwRefCount--;
134 FX_DWORD dwRefCount = m_dwRefCount;
135 if (!m_dwRefCount) {
136 delete this;
137 }
138 return dwRefCount;
139 }
140 virtual CFWL_Note* Retain() {
141 m_dwRefCount++;
142 return this;
143 }
144 virtual FWL_ERR GetClassName(CFX_WideString& wsClass) const {
145 wsClass = L"CFWL_Note";
146 return FWL_ERR_Succeeded;
147 }
148 virtual FX_DWORD GetClassID() const { return 0; }
149 virtual FX_BOOL IsInstance(const CFX_WideStringC& wsClass) const {
150 return TRUE;
151 }
152 virtual CFWL_Note* Clone() { return NULL; }
153 FX_BOOL IsEvent() const { return m_bIsEvent; }
154 IFWL_Widget* m_pSrcTarget;
155 IFWL_Widget* m_pDstTarget;
156
157 protected:
158 CFWL_Note(FX_BOOL bIsEvent)
159 : m_pSrcTarget(NULL),
160 m_pDstTarget(NULL),
161 m_dwRefCount(1),
162 m_bIsEvent(bIsEvent),
163 m_dwExtend(0) {}
164 virtual ~CFWL_Note() {}
165 virtual FX_BOOL Initialize() { return TRUE; }
166 virtual int32_t Finalize() { return 0; }
167 FX_DWORD m_dwRefCount;
168 FX_BOOL m_bIsEvent;
169
170 public:
171 FX_DWORD m_dwExtend;
172 };
173 class CFWL_Message : public CFWL_Note {
174 public:
175 CFWL_Message() : CFWL_Note(FALSE) {}
176 virtual ~CFWL_Message() {}
177 };
178 #define BEGIN_FWL_MESSAGE_DEF(classname, msghashcode) \
179 class classname : public CFWL_Message { \
180 public: \
181 classname() : CFWL_Message() {} \
182 virtual CFWL_Note* Clone() { return new classname(*this); } \
183 virtual FWL_ERR GetClassName(CFX_WideString& wsClass) const { \
184 wsClass = L## #classname; \
185 return FWL_ERR_Succeeded; \
186 } \
187 virtual FX_DWORD GetClassID() const { return msghashcode; }
188 #define END_FWL_MESSAGE_DEF \
189 } \
190 ; // NOLINT
191 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgActivate, FWL_MSGHASH_Activate)
192 END_FWL_MESSAGE_DEF
193 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgDeactivate, FWL_MSGHASH_Deactivate)
194 END_FWL_MESSAGE_DEF
195 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgMouse, FWL_MSGHASH_Mouse)
196 FX_FLOAT m_fx;
197 FX_FLOAT m_fy;
198 FX_DWORD m_dwFlags;
199 FX_DWORD m_dwCmd;
200 END_FWL_MESSAGE_DEF
201 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgMouseWheel, FWL_MSGHASH_MouseWheel)
202 FX_FLOAT m_fx;
203 FX_FLOAT m_fy;
204 FX_FLOAT m_fDeltaX;
205 FX_FLOAT m_fDeltaY;
206 FX_DWORD m_dwFlags;
207 END_FWL_MESSAGE_DEF
208 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgSetFocus, FWL_MSGHASH_SetFocus)
209 IFWL_Widget* m_pKillFocus;
210 END_FWL_MESSAGE_DEF
211 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgKillFocus, FWL_MSGHASH_KillFocus)
212 IFWL_Widget* m_pSetFocus;
213 END_FWL_MESSAGE_DEF
214 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgKey, FWL_MSGHASH_Key)
215 FX_DWORD m_dwKeyCode;
216 FX_DWORD m_dwFlags;
217 FX_DWORD m_dwCmd;
218 END_FWL_MESSAGE_DEF
219 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgCursor, FWL_MSGHASH_Cursor)
220 END_FWL_MESSAGE_DEF
221 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgSize, FWL_MSGHASH_Size)
222 int32_t m_iWidth;
223 int32_t m_iHeight;
224 END_FWL_MESSAGE_DEF
225 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgWindowMove, FWL_MSGHASH_WindowMove)
226 FX_FLOAT m_fx;
227 FX_FLOAT m_fy;
228 END_FWL_MESSAGE_DEF
229 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgDropFiles, FWL_MSGHASH_DropFiles)
230 CFWL_MsgDropFiles(const CFWL_MsgDropFiles& copy) {
231 m_pDstTarget = copy.m_pDstTarget;
232 m_pSrcTarget = copy.m_pSrcTarget;
233 m_fx = copy.m_fx;
234 m_fy = copy.m_fy;
235 m_files.Append(copy.m_files);
236 }
237 FX_FLOAT m_fx;
238 FX_FLOAT m_fy;
239 CFX_WideStringArray m_files;
240 END_FWL_MESSAGE_DEF
241 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgTaskClicked, FWL_MSGHASH_TaskClicked)
242 FX_FLOAT m_fx;
243 FX_FLOAT m_fy;
244 END_FWL_MESSAGE_DEF
245 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgClose, FWL_MSGHASH_Close)
246 END_FWL_MESSAGE_DEF
247 BEGIN_FWL_MESSAGE_DEF(CFWL_MsgWindowWillMove, FWL_MSGHASH_WindowWillMove)
248 END_FWL_MESSAGE_DEF
249 class CFWL_Event : public CFWL_Note {
250 public:
251 CFWL_Event() : CFWL_Note(TRUE) {}
252 virtual ~CFWL_Event() {}
253 };
254 #define BEGIN_FWL_EVENT_DEF(classname, eventhashcode) \
255 class classname : public CFWL_Event { \
256 public: \
257 classname() : CFWL_Event() {} \
258 virtual FWL_ERR GetClassName(CFX_WideString& wsClass) const { \
259 wsClass = L## #classname; \
260 return FWL_ERR_Succeeded; \
261 } \
262 virtual FX_DWORD GetClassID() const { return eventhashcode; }
263 #define END_FWL_EVENT_DEF \
264 } \
265 ; // NOLINT
266 BEGIN_FWL_EVENT_DEF(CFWL_EvtMouse, FWL_EVTHASH_Mouse)
267 FX_FLOAT m_fx;
268 FX_FLOAT m_fy;
269 FX_DWORD m_dwFlags;
270 FX_DWORD m_dwCmd;
271 END_FWL_EVENT_DEF
272 BEGIN_FWL_EVENT_DEF(CFWL_EvtMouseWheel, FWL_EVTHASH_MouseWheel)
273 FX_FLOAT m_fx;
274 FX_FLOAT m_fy;
275 FX_FLOAT m_fDeltaX;
276 FX_FLOAT m_fDeltaY;
277 FX_DWORD m_dwFlags;
278 END_FWL_EVENT_DEF
279 BEGIN_FWL_EVENT_DEF(CFWL_EvtKey, FWL_EVTHASH_Key)
280 FX_DWORD m_dwKeyCode;
281 FX_DWORD m_dwFlags;
282 FX_DWORD m_dwCmd;
283 END_FWL_EVENT_DEF
284 BEGIN_FWL_EVENT_DEF(CFWL_EvtSetFocus, FWL_EVTHASH_SetFocus)
285 IFWL_Widget* m_pSetFocus;
286 END_FWL_EVENT_DEF
287 BEGIN_FWL_EVENT_DEF(CFWL_EvtKillFocus, FWL_EVTHASH_KillFocus)
288 IFWL_Widget* m_pKillFocus;
289 END_FWL_EVENT_DEF
290 BEGIN_FWL_EVENT_DEF(CFWL_EvtDraw, FWL_EVTHASH_Draw)
291 CFX_Graphics* m_pGraphics;
292 IFWL_Widget* m_pWidget;
293 END_FWL_EVENT_DEF
294 BEGIN_FWL_EVENT_DEF(CFWL_EvtClick, FWL_EVTHASH_Click)
295 END_FWL_EVENT_DEF
296 BEGIN_FWL_EVENT_DEF(CFWL_EvtScroll, FWL_EVTHASH_Scroll)
297 FX_DWORD m_iScrollCode;
298 FX_FLOAT m_fPos;
299 FX_BOOL* m_pRet;
300 END_FWL_EVENT_DEF
301 BEGIN_FWL_EVENT_DEF(CFWL_EvtClose, FWL_EVTHASH_Close)
302 END_FWL_EVENT_DEF
303 BEGIN_FWL_EVENT_DEF(CFWL_EvtContextMenu, FWL_EVTHASH_ContextMenu)
304 FX_FLOAT m_fPosX;
305 FX_FLOAT m_fPosY;
306 IFWL_Widget* m_pOwner;
307 END_FWL_EVENT_DEF
308 BEGIN_FWL_EVENT_DEF(CFWL_EvtMenuCommand, FWL_EVTHASH_MenuCommand)
309 int32_t m_iCommand;
310 void* m_pData;
311 END_FWL_EVENT_DEF
312 BEGIN_FWL_EVENT_DEF(CFWL_EvtSizeChanged, FWL_EVTHASH_SizeChanged)
313 IFWL_Widget* m_pWidget;
314 CFX_RectF m_rtOld;
315 CFX_RectF m_rtNew;
316 END_FWL_MESSAGE_DEF
317 BEGIN_FWL_EVENT_DEF(CFWL_EvtIdle, FWL_EVTHASH_Idle)
318 END_FWL_EVENT_DEF
319 typedef enum {
320 FWL_EVENT_MOUSE_MASK = 1 << 0,
321 FWL_EVENT_MOUSEWHEEL_MASK = 1 << 1,
322 FWL_EVENT_KEY_MASK = 1 << 2,
323 FWL_EVENT_FOCUSCHANGED_MASK = 1 << 3,
324 FWL_EVENT_DRAW_MASK = 1 << 4,
325 FWL_EVENT_CLOSE_MASK = 1 << 5,
326 FWL_EVENT_SIZECHANGED_MASK = 1 << 6,
327 FWL_EVENT_IDLE_MASK = 1 << 7,
328 FWL_EVENT_CONTROL_MASK = 1 << 8,
329 FWL_EVENT_ALL_MASK = 0xFF
330 } FWLEventMask;
331 class IFWL_NoteDriver {
332 public:
333 virtual ~IFWL_NoteDriver() {}
334 virtual FX_BOOL SendNote(CFWL_Note* pNote) = 0;
335 virtual FX_BOOL PostMessage(CFWL_Message* pMessage) = 0;
336 virtual FWL_ERR RegisterEventTarget(
337 IFWL_Widget* pListener,
338 IFWL_Widget* pEventSource = NULL,
339 FX_DWORD dwFilter = FWL_EVENT_ALL_MASK) = 0;
340 virtual FWL_ERR UnregisterEventTarget(IFWL_Widget* pListener) = 0;
341 virtual void ClearEventTargets(FX_BOOL bRemoveAll) = 0;
342 virtual int32_t GetQueueMaxSize() const = 0;
343 virtual FWL_ERR SetQueueMaxSize(const int32_t size) = 0;
344 virtual IFWL_NoteThread* GetOwnerThread() const = 0;
345 virtual FWL_ERR PushNoteLoop(IFWL_NoteLoop* pNoteLoop) = 0;
346 virtual IFWL_NoteLoop* PopNoteLoop() = 0;
347 virtual IFWL_Widget* GetFocus() = 0;
348 virtual FX_BOOL SetFocus(IFWL_Widget* pFocus, FX_BOOL bNotify = FALSE) = 0;
349 virtual void SetGrab(IFWL_Widget* pGrab, FX_BOOL bSet) = 0;
350 virtual FWL_ERR Run() = 0;
351 };
352 IFWL_Widget* FWL_GetCurrentThreadModalWidget(IFWL_NoteThread* pNoteThread);
353 class IFWL_NoteLoop {
354 public:
355 virtual ~IFWL_NoteLoop() {}
356 virtual FX_BOOL PreProcessMessage(CFWL_Message* pMessage) = 0;
357 virtual FWL_ERR Idle(int32_t count) = 0;
358 };
359 class IFWL_ToolTipTarget {
360 public:
361 virtual ~IFWL_ToolTipTarget() {}
362 virtual IFWL_Widget* GetWidget() = 0;
363 virtual FX_BOOL IsShowed() = 0;
364 virtual FWL_ERR DrawToolTip(CFX_Graphics* pGraphics,
365 const CFX_Matrix* pMatrix,
366 IFWL_Widget* pToolTip) = 0;
367 virtual FX_BOOL UseDefaultTheme() = 0;
368 virtual FWL_ERR GetCaption(CFX_WideString& wsCaption) = 0;
369 virtual FWL_ERR GetToolTipSize(CFX_SizeF& sz) = 0;
370 virtual FWL_ERR GetToolTipPos(CFX_PointF& pt) { return FWL_ERR_Indefinite; }
371 };
372 FWL_ERR FWL_AddToolTipTarget(IFWL_ToolTipTarget* pTarget);
373 FWL_ERR FWL_RemoveToolTipTarget(IFWL_ToolTipTarget* pTarget);
374 FWL_ERR FWL_SetToolTipInitialDelay(int32_t iDelayTime);
375 FWL_ERR FWL_SetToolTipAutoPopDelay(int32_t iDelayTime);
376 typedef FX_BOOL (*FWLMessageHookCallback)(CFWL_Message* msg, void* info);
377 FWL_ERR FWL_SetHook(IFWL_NoteDriver* driver,
378 FWLMessageHookCallback callback,
379 void* info);
380
381 #endif // XFA_INCLUDE_FWL_CORE_FWL_NOTE_H_
OLDNEW
« no previous file with comments | « xfa/include/fwl/core/fwl_grid.h ('k') | xfa/include/fwl/core/fwl_panel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698