9fb38f8043ea5e6caf7bc8312dfd45268637777a
[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 _FX_PALTFORM_DEVICE_H_
8 #define _FX_PALTFORM_DEVICE_H_
9 class IFPF_DeviceModule;
10 class IFPF_FontMgr;
11 class IFPF_Font;
12 class IFPF_DeviceModule
13 {
14 public:
15     virtual ~IFPF_DeviceModule() { }
16     virtual void                                Destroy() = 0;
17     virtual IFPF_FontMgr*               GetFontMgr() = 0;
18 };
19 IFPF_DeviceModule*      FPF_GetDeviceModule();
20 #define FPF_MATCHFONT_REPLACEANSI               1
21 typedef struct FPF_HFONT_ {
22     FX_LPVOID pData;
23 }* FPF_HFONT;
24 class IFPF_Font
25 {
26 public:
27     virtual void                        Release() = 0;
28     virtual IFPF_Font*          Retain() = 0;
29     virtual FPF_HFONT           GetHandle() = 0;
30     virtual CFX_ByteString      GetFamilyName() = 0;
31     virtual CFX_WideString      GetPsName() = 0;
32     virtual FX_DWORD            GetFontStyle() const = 0;
33     virtual FX_BYTE                     GetCharset() const = 0;
34
35     virtual FX_INT32            GetGlyphIndex(FX_WCHAR wUnicode) = 0;
36     virtual FX_INT32            GetGlyphWidth(FX_INT32 iGlyphIndex) = 0;
37
38     virtual FX_INT32            GetAscent() const = 0;
39     virtual FX_INT32            GetDescent() const = 0;
40
41     virtual FX_BOOL                     GetGlyphBBox(FX_INT32 iGlyphIndex, FX_RECT &rtBBox) = 0;
42     virtual FX_BOOL                     GetBBox(FX_RECT &rtBBox) = 0;
43
44     virtual FX_INT32            GetHeight() const = 0;
45     virtual FX_INT32            GetItalicAngle() const = 0;
46     virtual FX_DWORD            GetFontData(FX_DWORD dwTable, FX_LPBYTE pBuffer, FX_DWORD dwSize) = 0;
47
48 protected:
49     ~IFPF_Font() { }
50 };
51 class IFPF_FontMgr
52 {
53 public:
54     virtual ~IFPF_FontMgr() { }
55     virtual void                        LoadSystemFonts() = 0;
56     virtual void                        LoadPrivateFont(IFX_FileRead* pFontFile) = 0;
57     virtual void                        LoadPrivateFont(FX_BSTR bsFileName) = 0;
58     virtual void                        LoadPrivateFont(FX_LPVOID pBuffer, size_t szBuffer) = 0;
59
60     virtual IFPF_Font*          CreateFont(FX_BSTR bsFamilyname, FX_BYTE charset, FX_DWORD dwStyle, FX_DWORD dwMatch = 0) = 0;
61 };
62 #endif