diff options
Diffstat (limited to 'xfa/fwl/core/ifwl_app.h')
-rw-r--r-- | xfa/fwl/core/ifwl_app.h | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/xfa/fwl/core/ifwl_app.h b/xfa/fwl/core/ifwl_app.h index 3fb0940ed4..53dc35d33a 100644 --- a/xfa/fwl/core/ifwl_app.h +++ b/xfa/fwl/core/ifwl_app.h @@ -7,19 +7,33 @@ #ifndef XFA_FWL_CORE_IFWL_APP_H_ #define XFA_FWL_CORE_IFWL_APP_H_ +// The FWL thread/app code contains three parallel classes, which reference each +// other via pointers as follows: +// +// m_pIface m_pImpl +// CXFA_FFApp ------------> IFWL_App -----------> CFWL_AppImp +// <----------- +// m_pIface + +#include <memory> + #include "core/fxcrt/include/fx_string.h" -#include "xfa/fwl/core/ifwl_thread.h" +#include "xfa/fwl/core/fwl_appimp.h" +#include "xfa/fwl/core/fwl_error.h" +class CFWL_NoteDriver; class IFWL_AdapterNative; +class IFWL_AdapterWidgetMgr; +class IFWL_ThemeProvider; class IFWL_Widget; class IFWL_WidgetMgr; -class IFWL_ThemeProvider; -class IFWL_AdapterWidgetMgr; -class IFWL_App : public IFWL_Thread { +class IFWL_App { public: static IFWL_App* Create(IFWL_AdapterNative* pAdapter); + virtual ~IFWL_App() {} + FWL_ERR Initialize(); FWL_ERR Finalize(); IFWL_AdapterNative* GetAdapterNative(); @@ -28,8 +42,20 @@ class IFWL_App : public IFWL_Thread { FWL_ERR SetThemeProvider(IFWL_ThemeProvider* pThemeProvider); FWL_ERR Exit(int32_t iExitCode); + // These call into polymorphic methods in the impl; no need to override. + void Release(); + + CFWL_AppImp* GetImpl() const { return m_pImpl.get(); } + + // Takes ownership of |pImpl|. + void SetImpl(CFWL_AppImp* pImpl) { m_pImpl.reset(pImpl); } + + CFWL_NoteDriver* GetNoteDriver() const; + private: IFWL_App() {} + + std::unique_ptr<CFWL_AppImp> m_pImpl; }; IFWL_App* FWL_GetApp(); |