// Copyright 2014 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

#ifndef CORE_INCLUDE_FXGE_FPF_H_
#define CORE_INCLUDE_FXGE_FPF_H_

#include "../fxcrt/fx_coordinates.h"

class IFPF_DeviceModule;
class IFPF_FontMgr;
class IFPF_Font;
class IFPF_DeviceModule
{
public:
    virtual ~IFPF_DeviceModule() { }
    virtual void				Destroy() = 0;
    virtual IFPF_FontMgr*		GetFontMgr() = 0;
};
IFPF_DeviceModule*	FPF_GetDeviceModule();
#define FPF_MATCHFONT_REPLACEANSI		1
typedef struct FPF_HFONT_ {
    void* pData;
}* FPF_HFONT;
class IFPF_Font
{
public:
    virtual void			Release() = 0;
    virtual IFPF_Font*		Retain() = 0;
    virtual FPF_HFONT		GetHandle() = 0;
    virtual CFX_ByteString	GetFamilyName() = 0;
    virtual CFX_WideString	GetPsName() = 0;
    virtual FX_DWORD		GetFontStyle() const = 0;
    virtual uint8_t			GetCharset() const = 0;

    virtual int32_t		GetGlyphIndex(FX_WCHAR wUnicode) = 0;
    virtual int32_t		GetGlyphWidth(int32_t iGlyphIndex) = 0;

    virtual int32_t		GetAscent() const = 0;
    virtual int32_t		GetDescent() const = 0;

    virtual bool			GetGlyphBBox(int32_t iGlyphIndex, FX_RECT &rtBBox) = 0;
    virtual bool			GetBBox(FX_RECT &rtBBox) = 0;

    virtual int32_t		GetHeight() const = 0;
    virtual int32_t		GetItalicAngle() const = 0;
    virtual FX_DWORD		GetFontData(FX_DWORD dwTable, uint8_t* pBuffer, FX_DWORD dwSize) = 0;

protected:
    ~IFPF_Font() { }
};
class IFPF_FontMgr
{
public:
    virtual ~IFPF_FontMgr() { }
    virtual void			LoadSystemFonts() = 0;
    virtual void			LoadPrivateFont(IFX_FileRead* pFontFile) = 0;
    virtual void			LoadPrivateFont(const CFX_ByteStringC& bsFileName) = 0;
    virtual void			LoadPrivateFont(void* pBuffer, size_t szBuffer) = 0;

    virtual IFPF_Font*		CreateFont(const CFX_ByteStringC& bsFamilyname, uint8_t charset, FX_DWORD dwStyle, FX_DWORD dwMatch = 0) = 0;
};

#endif  // CORE_INCLUDE_FXGE_FPF_H_
