1 /*********************************************************************\
2 * Module Name: 32FDSTRC.H
4 * OS/2 Intelligent Font Interface
6 * Copyright (c) 1989,1994 IBM Corporation
7 * Copyright (c) 1989 Microsoft Corporation
9 \*********************************************************************/
10 #ifndef __32FDSTRC_H__
11 #define __32FDSTRC_H__
14 #define GLYPHNAMESIZE 16
16 /* Error codes defined to be returned by IFI */
17 /* NOTE: The actual values are subject to change */
19 /*#define PMERR_BUFFER_TOO_SMALL 23003L*/
20 #define PMERR_FACENAME_NOT_FOUND 23004L
21 #define PMERR_FD_ALREADY_INSTALLED 23005L
22 #define PMERR_INVALID_CONTEXTINFO 23006L
23 #define PMERR_NOT_A_FONT_FILE 23007L
24 #define PMERR_INVALID_FONT_SELECTION 23008L
25 #define PMERR_INVALID_FORMAT 23009L
26 #define PMERR_BUSY_HFC 230010L
27 #define PMERR_INVALID_HFC 230011L
28 #define PMERR_INVALID_INDEX 230012L
29 #define PMERR_INVALID_QUERY_TYPE 230013L
30 #define PMERR_CONTEXT_NOT_SET 230014L
32 /* Query faces subfunction */
33 #define FD_QUERY_CONTEXTMETRICS 1L
34 #define FD_QUERY_ABC_WIDTHS 2L
35 #define FD_QUERY_KERNINGPAIRS 3L
37 /* Query char subfunction */
38 #define FD_QUERY_CHARIMAGE 1L
39 #define FD_QUERY_OUTLINE 2L
40 #define FD_QUERY_BITMAPMETRICS 4L
42 #define FD_CHARATTR_ALIGNED_8 0x00000001
43 #define FD_CHARATTR_ALIGNED_16 0x00000002
44 #define FD_CHARATTR_ALIGNED_32 0x00000004
45 #define FD_CHARATTR_NO_CACHE 0x00000010
47 typedef struct _ABC_TRIPLETS
/*abc*/
53 typedef ABC_TRIPLETS
*PABC_TRIPLETS
;
55 // THIS STRUCTURE NOW RESIDES IN PMDDI.H FOR CRUISER WORLD
56 // BUT IFI FONT DRIVER DOES NOT INCLUDE PMDDI.H
59 typedef struct _POINTFX
{ /* ptfx */
63 typedef POINTFX
*PPOINTFX
;
66 typedef struct _BITMAPMETRICS
/* bmm */
71 POINTFX
*ppfxOrigin
; /* Return character origin. */
73 POINTFX pfxOrigin
; /* Return character origin. */
76 typedef BITMAPMETRICS
*PBITMAPMETRICS
;
78 typedef struct _MAT2
/* mat */
86 typedef struct _FD_KERNINGPAIRS
/* krnpr */
93 typedef struct _CONTEXTINFO
/* ci */
95 ULONG cb
; /* Length in bytes of this structure. */
96 ULONG fl
; /* Flags. */
97 SIZEL sizlPPM
; /* Device resolution in pels/meter. */
98 POINTFX pfxSpot
; /* Spot size in pels. */
99 MAT2 matXform
; /* Notional to Device transform. */
101 typedef CONTEXTINFO
*PCONTEXTINFO
;
103 typedef struct _CHARATTR
/* ca */
106 ULONG iQuery
; /* Query type. */
107 GLYPH gi
; /* Glyph index in font. */
108 PBYTE pBuffer
; /* Bitmap buffer. */
109 ULONG cbLen
; /* Size of buffer in bytes. */
111 typedef CHARATTR
*PCHARATTR
;
113 typedef struct _CHARATTR2
/* ca2 */
116 ULONG iQuery
; /* Query type. */
117 GLYPH gi
; /* Glyph index in font. */
118 PBYTE pBuffer
; /* Bitmap buffer. */
119 ULONG cbLen
; /* Size of buffer in bytes. */
120 ULONG fl
; /* Flags */
122 typedef CHARATTR2
*PCHARATTR2
;
124 typedef struct _CONTEXTMETRICS
132 typedef CONTEXTMETRICS
* PCONTEXTMETRICS
;
134 typedef struct _POLYGONHEADER
{
136 ULONG iType
; /* Must be FD_POLYGON_TYPE */
138 typedef POLYGONHEADER
*PPOLYGONHEADER
;
140 typedef struct _PRIMLINE
{
141 ULONG iType
; /* Must be FD_PRIM_LINE */
144 typedef PRIMLINE
*PPRIMLINE
;
146 typedef struct _PRIMSPLINE
{
147 ULONG iType
; /* Must be FD_PRIM_SPLINE */
150 typedef PRIMSPLINE
*PPRIMSPLINE
;
153 * The names of these were changed to avoid conflict with PRIM_LINE
154 * which is defined ion some other header file.
156 #define FD_POLYGON_TYPE 24
157 #define FD_PRIM_LINE 1
158 #define FD_PRIM_SPLINE 3