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

Side by Side Diff: xfa/fwl/core/cfwl_message.h

Issue 2510823003: Move the message definitions to their own files. (Closed)
Patch Set: Review feedback Created 4 years, 1 month 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/fwl/core/cfwl_event.h ('k') | xfa/fwl/core/cfwl_message.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #ifndef XFA_FWL_CORE_CFWL_MESSAGE_H_ 7 #ifndef XFA_FWL_CORE_CFWL_MESSAGE_H_
8 #define XFA_FWL_CORE_CFWL_MESSAGE_H_ 8 #define XFA_FWL_CORE_CFWL_MESSAGE_H_
9 9
10 #include <memory>
11
10 #include "core/fxcrt/fx_basic.h" 12 #include "core/fxcrt/fx_basic.h"
11 #include "core/fxcrt/fx_string.h" 13 #include "core/fxcrt/fx_string.h"
12 #include "core/fxcrt/fx_system.h" 14 #include "core/fxcrt/fx_system.h"
13 #include "xfa/fwl/core/fwl_error.h" 15 #include "xfa/fwl/core/fwl_error.h"
14 16
15 enum class CFWL_MessageType { 17 enum class CFWL_MessageType {
16 None = 0, 18 None = 0,
17 Key, 19 Key,
18 KillFocus, 20 KillFocus,
19 Mouse, 21 Mouse,
20 MouseWheel, 22 MouseWheel,
21 SetFocus 23 SetFocus
22 }; 24 };
23 25
24 enum class FWL_MouseCommand {
25 LeftButtonDown,
26 LeftButtonUp,
27 LeftButtonDblClk,
28 RightButtonDown,
29 RightButtonUp,
30 RightButtonDblClk,
31 Move,
32 Enter,
33 Leave,
34 Hover
35 };
36
37 enum class FWL_KeyCommand { KeyDown, KeyUp, Char };
38
39 class IFWL_Widget; 26 class IFWL_Widget;
40 27
41 class CFWL_Message { 28 class CFWL_Message {
42 public: 29 public:
43 CFWL_Message(); 30 CFWL_Message();
44 virtual ~CFWL_Message(); 31 virtual ~CFWL_Message();
45 32
46 virtual CFWL_Message* Clone(); 33 virtual std::unique_ptr<CFWL_Message> Clone();
47 virtual CFWL_MessageType GetClassID() const; 34 virtual CFWL_MessageType GetClassID() const;
48 35
49 uint32_t Release();
50 CFWL_Message* Retain();
51
52 IFWL_Widget* m_pSrcTarget; 36 IFWL_Widget* m_pSrcTarget;
53 IFWL_Widget* m_pDstTarget; 37 IFWL_Widget* m_pDstTarget;
54 uint32_t m_dwExtend; 38 uint32_t m_dwExtend;
55
56 private:
57 uint32_t m_dwRefCount;
58 }; 39 };
59 40
60 inline CFWL_Message::CFWL_Message()
61 : m_pSrcTarget(nullptr),
62 m_pDstTarget(nullptr),
63 m_dwExtend(0),
64 m_dwRefCount(1) {}
65
66 inline CFWL_Message::~CFWL_Message() {}
67
68 inline CFWL_Message* CFWL_Message::Clone() {
69 return nullptr;
70 }
71
72 inline CFWL_MessageType CFWL_Message::GetClassID() const {
73 return CFWL_MessageType::None;
74 }
75
76 inline uint32_t CFWL_Message::Release() {
77 m_dwRefCount--;
78 uint32_t dwRefCount = m_dwRefCount;
79 if (!m_dwRefCount)
80 delete this;
81 return dwRefCount;
82 }
83
84 inline CFWL_Message* CFWL_Message::Retain() {
85 m_dwRefCount++;
86 return this;
87 }
88
89 #define FWL_MESSAGE_DEF(classname, msgType, ...) \
90 class classname : public CFWL_Message { \
91 public: \
92 classname(); \
93 ~classname() override; \
94 CFWL_Message* Clone() override; \
95 CFWL_MessageType GetClassID() const override; \
96 __VA_ARGS__ \
97 }; \
98 inline classname::classname() {} \
99 inline classname::~classname() {} \
100 inline CFWL_Message* classname::Clone() { return new classname(*this); } \
101 inline CFWL_MessageType classname::GetClassID() const { return msgType; }
102
103 FWL_MESSAGE_DEF(CFWL_MsgMouse, CFWL_MessageType::Mouse, FX_FLOAT m_fx;
104 FX_FLOAT m_fy;
105 uint32_t m_dwFlags;
106 FWL_MouseCommand m_dwCmd;)
107
108 FWL_MESSAGE_DEF(CFWL_MsgMouseWheel, CFWL_MessageType::MouseWheel, FX_FLOAT m_fx;
109 FX_FLOAT m_fy;
110 FX_FLOAT m_fDeltaX;
111 FX_FLOAT m_fDeltaY;
112 uint32_t m_dwFlags;)
113
114 FWL_MESSAGE_DEF(CFWL_MsgSetFocus,
115 CFWL_MessageType::SetFocus,
116 IFWL_Widget* m_pKillFocus;)
117
118 FWL_MESSAGE_DEF(CFWL_MsgKillFocus,
119 CFWL_MessageType::KillFocus,
120 IFWL_Widget* m_pSetFocus;)
121
122 FWL_MESSAGE_DEF(CFWL_MsgKey, CFWL_MessageType::Key, uint32_t m_dwKeyCode;
123 uint32_t m_dwFlags;
124 FWL_KeyCommand m_dwCmd;)
125 41
126 #endif // XFA_FWL_CORE_CFWL_MESSAGE_H_ 42 #endif // XFA_FWL_CORE_CFWL_MESSAGE_H_
OLDNEW
« no previous file with comments | « xfa/fwl/core/cfwl_event.h ('k') | xfa/fwl/core/cfwl_message.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698