1 // Copyright 2016 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 #include "core/fxge/cfx_gemodule.h" 8 9 #include "core/fxge/cfx_fontcache.h" 10 #include "core/fxge/cfx_fontmgr.h" 11 #include "core/fxge/ge/cfx_folderfontinfo.h" 12 #include "core/fxge/ge/fx_text_int.h" 13 14 namespace { 15 16 CFX_GEModule* g_pGEModule = nullptr; 17 18 } // namespace 19 CFX_GEModule()20CFX_GEModule::CFX_GEModule() 21 : m_FTLibrary(nullptr), 22 m_pFontCache(nullptr), 23 m_pFontMgr(new CFX_FontMgr), 24 m_pCodecModule(nullptr), 25 m_pPlatformData(nullptr), 26 m_pUserFontPaths(nullptr) {} 27 ~CFX_GEModule()28CFX_GEModule::~CFX_GEModule() { 29 delete m_pFontCache; 30 DestroyPlatform(); 31 } 32 33 // static Get()34CFX_GEModule* CFX_GEModule::Get() { 35 if (!g_pGEModule) 36 g_pGEModule = new CFX_GEModule(); 37 return g_pGEModule; 38 } 39 40 // static Destroy()41void CFX_GEModule::Destroy() { 42 ASSERT(g_pGEModule); 43 delete g_pGEModule; 44 g_pGEModule = nullptr; 45 } 46 Init(const char ** userFontPaths,CCodec_ModuleMgr * pCodecModule)47void CFX_GEModule::Init(const char** userFontPaths, 48 CCodec_ModuleMgr* pCodecModule) { 49 ASSERT(g_pGEModule); 50 m_pCodecModule = pCodecModule; 51 m_pUserFontPaths = userFontPaths; 52 InitPlatform(); 53 SetTextGamma(2.2f); 54 } 55 GetFontCache()56CFX_FontCache* CFX_GEModule::GetFontCache() { 57 if (!m_pFontCache) 58 m_pFontCache = new CFX_FontCache(); 59 return m_pFontCache; 60 } 61 SetTextGamma(FX_FLOAT gammaValue)62void CFX_GEModule::SetTextGamma(FX_FLOAT gammaValue) { 63 gammaValue /= 2.2f; 64 for (int i = 0; i < 256; ++i) { 65 m_GammaValue[i] = static_cast<uint8_t>( 66 FXSYS_pow(static_cast<FX_FLOAT>(i) / 255, gammaValue) * 255.0f + 0.5f); 67 } 68 } 69 GetTextGammaTable() const70const uint8_t* CFX_GEModule::GetTextGammaTable() const { 71 return m_GammaValue; 72 } 73