1ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Copyright 2014 PDFium Authors. All rights reserved. 2ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Use of this source code is governed by a BSD-style license that can be 3ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// found in the LICENSE file. 4ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 5ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 7ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include <algorithm> 8ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 9ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/foxitlib.h" 10ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa/src/fxfa/src/common/xfa_common.h" 11ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffdochandler.h" 12ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_fwladapter.h" 13ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffdoc.h" 14ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffapp.h" 15ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_fwltheme.h" 16ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_fontmgr.h" 17ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#include "xfa_ffwidgethandler.h" 18ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 19ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FileRead::CXFA_FileRead(const CFX_ArrayTemplate<CPDF_Stream*>& streams) { 20ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = streams.GetSize(); 21ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iCount; i++) { 22ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_StreamAcc& acc = m_Data.Add(); 23ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann acc.LoadAllData(streams[i]); 24ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 25ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 26ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_FILESIZE CXFA_FileRead::GetSize() { 27ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwSize = 0; 28ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = m_Data.GetSize(); 29ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann for (int32_t i = 0; i < iCount; i++) { 30ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_StreamAcc& acc = m_Data[i]; 31ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann dwSize += acc.GetSize(); 32ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 33ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return dwSize; 34ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 35ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannFX_BOOL CXFA_FileRead::ReadBlock(void* buffer, 36ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FILESIZE offset, 37ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann size_t size) { 38ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t iCount = m_Data.GetSize(); 39ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann int32_t index = 0; 40ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (index < iCount) { 41ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_StreamAcc& acc = m_Data[index]; 42ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_FILESIZE dwSize = acc.GetSize(); 43ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (offset < dwSize) { 44ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann break; 45ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 46ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann offset -= dwSize; 47ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann index++; 48ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 49ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann while (index < iCount) { 50ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_StreamAcc& acc = m_Data[index]; 51ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_DWORD dwSize = acc.GetSize(); 52ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann size_t dwRead = std::min(size, static_cast<size_t>(dwSize - offset)); 53ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FXSYS_memcpy(buffer, acc.GetData() + offset, dwRead); 54ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann size -= dwRead; 55ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (size == 0) { 56ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return TRUE; 57ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 58ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann buffer = (uint8_t*)buffer + dwRead; 59ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann offset = 0; 60ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann index++; 61ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 62ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return FALSE; 63ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 64ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// static 65ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_App* IXFA_App::Create(IXFA_AppProvider* pProvider) { 66ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return new CXFA_FFApp(pProvider); 67ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 68ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann// virtual 69ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_App::~IXFA_App() {} 70ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FFApp::CXFA_FFApp(IXFA_AppProvider* pProvider) 71ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann : m_pDocHandler(nullptr), 72ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFWLTheme(nullptr), 73ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pProvider(pProvider), 74ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFontMgr(nullptr), 75ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ 76ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFontSource(nullptr), 77ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 78ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAdapterWidgetMgr(nullptr), 79ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pWidgetMgrDelegate(nullptr), 80ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFDEFontMgr(nullptr), 81ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pMenuHandler(nullptr), 82ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAdapterThreadMgr(nullptr) { 83ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFWLApp = IFWL_App::Create(this); 84ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FWL_SetApp(m_pFWLApp); 85ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFWLApp->Initialize(); 86ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_TimeZoneProvider::Create(); 87ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 88ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FFApp::~CXFA_FFApp() { 89ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pDocHandler) { 90ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_pDocHandler; 91ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 92ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFWLApp) { 93ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFWLApp->Finalize(); 94ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFWLApp->Release(); 95ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_pFWLApp; 96ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 97ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFWLTheme) { 98ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFWLTheme->Release(); 99ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 100ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pAdapterWidgetMgr) { 101ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_pAdapterWidgetMgr; 102ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 103ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pAdapterThreadMgr) { 104ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_pAdapterThreadMgr; 105ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAdapterThreadMgr = NULL; 106ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 107ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pMenuHandler) { 108ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_pMenuHandler; 109ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pMenuHandler = NULL; 110ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 111ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IXFA_TimeZoneProvider::Destroy(); 112ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFontMgr != NULL) { 113ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete m_pFontMgr; 114ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFontMgr = NULL; 115ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 116ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#if _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ 117ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFontSource != NULL) { 118ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFontSource->Release(); 119ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 120ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 121ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (m_pFDEFontMgr) { 122ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFDEFontMgr->Release(); 123ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 124ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 125ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_MenuHandler* CXFA_FFApp::GetMenuHandler() { 126ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pMenuHandler) { 127ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pMenuHandler = new CXFA_FFMenuHandler; 128ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 129ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pMenuHandler; 130ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 131ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_DocHandler* CXFA_FFApp::GetDocHandler() { 132ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pDocHandler) { 133ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pDocHandler = new CXFA_FFDocHandler; 134ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 135ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pDocHandler; 136ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 137ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_Doc* CXFA_FFApp::CreateDoc(IXFA_DocProvider* pProvider, 138ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFX_FileRead* pStream, 139ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bTakeOverFile) { 140ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_FFDoc* pDoc = new CXFA_FFDoc(this, pProvider); 141ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bSuccess = pDoc->OpenDoc(pStream, bTakeOverFile); 142ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bSuccess) { 143ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pDoc; 144ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDoc = NULL; 145ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 146ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pDoc; 147ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 148ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIXFA_Doc* CXFA_FFApp::CreateDoc(IXFA_DocProvider* pProvider, 149ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CPDF_Document* pPDFDoc) { 150ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (pPDFDoc == NULL) { 151ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 152ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 153ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann CXFA_FFDoc* pDoc = new CXFA_FFDoc(this, pProvider); 154ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FX_BOOL bSuccess = pDoc->OpenDoc(pPDFDoc); 155ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!bSuccess) { 156ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann delete pDoc; 157ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDoc = NULL; 158ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 159ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return pDoc; 160ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 161ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann 162ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmannvoid CXFA_FFApp::SetDefaultFontMgr(IXFA_FontMgr* pFontMgr) { 163ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pFontMgr) { 164ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFontMgr = new CXFA_FontMgr(); 165ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 166ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFontMgr->SetDefFontMgr(pFontMgr); 167ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 168ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FontMgr* CXFA_FFApp::GetXFAFontMgr() { 169ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pFontMgr; 170ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 171ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFX_FontMgr* CXFA_FFApp::GetFDEFontMgr() { 172ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pFDEFontMgr) { 173ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 174ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFDEFontMgr = IFX_FontMgr::Create(FX_GetDefFontEnumerator()); 175ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#else 176ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFontSource = FX_CreateDefaultFontSourceEnum(); 177ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFDEFontMgr = IFX_FontMgr::Create(m_pFontSource); 178ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann#endif 179ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 180ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pFDEFontMgr; 181ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 182ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannCXFA_FWLTheme* CXFA_FFApp::GetFWLTheme() { 183ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pFWLTheme) { 184ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pFWLTheme = new CXFA_FWLTheme(this); 185ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 186ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pFWLTheme; 187ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 188ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFWL_AdapterWidgetMgr* CXFA_FFApp::GetWidgetMgr( 189ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann IFWL_WidgetMgrDelegate* pDelegate) { 190ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pAdapterWidgetMgr) { 191ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAdapterWidgetMgr = new CXFA_FWLAdapterWidgetMgr; 192ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann pDelegate->OnSetCapability(FWL_WGTMGR_DisableThread | 193ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann FWL_WGTMGR_DisableForm); 194ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pWidgetMgrDelegate = pDelegate; 195ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 196ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAdapterWidgetMgr; 197ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 198ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFWL_AdapterThreadMgr* CXFA_FFApp::GetThreadMgr() { 199ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann if (!m_pAdapterThreadMgr) { 200ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann m_pAdapterThreadMgr = new CFWL_SDAdapterThreadMgr; 201ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann } 202ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pAdapterThreadMgr; 203ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 204ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFWL_AdapterTimerMgr* CXFA_FFApp::GetTimerMgr() { 205ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return m_pProvider->GetTimerMgr(); 206ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 207ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFWL_AdapterCursorMgr* CXFA_FFApp::GetCursorMgr() { 208ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 209ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 210ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFWL_AdapterMonitorMgr* CXFA_FFApp::GetMonitorMgr() { 211ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 212ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 213ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. MoltmannIFWL_AdapterClipboardMgr* CXFA_FFApp::GetClipboardMgr() { 214ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann return NULL; 215ac3d58cff7c80b0ef56bf55130d91da17cbaa3c4Philip P. Moltmann} 216