fntfilst.h revision fa2b3b63
1fa2b3b63Smrg/*
2fa2b3b63Smrg
3fa2b3b63SmrgCopyright 1991, 1998  The Open Group
4fa2b3b63Smrg
5fa2b3b63SmrgPermission to use, copy, modify, distribute, and sell this software and its
6fa2b3b63Smrgdocumentation for any purpose is hereby granted without fee, provided that
7fa2b3b63Smrgthe above copyright notice appear in all copies and that both that
8fa2b3b63Smrgcopyright notice and this permission notice appear in supporting
9fa2b3b63Smrgdocumentation.
10fa2b3b63Smrg
11fa2b3b63SmrgThe above copyright notice and this permission notice shall be included in
12fa2b3b63Smrgall copies or substantial portions of the Software.
13fa2b3b63Smrg
14fa2b3b63SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15fa2b3b63SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16fa2b3b63SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
17fa2b3b63SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18fa2b3b63SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19fa2b3b63SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20fa2b3b63Smrg
21fa2b3b63SmrgExcept as contained in this notice, the name of The Open Group shall not be
22fa2b3b63Smrgused in advertising or otherwise to promote the sale, use or other dealings
23fa2b3b63Smrgin this Software without prior written authorization from The Open Group.
24fa2b3b63Smrg
25fa2b3b63Smrg*/
26fa2b3b63Smrg
27fa2b3b63Smrg/*
28fa2b3b63Smrg * Author:  Keith Packard, MIT X Consortium
29fa2b3b63Smrg */
30fa2b3b63Smrg
31fa2b3b63Smrg#ifndef _FONTFILEST_H_
32fa2b3b63Smrg#define _FONTFILEST_H_
33fa2b3b63Smrg
34fa2b3b63Smrg#include <X11/Xos.h>
35fa2b3b63Smrg#ifndef XP_PSTEXT
36fa2b3b63Smrg#include "fontmisc.h"
37fa2b3b63Smrg#endif
38fa2b3b63Smrg#include <X11/fonts/fontstruct.h>
39fa2b3b63Smrg#include "fontxlfd.h"
40fa2b3b63Smrg#include "fntfil.h"
41fa2b3b63Smrg
42fa2b3b63Smrgtypedef struct _FontName {
43fa2b3b63Smrg    char	*name;
44fa2b3b63Smrg    short	length;
45fa2b3b63Smrg    short	ndashes;
46fa2b3b63Smrg} FontNameRec;
47fa2b3b63Smrg
48fa2b3b63Smrgtypedef struct _FontScaled {
49fa2b3b63Smrg    FontScalableRec	vals;
50fa2b3b63Smrg    FontEntryPtr	bitmap;
51fa2b3b63Smrg    FontPtr		pFont;
52fa2b3b63Smrg} FontScaledRec;
53fa2b3b63Smrg
54fa2b3b63Smrgtypedef struct _FontScalableExtra {
55fa2b3b63Smrg    FontScalableRec	defaults;
56fa2b3b63Smrg    int			numScaled;
57fa2b3b63Smrg    int			sizeScaled;
58fa2b3b63Smrg    FontScaledPtr	scaled;
59fa2b3b63Smrg    pointer		private;
60fa2b3b63Smrg} FontScalableExtraRec;
61fa2b3b63Smrg
62fa2b3b63Smrgtypedef struct _FontScalableEntry {
63fa2b3b63Smrg    FontRendererPtr	    renderer;
64fa2b3b63Smrg    char		    *fileName;
65fa2b3b63Smrg    FontScalableExtraPtr   extra;
66fa2b3b63Smrg} FontScalableEntryRec;
67fa2b3b63Smrg
68fa2b3b63Smrg/*
69fa2b3b63Smrg * This "can't" work yet - the returned alias string must be permanent,
70fa2b3b63Smrg * but this layer would need to generate the appropriate name from the
71fa2b3b63Smrg * resolved scalable + the XLFD values passed in.  XXX
72fa2b3b63Smrg */
73fa2b3b63Smrg
74fa2b3b63Smrgtypedef struct _FontScaleAliasEntry {
75fa2b3b63Smrg    char		*resolved;
76fa2b3b63Smrg} FontScaleAliasEntryRec;
77fa2b3b63Smrg
78fa2b3b63Smrgtypedef struct _FontBitmapEntry {
79fa2b3b63Smrg    FontRendererPtr	renderer;
80fa2b3b63Smrg    char		*fileName;
81fa2b3b63Smrg    FontPtr		pFont;
82fa2b3b63Smrg} FontBitmapEntryRec;
83fa2b3b63Smrg
84fa2b3b63Smrgtypedef struct _FontAliasEntry {
85fa2b3b63Smrg    char	*resolved;
86fa2b3b63Smrg} FontAliasEntryRec;
87fa2b3b63Smrg
88fa2b3b63Smrgtypedef struct _FontBCEntry {
89fa2b3b63Smrg    FontScalableRec	    vals;
90fa2b3b63Smrg    FontEntryPtr	    entry;
91fa2b3b63Smrg} FontBCEntryRec;
92fa2b3b63Smrg
93fa2b3b63Smrgtypedef struct _FontEntry {
94fa2b3b63Smrg    FontNameRec	name;
95fa2b3b63Smrg    int		type;
96fa2b3b63Smrg    union _FontEntryParts {
97fa2b3b63Smrg	FontScalableEntryRec	scalable;
98fa2b3b63Smrg	FontBitmapEntryRec	bitmap;
99fa2b3b63Smrg	FontAliasEntryRec	alias;
100fa2b3b63Smrg	FontBCEntryRec		bc;
101fa2b3b63Smrg    } u;
102fa2b3b63Smrg} FontEntryRec;
103fa2b3b63Smrg
104fa2b3b63Smrgtypedef struct _FontTable {
105fa2b3b63Smrg    int		    used;
106fa2b3b63Smrg    int		    size;
107fa2b3b63Smrg    FontEntryPtr    entries;
108fa2b3b63Smrg    Bool	    sorted;
109fa2b3b63Smrg} FontTableRec;
110fa2b3b63Smrg
111fa2b3b63Smrgtypedef struct _FontDirectory {
112fa2b3b63Smrg    char	    *directory;
113fa2b3b63Smrg    unsigned long   dir_mtime;
114fa2b3b63Smrg    unsigned long   alias_mtime;
115fa2b3b63Smrg    FontTableRec    scalable;
116fa2b3b63Smrg    FontTableRec    nonScalable;
117fa2b3b63Smrg    char	    *attributes;
118fa2b3b63Smrg} FontDirectoryRec;
119fa2b3b63Smrg
120fa2b3b63Smrg/* Capability bits: for definition of capabilities bitmap in the
121fa2b3b63Smrg   FontRendererRec to indicate support of XLFD enhancements */
122fa2b3b63Smrg
123fa2b3b63Smrg#define CAP_MATRIX		0x1
124fa2b3b63Smrg#define CAP_CHARSUBSETTING	0x2
125fa2b3b63Smrg
126fa2b3b63Smrgtypedef struct _FontRenderer {
127fa2b3b63Smrg    const char    *fileSuffix;
128fa2b3b63Smrg    int	    fileSuffixLen;
129fa2b3b63Smrg    int	    (*OpenBitmap)(FontPathElementPtr /* fpe */,
130fa2b3b63Smrg			  FontPtr * /* pFont */,
131fa2b3b63Smrg			  int /* flags */,
132fa2b3b63Smrg			  FontEntryPtr /* entry */,
133fa2b3b63Smrg			  char * /* fileName */,
134fa2b3b63Smrg			  fsBitmapFormat /* format */,
135fa2b3b63Smrg			  fsBitmapFormatMask /* mask */,
136fa2b3b63Smrg			  FontPtr /* non_cachable_font */);
137fa2b3b63Smrg    int	    (*OpenScalable)(FontPathElementPtr /* fpe */,
138fa2b3b63Smrg			    FontPtr * /* pFont */,
139fa2b3b63Smrg			    int /* flags */,
140fa2b3b63Smrg			    FontEntryPtr /* entry */,
141fa2b3b63Smrg			    char * /* fileName */,
142fa2b3b63Smrg			    FontScalablePtr /* vals */,
143fa2b3b63Smrg			    fsBitmapFormat /* format */,
144fa2b3b63Smrg			    fsBitmapFormatMask /* fmask */,
145fa2b3b63Smrg			    FontPtr /* non_cachable_font */);
146fa2b3b63Smrg    int	    (*GetInfoBitmap)(FontPathElementPtr /* fpe */,
147fa2b3b63Smrg			     FontInfoPtr /* pFontInfo */,
148fa2b3b63Smrg			     FontEntryPtr /* entry */,
149fa2b3b63Smrg			     char * /*fileName */);
150fa2b3b63Smrg    int	    (*GetInfoScalable)(FontPathElementPtr /* fpe */,
151fa2b3b63Smrg			       FontInfoPtr /* pFontInfo */,
152fa2b3b63Smrg			       FontEntryPtr /* entry */,
153fa2b3b63Smrg			       FontNamePtr /* fontName */,
154fa2b3b63Smrg			       char * /* fileName */,
155fa2b3b63Smrg			       FontScalablePtr /* vals */);
156fa2b3b63Smrg    int	    number;
157fa2b3b63Smrg    int     capabilities;	/* Bitmap components defined above */
158fa2b3b63Smrg} FontRendererRec;
159fa2b3b63Smrg
160fa2b3b63Smrgtypedef struct _FontRenders {
161fa2b3b63Smrg    int		    number;
162fa2b3b63Smrg    struct _FontRenderersElement {
163fa2b3b63Smrg        /* In order to preserve backward compatibility, the
164fa2b3b63Smrg           priority field is made invisible to renderers */
165fa2b3b63Smrg        FontRendererPtr renderer;
166fa2b3b63Smrg        int priority;
167fa2b3b63Smrg    } *renderers;
168fa2b3b63Smrg} FontRenderersRec, *FontRenderersPtr;
169fa2b3b63Smrg
170fa2b3b63Smrgtypedef struct _BitmapInstance {
171fa2b3b63Smrg    FontScalableRec	vals;
172fa2b3b63Smrg    FontBitmapEntryPtr	bitmap;
173fa2b3b63Smrg} BitmapInstanceRec, *BitmapInstancePtr;
174fa2b3b63Smrg
175fa2b3b63Smrgtypedef struct _BitmapScalablePrivate {
176fa2b3b63Smrg    int			numInstances;
177fa2b3b63Smrg    BitmapInstancePtr	instances;
178fa2b3b63Smrg} BitmapScalablePrivateRec, *BitmapScalablePrivatePtr;
179fa2b3b63Smrg
180fa2b3b63Smrgtypedef struct _BitmapSources {
181fa2b3b63Smrg    FontPathElementPtr	*fpe;
182fa2b3b63Smrg    int			size;
183fa2b3b63Smrg    int			count;
184fa2b3b63Smrg} BitmapSourcesRec, *BitmapSourcesPtr;
185fa2b3b63Smrg
186fa2b3b63Smrgextern BitmapSourcesRec	FontFileBitmapSources;
187fa2b3b63Smrg
188fa2b3b63Smrg/* Defines for FontFileFindNamesInScalableDir() behavior */
189fa2b3b63Smrg#define NORMAL_ALIAS_BEHAVIOR		0
190fa2b3b63Smrg#define LIST_ALIASES_AND_TARGET_NAMES   (1<<0)
191fa2b3b63Smrg#define IGNORE_SCALABLE_ALIASES		(1<<1)
192fa2b3b63Smrg
193fa2b3b63Smrg#endif /* _FONTFILEST_H_ */
194