diff options
Diffstat (limited to 'core/fxge/android/cfx_androidfontinfo.cpp')
-rw-r--r-- | core/fxge/android/cfx_androidfontinfo.cpp | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/core/fxge/android/cfx_androidfontinfo.cpp b/core/fxge/android/cfx_androidfontinfo.cpp new file mode 100644 index 0000000000..6db46e2775 --- /dev/null +++ b/core/fxge/android/cfx_androidfontinfo.cpp @@ -0,0 +1,87 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "core/fxge/android/cfx_androidfontinfo.h" + +#include "core/fxcrt/fx_system.h" +#include "core/fxge/android/cfpf_skiafont.h" +#include "core/fxge/android/cfpf_skiafontmgr.h" +#include "core/fxge/cfx_fontmapper.h" + +CFX_AndroidFontInfo::CFX_AndroidFontInfo() : m_pFontMgr(nullptr) {} +CFX_AndroidFontInfo::~CFX_AndroidFontInfo() {} +FX_BOOL CFX_AndroidFontInfo::Init(CFPF_SkiaFontMgr* pFontMgr) { + if (!pFontMgr) + return FALSE; + + pFontMgr->LoadSystemFonts(); + m_pFontMgr = pFontMgr; + return TRUE; +} + +FX_BOOL CFX_AndroidFontInfo::EnumFontList(CFX_FontMapper* pMapper) { + return FALSE; +} + +void* CFX_AndroidFontInfo::MapFont(int weight, + FX_BOOL bItalic, + int charset, + int pitch_family, + const FX_CHAR* face, + int& iExact) { + if (!m_pFontMgr) + return nullptr; + + uint32_t dwStyle = 0; + if (weight >= 700) + dwStyle |= FXFONT_BOLD; + if (bItalic) + dwStyle |= FXFONT_ITALIC; + if (pitch_family & FXFONT_FF_FIXEDPITCH) + dwStyle |= FXFONT_FIXED_PITCH; + if (pitch_family & FXFONT_FF_SCRIPT) + dwStyle |= FXFONT_SCRIPT; + if (pitch_family & FXFONT_FF_ROMAN) + dwStyle |= FXFONT_SERIF; + return m_pFontMgr->CreateFont(face, charset, dwStyle, + FPF_MATCHFONT_REPLACEANSI); +} + +void* CFX_AndroidFontInfo::GetFont(const FX_CHAR* face) { + return nullptr; +} + +uint32_t CFX_AndroidFontInfo::GetFontData(void* hFont, + uint32_t table, + uint8_t* buffer, + uint32_t size) { + if (!hFont) + return 0; + return static_cast<CFPF_SkiaFont*>(hFont)->GetFontData(table, buffer, size); +} + +FX_BOOL CFX_AndroidFontInfo::GetFaceName(void* hFont, CFX_ByteString& name) { + if (!hFont) + return FALSE; + + name = static_cast<CFPF_SkiaFont*>(hFont)->GetFamilyName(); + return TRUE; +} + +FX_BOOL CFX_AndroidFontInfo::GetFontCharset(void* hFont, int& charset) { + if (!hFont) + return FALSE; + + charset = static_cast<CFPF_SkiaFont*>(hFont)->GetCharset(); + return FALSE; +} + +void CFX_AndroidFontInfo::DeleteFont(void* hFont) { + if (!hFont) + return; + + static_cast<CFPF_SkiaFont*>(hFont)->Release(); +} |