OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 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_IFWL_WIDGET_H_ | 7 #ifndef XFA_FWL_CORE_IFWL_WIDGET_H_ |
8 #define XFA_FWL_CORE_IFWL_WIDGET_H_ | 8 #define XFA_FWL_CORE_IFWL_WIDGET_H_ |
9 | 9 |
10 #include <memory> | 10 #include <memory> |
11 | 11 |
12 #include "core/fxcrt/fx_coordinates.h" | 12 #include "core/fxcrt/fx_coordinates.h" |
13 #include "core/fxcrt/fx_system.h" | 13 #include "core/fxcrt/fx_system.h" |
| 14 #include "third_party/base/ptr_util.h" |
14 #include "xfa/fwl/core/cfwl_event.h" | 15 #include "xfa/fwl/core/cfwl_event.h" |
15 #include "xfa/fwl/core/cfwl_themepart.h" | 16 #include "xfa/fwl/core/cfwl_themepart.h" |
16 #include "xfa/fwl/core/fwl_widgethit.h" | 17 #include "xfa/fwl/core/fwl_widgethit.h" |
17 #include "xfa/fwl/core/ifwl_widgetdelegate.h" | 18 #include "xfa/fwl/core/ifwl_widgetdelegate.h" |
18 #include "xfa/fwl/theme/cfwl_widgettp.h" | 19 #include "xfa/fwl/theme/cfwl_widgettp.h" |
19 | 20 |
20 // FWL contains two parallel inheritance hierarchies, which reference each | 21 // FWL contains two parallel inheritance hierarchies, which reference each |
21 // other via pointers as follows: | 22 // other via pointers as follows: |
22 // | 23 // |
23 // m_pAssociate | 24 // m_pAssociate |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 | 106 |
106 virtual FWL_Error GetMatrix(CFX_Matrix& matrix, FX_BOOL bGlobal = FALSE); | 107 virtual FWL_Error GetMatrix(CFX_Matrix& matrix, FX_BOOL bGlobal = FALSE); |
107 virtual FWL_Error SetMatrix(const CFX_Matrix& matrix); | 108 virtual FWL_Error SetMatrix(const CFX_Matrix& matrix); |
108 | 109 |
109 virtual FWL_Error DrawWidget(CFX_Graphics* pGraphics, | 110 virtual FWL_Error DrawWidget(CFX_Graphics* pGraphics, |
110 const CFX_Matrix* pMatrix = nullptr); | 111 const CFX_Matrix* pMatrix = nullptr); |
111 | 112 |
112 virtual IFWL_ThemeProvider* GetThemeProvider(); | 113 virtual IFWL_ThemeProvider* GetThemeProvider(); |
113 virtual FWL_Error SetThemeProvider(IFWL_ThemeProvider* pThemeProvider); | 114 virtual FWL_Error SetThemeProvider(IFWL_ThemeProvider* pThemeProvider); |
114 | 115 |
115 IFWL_WidgetDelegate* GetCurrentDelegate(); | 116 IFWL_WidgetDelegate* GetDelegate() const { return m_pDelegate.get(); } |
116 void SetCurrentDelegate(IFWL_WidgetDelegate* pDelegate); | 117 void SetDelegate(std::unique_ptr<IFWL_WidgetDelegate> delegate) { |
| 118 m_pDelegate = std::move(delegate); |
| 119 } |
| 120 std::unique_ptr<IFWL_WidgetDelegate> ReleaseDelegate() { |
| 121 return pdfium::WrapUnique<IFWL_WidgetDelegate>(m_pDelegate.release()); |
| 122 } |
117 | 123 |
118 const IFWL_App* GetOwnerApp() const; | 124 const IFWL_App* GetOwnerApp() const; |
119 | 125 |
120 CFX_SizeF GetOffsetFromParent(IFWL_Widget* pParent); | 126 CFX_SizeF GetOffsetFromParent(IFWL_Widget* pParent); |
121 | 127 |
122 uint32_t GetEventKey() const; | 128 uint32_t GetEventKey() const; |
123 void SetEventKey(uint32_t key); | 129 void SetEventKey(uint32_t key); |
124 | 130 |
125 void* GetLayoutItem() const; | 131 void* GetLayoutItem() const; |
126 void SetLayoutItem(void* pItem); | 132 void SetLayoutItem(void* pItem); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 IFWL_ThemeProvider* pTheme, | 200 IFWL_ThemeProvider* pTheme, |
195 const CFX_Matrix* pMatrix = nullptr); | 201 const CFX_Matrix* pMatrix = nullptr); |
196 void DrawEdge(CFX_Graphics* pGraphics, | 202 void DrawEdge(CFX_Graphics* pGraphics, |
197 CFWL_Part iPartEdge, | 203 CFWL_Part iPartEdge, |
198 IFWL_ThemeProvider* pTheme, | 204 IFWL_ThemeProvider* pTheme, |
199 const CFX_Matrix* pMatrix = nullptr); | 205 const CFX_Matrix* pMatrix = nullptr); |
200 void NotifyDriver(); | 206 void NotifyDriver(); |
201 | 207 |
202 FX_BOOL IsParent(IFWL_Widget* pParent); | 208 FX_BOOL IsParent(IFWL_Widget* pParent); |
203 | 209 |
204 void SetDelegate(std::unique_ptr<IFWL_WidgetDelegate> delegate) { | |
205 m_pDelegate = std::move(delegate); | |
206 } | |
207 IFWL_WidgetDelegate* GetDelegate() const { return m_pDelegate.get(); } | |
208 | |
209 const IFWL_App* const m_pOwnerApp; | 210 const IFWL_App* const m_pOwnerApp; |
210 CFWL_WidgetMgr* const m_pWidgetMgr; | 211 CFWL_WidgetMgr* const m_pWidgetMgr; |
211 std::unique_ptr<CFWL_WidgetImpProperties> m_pProperties; | 212 std::unique_ptr<CFWL_WidgetImpProperties> m_pProperties; |
212 IFWL_WidgetDelegate* m_pCurDelegate; // Not owned. | |
213 IFWL_Widget* m_pOuter; | 213 IFWL_Widget* m_pOuter; |
214 void* m_pLayoutItem; | 214 void* m_pLayoutItem; |
215 CFWL_Widget* m_pAssociate; | 215 CFWL_Widget* m_pAssociate; |
216 int32_t m_iLock; | 216 int32_t m_iLock; |
217 uint32_t m_nEventKey; | 217 uint32_t m_nEventKey; |
218 | 218 |
219 private: | 219 private: |
220 std::unique_ptr<IFWL_WidgetDelegate> m_pDelegate; | 220 std::unique_ptr<IFWL_WidgetDelegate> m_pDelegate; |
221 }; | 221 }; |
222 | 222 |
223 class CFWL_WidgetImpDelegate : public IFWL_WidgetDelegate { | 223 class CFWL_WidgetImpDelegate : public IFWL_WidgetDelegate { |
224 public: | 224 public: |
225 CFWL_WidgetImpDelegate(); | 225 CFWL_WidgetImpDelegate(); |
226 ~CFWL_WidgetImpDelegate() override {} | 226 ~CFWL_WidgetImpDelegate() override {} |
227 void OnProcessMessage(CFWL_Message* pMessage) override; | 227 void OnProcessMessage(CFWL_Message* pMessage) override; |
228 void OnProcessEvent(CFWL_Event* pEvent) override; | 228 void OnProcessEvent(CFWL_Event* pEvent) override; |
229 void OnDrawWidget(CFX_Graphics* pGraphics, | 229 void OnDrawWidget(CFX_Graphics* pGraphics, |
230 const CFX_Matrix* pMatrix = nullptr) override; | 230 const CFX_Matrix* pMatrix = nullptr) override; |
231 }; | 231 }; |
232 | 232 |
233 #endif // XFA_FWL_CORE_IFWL_WIDGET_H_ | 233 #endif // XFA_FWL_CORE_IFWL_WIDGET_H_ |
OLD | NEW |