Home | History | Annotate | Download | only in ge
      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 
     20 CFX_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 
     28 CFX_GEModule::~CFX_GEModule() {
     29   delete m_pFontCache;
     30   DestroyPlatform();
     31 }
     32 
     33 // static
     34 CFX_GEModule* CFX_GEModule::Get() {
     35   if (!g_pGEModule)
     36     g_pGEModule = new CFX_GEModule();
     37   return g_pGEModule;
     38 }
     39 
     40 // static
     41 void CFX_GEModule::Destroy() {
     42   ASSERT(g_pGEModule);
     43   delete g_pGEModule;
     44   g_pGEModule = nullptr;
     45 }
     46 
     47 void 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 
     56 CFX_FontCache* CFX_GEModule::GetFontCache() {
     57   if (!m_pFontCache)
     58     m_pFontCache = new CFX_FontCache();
     59   return m_pFontCache;
     60 }
     61 
     62 void 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 
     70 const uint8_t* CFX_GEModule::GetTextGammaTable() const {
     71   return m_GammaValue;
     72 }
     73