Yet another attempt at fixing CW_USEDEFAULT handling.
[wine.git] / include / x11font.h
blob1e989b498a0f6603b0805da5328e100c1ae7cf01
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"
11 #include "x11drv.h"
12 #include "pshpack1.h"
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 BYTE 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 #include "poppack.h"
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_FIXEDEX 0x1000
59 #define FI_NORMAL 0x2000
60 #define FI_SUBSET 0x4000
61 #define FI_TRUETYPE 0x8000
63 /* code pages */
65 #define FI_ENC_ANSI 0
66 #define FI_ENC_ISO8859 1
67 #define FI_ENC_ISO646 2
68 #define FI_ENC_MICROSOFT 3
69 #define FI_ENC_KOI8 4
70 #define FI_ENC_ASCII 5
71 #define FI_ENC_VISCII 6
72 #define FI_ENC_TCVN 7
73 #define FI_ENC_TIS620 8
75 typedef struct tagFontInfo
77 struct tagFontInfo* next;
78 UINT16 fi_flags;
79 UINT16 fi_encoding;
81 /* LFD parameters can be quite different from the actual metrics */
83 UINT16 lfd_height;
84 UINT16 lfd_resolution;
85 IFONTINFO16 df;
86 } fontInfo;
88 /* Font resource list for EnumFont() purposes */
90 #define FR_SOFTFONT 0x1000 /* - .FON or .FOT file */
91 #define FR_SOFTRESOURCE 0x2000 /* - resource handle */
92 #define FR_REMOVED 0x4000 /* delayed remove */
93 #define FR_NAMESET 0x8000
95 #define LFD_FIELDS 14
96 typedef struct
98 char* foundry;
99 char* family;
100 char* weight;
101 char* slant;
102 char* set_width;
103 char* add_style;
104 char* pixel_size;
105 char* point_size;
106 char* resolution_x;
107 char* resolution_y;
108 char* spacing;
109 char* average_width;
110 char* charset_registry;
111 char* charset_encoding;
112 } LFD;
114 typedef struct tagFontResource
116 struct tagFontResource* next;
117 UINT16 fr_flags;
118 UINT16 fr_penalty;
119 UINT16 fi_count;
120 UINT16 fo_count;
121 fontInfo* fi;
122 LFD* resource;
123 HANDLE hOwner; /* For FR_SOFTFONT/FR_SOFTRESOURCE fonts */
124 CHAR lfFaceName[LF_FACESIZE];
125 } fontResource;
127 typedef struct {
128 float a,b,c,d; /* pixelsize matrix, FIXME: switch to MAT2 format */
129 unsigned long RAW_ASCENT;
130 unsigned long RAW_DESCENT;
131 float pixelsize;
132 float ascent;
133 float descent;
134 } XFONTTRANS;
136 #define FO_RESOURCE_MASK 0x000F
137 #define FO_SYSTEM 0x0001 /* resident in cache */
138 #define FO_SOFTFONT 0x0002 /* installed at runtime */
139 #define FO_SHARED 0x0004 /* MITSHM */
140 #define FO_REMOVED 0x0008 /* remove when count falls to 0 */
142 #define FO_MATCH_MASK 0x00F0
143 #define FO_MATCH_NORASTER 0x0010
144 #define FO_MATCH_PAF 0x0020
145 #define FO_MATCH_XYINDEP 0x0040
147 #define FO_SYNTH_MASK 0xFF00
148 #define FO_SYNTH_HEIGHT 0x2000
149 #define FO_SYNTH_WIDTH 0x4000
150 #define FO_SYNTH_ROTATE 0x8000
151 #define FO_SYNTH_BOLD 0x0100
152 #define FO_SYNTH_ITALIC 0x0200
153 #define FO_SYNTH_UNDERLINE 0x0400
154 #define FO_SYNTH_STRIKEOUT 0x0800
156 /* Realized screen font */
158 typedef struct
160 XFontStruct* fs; /* text metrics */
161 fontResource* fr; /* font family */
162 fontInfo* fi; /* font instance info */
163 Pixmap* lpPixmap; /* optional character bitmasks for synth fonts */
165 XFONTTRANS *lpX11Trans; /* Info for X11R6 transform */
166 float rescale; /* Rescale for large fonts */
167 INT16 foInternalLeading;
168 INT16 foAvgCharWidth;
169 INT16 foMaxCharWidth;
170 UINT16 fo_flags;
172 /* font cache housekeeping */
174 UINT16 count;
175 UINT16 lru;
176 UINT16 lfchecksum;
177 LOGFONT16 lf;
178 } fontObject;
180 typedef struct
182 fontResource* pfr;
183 fontInfo* pfi;
184 UINT16 height;
185 UINT16 flags;
186 LPLOGFONT16 plf;
187 } fontMatch;
189 typedef struct
191 LPLOGFONT16 lpLogFontParam;
192 FONTENUMPROC16 lpEnumFunc;
193 LPARAM lpData;
195 LPNEWTEXTMETRICEX16 lpTextMetric;
196 LPENUMLOGFONTEX16 lpLogFont;
197 SEGPTR segTextMetric;
198 SEGPTR segLogFont;
199 } fontEnum16;
201 typedef struct
203 LPLOGFONTW lpLogFontParam;
204 FONTENUMPROCEXW lpEnumFunc;
205 LPARAM lpData;
207 LPNEWTEXTMETRICEXW lpTextMetric;
208 LPENUMLOGFONTEXW lpLogFont;
209 DWORD dwFlags;
210 } fontEnum32;
212 extern fontObject* XFONT_GetFontObject( X_PHYSFONT pFont );
213 extern XFontStruct* XFONT_GetFontStruct( X_PHYSFONT pFont );
214 extern LPIFONTINFO16 XFONT_GetFontInfo( X_PHYSFONT pFont );
216 #endif /* __WINE_X11FONT_H */