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 "fx_fpf.h"
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#if _FX_OS_ == _FX_ANDROID_
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCFX_AndroidFontInfo::CFX_AndroidFontInfo()
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    : m_pFontMgr(NULL)
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_AndroidFontInfo::Init(IFPF_FontMgr *pFontMgr)
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (!pFontMgr) {
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return FALSE;
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    pFontMgr->LoadSystemFonts();
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    m_pFontMgr = pFontMgr;
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return TRUE;
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_AndroidFontInfo::EnumFontList(CFX_FontMapper* pMapper)
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return FALSE;
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid* CFX_AndroidFontInfo::MapFont(int weight, FX_BOOL bItalic, int charset, int pitch_family, FX_LPCSTR face, FX_BOOL& bExact)
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (!m_pFontMgr) {
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return NULL;
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD dwStyle = 0;
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (weight >= 700) {
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        dwStyle |= FXFONT_BOLD;
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (bItalic) {
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        dwStyle |= FXFONT_ITALIC;
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (pitch_family & FXFONT_FF_FIXEDPITCH) {
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        dwStyle |= FXFONT_FIXED_PITCH;
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (pitch_family & FXFONT_FF_SCRIPT) {
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        dwStyle |= FXFONT_SCRIPT;
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (pitch_family & FXFONT_FF_ROMAN) {
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        dwStyle |= FXFONT_SERIF;
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return m_pFontMgr->CreateFont(face, charset, dwStyle, FPF_MATCHFONT_REPLACEANSI);
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid* CFX_AndroidFontInfo::GetFont(FX_LPCSTR face)
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return NULL;
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_DWORD CFX_AndroidFontInfo::GetFontData(void* hFont, FX_DWORD table, FX_LPBYTE buffer, FX_DWORD size)
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (!hFont) {
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return ((IFPF_Font*)hFont)->GetFontData(table, buffer, size);
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_AndroidFontInfo::GetFaceName(void* hFont, CFX_ByteString& name)
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (!hFont) {
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return FALSE;
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    name = ((IFPF_Font*)hFont)->GetFamilyName();
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return TRUE;
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL CFX_AndroidFontInfo::GetFontCharset(void* hFont, int& charset)
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (!hFont) {
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return FALSE;
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    charset = ((IFPF_Font*)hFont)->GetCharset();
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return FALSE;
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid CFX_AndroidFontInfo::DeleteFont(void* hFont)
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    if (!hFont) {
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return;
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ((IFPF_Font*)hFont)->Release();
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovvoid* CFX_AndroidFontInfo::RetainFont(void* hFont)
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    return NULL;
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov}
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
88