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