Release 970629
[wine/wine-kai.git] / include / x11font.h
blobc87064ec7e18657fd5d3a0ae799ac8e75fea5570
1 /*
2 * X11 physical font definitions
4 * Copyright 1997 Alex Korobka
5 */
7 #ifndef __WINE_X11FONT_H
8 #define __WINE_X11FONT_H
10 #include "gdi.h"
12 #pragma pack(1)
14 /* this is a part of the font resource header, should
15 * make it easier to implement dynamic softfont loading */
17 typedef struct
19 INT16 dfType;
20 INT16 dfPoints;
21 INT16 dfVertRes;
22 INT16 dfHorizRes;
23 INT16 dfAscent;
24 INT16 dfInternalLeading;
25 INT16 dfExternalLeading;
26 CHAR dfItalic;
27 CHAR dfUnderline;
28 CHAR dfStrikeOut;
29 INT16 dfWeight;
30 CHAR dfCharSet;
31 INT16 dfPixWidth;
32 INT16 dfPixHeight;
33 CHAR dfPitchAndFamily;
34 INT16 dfAvgWidth;
35 INT16 dfMaxWidth;
36 CHAR dfFirstChar;
37 CHAR dfLastChar;
38 CHAR dfDefaultChar;
39 CHAR dfBreakChar;
40 INT16 dfWidthBytes;
41 LPCSTR dfDevice;
42 LPCSTR dfFace;
43 } IFONTINFO16, *LPIFONTINFO16;
45 #pragma pack(4)
47 /* internal flags */
49 #define FI_POLYWEIGHT 0x0001
50 #define FI_POLYSLANT 0x0002
51 #define FI_OBLIQUE 0x0004
52 #define FI_SCALABLE 0x0008
53 #define FI_FW_BOOK 0x0010
54 #define FI_FW_DEMI 0x0020
55 #define FI_VARIABLEPITCH 0x0040
56 #define FI_FIXEDPITCH 0x0080
58 #define FI_ENC_ISO8859 0x0100
59 #define FI_ENC_ISO646 0x0200
60 #define FI_ENC_ANSI 0x0400
62 #define FI_FIXEDEX 0x1000
63 #define FI_NORMAL 0x2000
64 #define FI_SUBSET 0x4000
65 #define FI_TRUETYPE 0x8000
67 typedef struct tagFontInfo
69 struct tagFontInfo* next;
70 UINT16 fi_flags;
72 /* LFD parameters can be quite different from the actual metrics */
74 UINT16 lfd_height;
75 UINT16 lfd_width;
76 UINT16 lfd_decipoints;
77 UINT16 lfd_resolution;
79 IFONTINFO16 df;
80 } fontInfo;
82 /* Font resource list for EnumFont() purposes */
84 #define FR_SOFTFONT 0x1000 /* - .FON or .FOT file */
85 #define FR_SOFTRESOURCE 0x2000 /* - resource handle */
86 #define FR_REMOVED 0x4000 /* delayed remove */
87 #define FR_NAMESET 0x8000
89 typedef struct tagFontResource
91 struct tagFontResource* next;
92 UINT16 fr_flags;
93 UINT16 count;
94 fontInfo* fi;
95 char* resource;
96 CHAR lfFaceName[LF_FACESIZE];
97 } fontResource;
99 #define FO_RESOURCE_MASK 0x000F
100 #define FO_SYSTEM 0x0001 /* resident in cache */
101 #define FO_SOFTFONT 0x0002 /* installed at runtime */
102 #define FO_SHARED 0x0004 /* MITSHM */
103 #define FO_REMOVED 0x0008 /* remove when count falls to 0 */
105 #define FO_MATCH_MASK 0x00F0
106 #define FO_MATCH_NORASTER 0x0010
107 #define FO_MATCH_PAF 0x0020
108 #define FO_MATCH_XYINDEP 0x0040
110 #define FO_SYNTH_MASK 0xFF00
111 #define FO_SYNTH_HEIGHT 0x2000
112 #define FO_SYNTH_WIDTH 0x4000
113 #define FO_SYNTH_ROTATE 0x8000
114 #define FO_SYNTH_BOLD 0x0100
115 #define FO_SYNTH_ITALIC 0x0200
116 #define FO_SYNTH_UNDERLINE 0x0400
117 #define FO_SYNTH_STRIKEOUT 0x0800
119 /* Realized screen font */
121 typedef struct
123 XFontStruct* fs; /* text metrics */
124 fontResource* fr; /* font family */
125 fontInfo* fi; /* font instance info */
126 LPMAT2* lpXForm; /* optional transformation matrix */
127 Pixmap* lpPixmap; /* optional character bitmasks for synth fonts */
129 INT16 foInternalLeading;
130 INT16 foAvgCharWidth;
131 UINT16 fo_flags;
133 /* font cache housekeeping */
135 UINT16 count;
136 UINT16 lru;
137 UINT16 lfchecksum;
138 LOGFONT16 lf;
139 } fontObject;
141 typedef struct
143 fontResource* pfr;
144 fontInfo* pfi;
145 UINT16 height;
146 UINT16 flags;
147 LPLOGFONT16 plf;
148 } fontMatch;
150 typedef struct
152 LPLOGFONT16 lpLogFontParam;
153 FONTENUMPROC16 lpEnumFunc;
154 LPARAM lpData;
156 LPNEWTEXTMETRICEX16 lpTextMetric;
157 LPENUMLOGFONTEX16 lpLogFont;
158 SEGPTR segTextMetric;
159 SEGPTR segLogFont;
160 } fontEnum16;
162 typedef struct
164 LPLOGFONT32W lpLogFontParam;
165 FONTENUMPROC32W lpEnumFunc;
166 LPARAM lpData;
168 LPNEWTEXTMETRICEX32W lpTextMetric;
169 LPENUMLOGFONTEX32W lpLogFont;
170 DWORD dwFlags;
171 } fontEnum32;
173 extern fontObject* XFONT_GetFontObject( X_PHYSFONT pFont );
174 extern XFontStruct* XFONT_GetFontStruct( X_PHYSFONT pFont );
175 extern LPIFONTINFO16 XFONT_GetFontInfo( X_PHYSFONT pFont );
177 #endif __WINE_X11FONT_H