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)
13 #if defined(_M_IX86) || defined(_M_AMD64)
14 /* on x86 and x64, unaligned access is allowed, byteorder is LE */
19 sizeof(x) == 1 ? (x) : \
20 sizeof(x) == 2 ? (((PCHAR)&(x))[0] + (((PCHAR)&(x))[1] << 8)) : \
21 (((PCHAR)&(x))[0] + (((PCHAR)&(x))[1] << 8) + (((PCHAR)&(x))[2] << 16) + \
22 (((PCHAR)&(x))[3] << 24))
27 FDM_TYPE_CONST_BEARINGS | FDM_TYPE_ZERO_BEARINGS | \
28 FDM_TYPE_CHAR_INC_EQUAL_BM_BASE | FDM_TYPE_MAXEXT_EQUAL_BM_SIDE | \
29 FDM_TYPE_BM_SIDE_CONST
31 #define FM_INFO_MASK \
32 FM_INFO_TECH_BITMAP | FM_INFO_1BPP | FM_INFO_INTEGER_WIDTH | \
33 FM_INFO_RETURNS_BITMAPS | FM_INFO_RIGHT_HANDED | FM_INFO_INTEGRAL_SCALING |\
34 FM_INFO_90DEGREE_ROTATIONS | FM_INFO_OPTICALLY_FIXED_PITCH | FM_INFO_NONNEGATIVE_AC
36 #define FLOATL_1 0x3f800000
38 #define TAG_PDEV 'veDP'
39 #define TAG_GLYPHSET 'GlSt'
40 #define TAG_IFIMETRICS 'Ifim'
41 #define TAG_FONTINFO 'Font'
44 /** FON / FNT specific types **************************************************/
46 #define IMAGE_DOS_MAGIC 0x594D // FIXME: hack hack hack
57 } NE_NAMEINFO
, *PNE_NAMEINFO
;
59 #define NE_RSCTYPE_FONT 0x8008
60 #define NE_RSCTYPE_FONTDIR 0x8007
66 NE_NAMEINFO nameinfo
[1];
67 } NE_TYPEINFO
, *PNE_TYPEINFO
;
72 NE_TYPEINFO typeinfo
[1];
73 } NE_RESTABLE
, *PNE_RESTABLE
;
76 #define DFF_FIXED 0x0001
77 #define DFF_PROPORTIONAL 0x0002
78 #define DFF_ABCFIXED 0x0004
79 #define DFF_ABCPROPORTIONAL 0x0008
80 #define DFF_1COLOR 0x0010
81 #define DFF_16COLOR 0x0020
82 #define DFF_256COLOR 0x0040
83 #define DFF_RGBCOLOR 0x0080
85 // see http://msdn.microsoft.com/en-us/library/ms648014(VS.85).aspx
86 typedef struct _FONTDIRENTRY
96 WORD dfInternalLeading
;
97 WORD dfExternalLeading
;
105 BYTE dfPitchAndFamily
;
116 char szDeviceName
[1];
118 } FONTDIRENTRY
, *PFONTDIRENTRY
;
120 typedef struct _DIRENTRY
124 } DIRENTRY
, *PDIRENTRY
;
126 typedef struct _FONTGROUPHDR
130 } FONTGROUPHDR
, *PFONTGROUPHDR
;
136 CHAR dfCopyright
[60];
142 WORD dfInternalLeading
;
143 WORD dfExternalLeading
;
151 BYTE dfPitchAndFamily
;
169 DWORD dfColorPointer
;
170 DWORD dfReserved1
[4];
172 } FONTINFO16
, *LPFONTINFO16
, *PFONTINFO16
;
178 } GLYPHENTRY20
, *PGLYPHENTRY20
;
184 } GLYPHENTRY30
, *PGLYPHENTRY30
;
190 } GLYPHENTRY
, *PGLYPHENTRY
;
195 /** Driver specific types *****************************************************/
205 PFONTDIRENTRY pFontDirEntry
;
206 PFONTINFO16 pFontInfo
;
228 } BMFD_FACE
, *PBMFD_FACE
;
234 PFONTGROUPHDR pFontDir
;
238 } BMFD_FILE
, *PBMFD_FILE
;
247 } BMFD_FONT
, *PBMFD_FONT
;
249 //"Bold Italic Underline Strikeout"
250 #define MAX_STYLESIZE 35
255 WCHAR wszFamilyName
[LF_FACESIZE
];
256 WCHAR wszFaceName
[LF_FACESIZE
];
257 WCHAR wszStyleName
[MAX_STYLESIZE
];
258 } BMFD_IFIMETRICS
, *PBMFD_IFIMETRICS
;
261 /** Function prototypes *******************************************************/
264 DbgPrint(IN PCHAR Format
, IN
...);
270 IN LPWSTR pwszLogAddress
,
272 OUT HSURF
*phsurfPatterns
,
278 IN LPWSTR pwszDeviceName
,
301 ULONG ulFastCheckSum
);