- Make most of the the video stack compile with msvc
[reactos.git] / reactos / drivers / video / font / ftfd / ftfd.h
1 /*
2 * PROJECT: ReactOS win32 subsystem
3 * LICENSE: GPL - See COPYING in the top level directory
4 * PURPOSE: GDI font driver for bitmap fonts
5 * PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org)
6 */
7
8 #include <stdarg.h>
9 #include <windef.h>
10 #include <wingdi.h>
11 #include <winddi.h>
12
13 #include <ft2build.h>
14 #include FT_FREETYPE_H
15
16 extern FT_Library gftlibrary;
17
18 #define TAG_GLYPHSET 'GlSt'
19 #define TAG_IFIMETRICS 'Ifim'
20
21 /** Driver specific types *****************************************************/
22
23 typedef struct
24 {
25 FT_UInt index;
26 FT_ULong code;
27 } FTFD_CHARPAIR;
28
29 typedef struct
30 {
31 PVOID pvView;
32 ULONG cjView;
33 ULONG_PTR iFile;
34 ULONG cNumFaces;
35 FT_Face aftface[1];
36 } FTFD_FILE, *PFTFD_FILE;
37
38 //"Bold Italic Underline Strikeout"
39 #define MAX_STYLESIZE 35
40 typedef struct
41 {
42 IFIMETRICS ifim;
43 BYTE ajCharSet[16];
44 FONTSIM fontsim;
45 WCHAR wszFamilyName[LF_FACESIZE];
46 WCHAR wszFaceName[LF_FACESIZE];
47 WCHAR wszStyleName[MAX_STYLESIZE];
48 } FTFD_IFIMETRICS, *PFTFD_IFIMETRICS;
49
50 /** Function prototypes *******************************************************/
51
52 ULONG
53 DbgPrint(IN PCHAR Format, IN ...);
54
55 FORCEINLINE
56 VOID
57 DbgBreakPoint(VOID)
58 {
59 #ifdef __GNUC__
60 asm volatile ("int $3");
61 #else
62 __asm int 3;
63 #endif
64 }
65
66 DHPDEV
67 APIENTRY
68 FtfdEnablePDEV(
69 IN DEVMODEW *pdm,
70 IN LPWSTR pwszLogAddress,
71 IN ULONG cPat,
72 OUT HSURF *phsurfPatterns,
73 IN ULONG cjCaps,
74 OUT ULONG *pdevcaps,
75 IN ULONG cjDevInfo,
76 OUT DEVINFO *pdi,
77 IN HDEV hdev,
78 IN LPWSTR pwszDeviceName,
79 IN HANDLE hDriver);
80
81 VOID
82 APIENTRY
83 FtfdCompletePDEV(
84 IN DHPDEV dhpdev,
85 IN HDEV hdev);
86
87 VOID
88 APIENTRY
89 FtfdDisablePDEV(
90 IN DHPDEV dhpdev);
91
92 ULONG_PTR
93 APIENTRY
94 FtfdLoadFontFile(
95 ULONG cFiles,
96 ULONG_PTR *piFile,
97 PVOID *ppvView,
98 ULONG *pcjView,
99 DESIGNVECTOR *pdv,
100 ULONG ulLangID,
101 ULONG ulFastCheckSum);
102
103 BOOL
104 APIENTRY
105 FtfdUnloadFontFile(
106 IN ULONG_PTR iFile);
107
108 LONG
109 APIENTRY
110 FtfdQueryFontFile(
111 ULONG_PTR iFile,
112 ULONG ulMode,
113 ULONG cjBuf,
114 ULONG *pulBuf);
115
116 LONG
117 APIENTRY
118 FtfdQueryFontCaps(
119 ULONG culCaps,
120 ULONG *pulCaps);
121
122 PVOID
123 APIENTRY
124 FtfdQueryFontTree(
125 DHPDEV dhpdev,
126 ULONG_PTR iFile,
127 ULONG iFace,
128 ULONG iMode,
129 ULONG_PTR *pid);
130
131 PIFIMETRICS
132 APIENTRY
133 FtfdQueryFont(
134 IN DHPDEV dhpdev,
135 IN ULONG_PTR iFile,
136 IN ULONG iFace,
137 IN ULONG_PTR *pid);
138
139 VOID
140 APIENTRY
141 FtfdFree(
142 PVOID pv,
143 ULONG_PTR id);
144
145 PFD_GLYPHATTR
146 APIENTRY
147 FtfdQueryGlyphAttrs(
148 FONTOBJ *pfo,
149 ULONG iMode);
150
151 LONG
152 APIENTRY
153 FtfdQueryFontData(
154 DHPDEV dhpdev,
155 FONTOBJ *pfo,
156 ULONG iMode,
157 HGLYPH hg,
158 OUT GLYPHDATA *pgd,
159 PVOID pv,
160 ULONG cjSize);
161