1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved. 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file. 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../../include/fxge/fx_ge.h" 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "text_int.h" 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovstatic CFX_GEModule* g_pGEModule = NULL; 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_GEModule::CFX_GEModule() 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFontCache = NULL; 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFontMgr = NULL; 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_FTLibrary = NULL; 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pCodecModule = NULL; 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pPlatformData = NULL; 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_GEModule::~CFX_GEModule() 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFontCache) { 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_pFontCache; 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFontCache = NULL; 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFontMgr) { 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete m_pFontMgr; 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFontMgr = NULL; 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov DestroyPlatform(); 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_GEModule* CFX_GEModule::Get() 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return g_pGEModule; 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_GEModule::Create() 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov g_pGEModule = FX_NEW CFX_GEModule; 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (!g_pGEModule) { 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return; 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov g_pGEModule->m_pFontMgr = FX_NEW CFX_FontMgr; 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov g_pGEModule->InitPlatform(); 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov g_pGEModule->SetTextGamma(2.2f); 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_GEModule::Use(CFX_GEModule* pModule) 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov g_pGEModule = pModule; 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_GEModule::Destroy() 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (g_pGEModule) { 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov delete g_pGEModule; 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov g_pGEModule = NULL; 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_FontCache* CFX_GEModule::GetFontCache() 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if (m_pFontCache == NULL) { 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_pFontCache = FX_NEW CFX_FontCache(); 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_pFontCache; 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_GEModule::SetTextGamma(FX_FLOAT gammaValue) 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov gammaValue /= 2.2f; 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov int i = 0; 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov while (i < 256) { 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov m_GammaValue[i] = (FX_BYTE)(FXSYS_pow((FX_FLOAT)i / 255, gammaValue) * 255.0f + 0.5f); 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov i++; 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_LPCBYTE CFX_GEModule::GetTextGammaTable() 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov return m_GammaValue; 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_GEModule::SetExtFontMapper(IFX_FontMapper* pFontMapper) 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{ 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov GetFontMgr()->m_pExtMapper = pFontMapper; 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov pFontMapper->m_pFontMgr = m_pFontMgr; 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov} 80