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)
16 #if defined(_M_IX86) || defined(_M_AMD64)
17 /* on x86 and x64, unaligned access is allowed, byteorder is LE */
22 sizeof(x) == 1 ? (x) : \
23 sizeof(x) == 2 ? (((PCHAR)&(x))[0] + (((PCHAR)&(x))[1] << 8)) : \
24 (((PCHAR)&(x))[0] + (((PCHAR)&(x))[1] << 8) + (((PCHAR)&(x))[2] << 16) + \
25 (((PCHAR)&(x))[3] << 24))
30 FDM_TYPE_CONST_BEARINGS | FDM_TYPE_ZERO_BEARINGS | \
31 FDM_TYPE_CHAR_INC_EQUAL_BM_BASE | FDM_TYPE_MAXEXT_EQUAL_BM_SIDE | \
32 FDM_TYPE_BM_SIDE_CONST
34 #define FM_INFO_MASK \
35 FM_INFO_TECH_BITMAP | FM_INFO_1BPP | FM_INFO_INTEGER_WIDTH | \
36 FM_INFO_RETURNS_BITMAPS | FM_INFO_RIGHT_HANDED | FM_INFO_INTEGRAL_SCALING |\
37 FM_INFO_90DEGREE_ROTATIONS | FM_INFO_OPTICALLY_FIXED_PITCH | FM_INFO_NONNEGATIVE_AC
39 #define FLOATL_1 0x3f800000
41 #define TAG_PDEV 'veDP'
42 #define TAG_GLYPHSET 'GlSt'
43 #define TAG_IFIMETRICS 'Ifim'
44 #define TAG_FONTINFO 'Font'
47 /** FON / FNT specific types **************************************************/
49 #define IMAGE_DOS_MAGIC 0x594D // FIXME: hack hack hack
60 } NE_NAMEINFO
, *PNE_NAMEINFO
;
62 #define NE_RSCTYPE_FONT 0x8008
63 #define NE_RSCTYPE_FONTDIR 0x8007
69 NE_NAMEINFO nameinfo
[1];
70 } NE_TYPEINFO
, *PNE_TYPEINFO
;
75 NE_TYPEINFO typeinfo
[1];
76 } NE_RESTABLE
, *PNE_RESTABLE
;
79 #define DFF_FIXED 0x0001
80 #define DFF_PROPORTIONAL 0x0002
81 #define DFF_ABCFIXED 0x0004
82 #define DFF_ABCPROPORTIONAL 0x0008
83 #define DFF_1COLOR 0x0010
84 #define DFF_16COLOR 0x0020
85 #define DFF_256COLOR 0x0040
86 #define DFF_RGBCOLOR 0x0080
88 // see http://msdn.microsoft.com/en-us/library/ms648014(VS.85).aspx
89 typedef struct _FONTDIRENTRY
99 WORD dfInternalLeading
;
100 WORD dfExternalLeading
;
108 BYTE dfPitchAndFamily
;
119 char szDeviceName
[1];
121 } FONTDIRENTRY
, *PFONTDIRENTRY
;
123 typedef struct _DIRENTRY
127 } DIRENTRY
, *PDIRENTRY
;
129 typedef struct _FONTGROUPHDR
133 } FONTGROUPHDR
, *PFONTGROUPHDR
;
139 CHAR dfCopyright
[60];
145 WORD dfInternalLeading
;
146 WORD dfExternalLeading
;
154 BYTE dfPitchAndFamily
;
172 DWORD dfColorPointer
;
173 DWORD dfReserved1
[4];
175 } FONTINFO16
, *LPFONTINFO16
, *PFONTINFO16
;
181 } GLYPHENTRY20
, *PGLYPHENTRY20
;
187 } GLYPHENTRY30
, *PGLYPHENTRY30
;
193 } GLYPHENTRY
, *PGLYPHENTRY
;
198 /** Driver specific types *****************************************************/
208 PFONTDIRENTRY pFontDirEntry
;
209 PFONTINFO16 pFontInfo
;
231 } BMFD_FACE
, *PBMFD_FACE
;
237 PFONTGROUPHDR pFontDir
;
241 } BMFD_FILE
, *PBMFD_FILE
;
250 } BMFD_FONT
, *PBMFD_FONT
;
252 //"Bold Italic Underline Strikeout"
253 #define MAX_STYLESIZE 35
258 WCHAR wszFamilyName
[LF_FACESIZE
];
259 WCHAR wszFaceName
[LF_FACESIZE
];
260 WCHAR wszStyleName
[MAX_STYLESIZE
];
261 } BMFD_IFIMETRICS
, *PBMFD_IFIMETRICS
;
264 /** Function prototypes *******************************************************/
267 DbgPrint(IN PCHAR Format
, IN
...);
273 IN LPWSTR pwszLogAddress
,
275 OUT HSURF
*phsurfPatterns
,
281 IN LPWSTR pwszDeviceName
,
304 ULONG ulFastCheckSum
);
370 #endif /* _BMFD_PCH_ */