1 // Copyright 2014 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/include/fxge/fx_ge.h"
8 
9 #include "text_int.h"
10 
11 static CFX_GEModule* g_pGEModule = NULL;
CFX_GEModule(const char ** pUserFontPaths)12 CFX_GEModule::CFX_GEModule(const char** pUserFontPaths) {
13   m_pFontCache = NULL;
14   m_pFontMgr = NULL;
15   m_FTLibrary = NULL;
16   m_pCodecModule = NULL;
17   m_pPlatformData = NULL;
18   m_pUserFontPaths = pUserFontPaths;
19 }
~CFX_GEModule()20 CFX_GEModule::~CFX_GEModule() {
21   delete m_pFontCache;
22   m_pFontCache = NULL;
23   delete m_pFontMgr;
24   m_pFontMgr = NULL;
25   DestroyPlatform();
26 }
Get()27 CFX_GEModule* CFX_GEModule::Get() {
28   return g_pGEModule;
29 }
Create(const char ** userFontPaths)30 void CFX_GEModule::Create(const char** userFontPaths) {
31   g_pGEModule = new CFX_GEModule(userFontPaths);
32   g_pGEModule->m_pFontMgr = new CFX_FontMgr;
33   g_pGEModule->InitPlatform();
34   g_pGEModule->SetTextGamma(2.2f);
35 }
Use(CFX_GEModule * pModule)36 void CFX_GEModule::Use(CFX_GEModule* pModule) {
37   g_pGEModule = pModule;
38 }
Destroy()39 void CFX_GEModule::Destroy() {
40   delete g_pGEModule;
41   g_pGEModule = NULL;
42 }
GetFontCache()43 CFX_FontCache* CFX_GEModule::GetFontCache() {
44   if (!m_pFontCache) {
45     m_pFontCache = new CFX_FontCache();
46   }
47   return m_pFontCache;
48 }
SetTextGamma(FX_FLOAT gammaValue)49 void CFX_GEModule::SetTextGamma(FX_FLOAT gammaValue) {
50   gammaValue /= 2.2f;
51   int i = 0;
52   while (i < 256) {
53     m_GammaValue[i] =
54         (uint8_t)(FXSYS_pow((FX_FLOAT)i / 255, gammaValue) * 255.0f + 0.5f);
55     i++;
56   }
57 }
GetTextGammaTable()58 const uint8_t* CFX_GEModule::GetTextGammaTable() {
59   return m_GammaValue;
60 }
61