Do some IWYU cleanups.
[pdfium.git] / core / include / fxge / fpf.h
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef CORE_INCLUDE_FXGE_FPF_H_
8 #define CORE_INCLUDE_FXGE_FPF_H_
9
10 #include "../fxcrt/fx_coordinates.h"
11
12 class IFPF_DeviceModule;
13 class IFPF_FontMgr;
14 class IFPF_Font;
15 class IFPF_DeviceModule
16 {
17 public:
18     virtual ~IFPF_DeviceModule() { }
19     virtual void                                Destroy() = 0;
20     virtual IFPF_FontMgr*               GetFontMgr() = 0;
21 };
22 IFPF_DeviceModule*      FPF_GetDeviceModule();
23 #define FPF_MATCHFONT_REPLACEANSI               1
24 typedef struct FPF_HFONT_ {
25     void* pData;
26 }* FPF_HFONT;
27 class IFPF_Font
28 {
29 public:
30     virtual void                        Release() = 0;
31     virtual IFPF_Font*          Retain() = 0;
32     virtual FPF_HFONT           GetHandle() = 0;
33     virtual CFX_ByteString      GetFamilyName() = 0;
34     virtual CFX_WideString      GetPsName() = 0;
35     virtual FX_DWORD            GetFontStyle() const = 0;
36     virtual uint8_t                     GetCharset() const = 0;
37
38     virtual int32_t             GetGlyphIndex(FX_WCHAR wUnicode) = 0;
39     virtual int32_t             GetGlyphWidth(int32_t iGlyphIndex) = 0;
40
41     virtual int32_t             GetAscent() const = 0;
42     virtual int32_t             GetDescent() const = 0;
43
44     virtual FX_BOOL                     GetGlyphBBox(int32_t iGlyphIndex, FX_RECT &rtBBox) = 0;
45     virtual FX_BOOL                     GetBBox(FX_RECT &rtBBox) = 0;
46
47     virtual int32_t             GetHeight() const = 0;
48     virtual int32_t             GetItalicAngle() const = 0;
49     virtual FX_DWORD            GetFontData(FX_DWORD dwTable, uint8_t* pBuffer, FX_DWORD dwSize) = 0;
50
51 protected:
52     ~IFPF_Font() { }
53 };
54 class IFPF_FontMgr
55 {
56 public:
57     virtual ~IFPF_FontMgr() { }
58     virtual void                        LoadSystemFonts() = 0;
59     virtual void                        LoadPrivateFont(IFX_FileRead* pFontFile) = 0;
60     virtual void                        LoadPrivateFont(const CFX_ByteStringC& bsFileName) = 0;
61     virtual void                        LoadPrivateFont(void* pBuffer, size_t szBuffer) = 0;
62
63     virtual IFPF_Font*          CreateFont(const CFX_ByteStringC& bsFamilyname, uint8_t charset, FX_DWORD dwStyle, FX_DWORD dwMatch = 0) = 0;
64 };
65
66 #endif  // CORE_INCLUDE_FXGE_FPF_H_