1a96d7823Smrg/*
2a96d7823Smrg
3a96d7823SmrgCopyright 1991, 1998  The Open Group
4a96d7823Smrg
5a96d7823SmrgPermission to use, copy, modify, distribute, and sell this software and its
6a96d7823Smrgdocumentation for any purpose is hereby granted without fee, provided that
7a96d7823Smrgthe above copyright notice appear in all copies and that both that
8a96d7823Smrgcopyright notice and this permission notice appear in supporting
9a96d7823Smrgdocumentation.
10a96d7823Smrg
11a96d7823SmrgThe above copyright notice and this permission notice shall be included in
12a96d7823Smrgall copies or substantial portions of the Software.
13a96d7823Smrg
14a96d7823SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15a96d7823SmrgIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16a96d7823SmrgFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
17a96d7823SmrgOPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18a96d7823SmrgAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19a96d7823SmrgCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20a96d7823Smrg
21a96d7823SmrgExcept as contained in this notice, the name of The Open Group shall not be
22a96d7823Smrgused in advertising or otherwise to promote the sale, use or other dealings
23a96d7823Smrgin this Software without prior written authorization from The Open Group.
24a96d7823Smrg
25a96d7823Smrg*/
26a96d7823Smrg
27a96d7823Smrg/*
28a96d7823Smrg * Author:  Keith Packard, MIT X Consortium
29a96d7823Smrg */
30a96d7823Smrg
31a96d7823Smrg#ifndef _FONTFILE_H_
32a96d7823Smrg#define _FONTFILE_H_
33a96d7823Smrg
34a96d7823Smrg#include <X11/fonts/fontxlfd.h>
35a96d7823Smrg
36a96d7823Smrgtypedef struct _FontEntry	    *FontEntryPtr;
37a96d7823Smrgtypedef struct _FontTable	    *FontTablePtr;
38a96d7823Smrgtypedef struct _FontName	    *FontNamePtr;
39a96d7823Smrgtypedef struct _FontScaled	    *FontScaledPtr;
40a96d7823Smrgtypedef struct _FontScalableExtra   *FontScalableExtraPtr;
41a96d7823Smrgtypedef struct _FontScalableEntry   *FontScalableEntryPtr;
42a96d7823Smrgtypedef struct _FontScaleAliasEntry *FontScaleAliasEntryPtr;
43a96d7823Smrgtypedef struct _FontBitmapEntry	    *FontBitmapEntryPtr;
44a96d7823Smrgtypedef struct _FontAliasEntry	    *FontAliasEntryPtr;
45a96d7823Smrgtypedef struct _FontDirectory	    *FontDirectoryPtr;
46a96d7823Smrgtypedef struct _FontRenderer	    *FontRendererPtr;
47a96d7823Smrg
48a96d7823Smrg#define NullFontEntry		    ((FontEntryPtr) 0)
49a96d7823Smrg#define NullFontTable		    ((FontTablePtr) 0)
50a96d7823Smrg#define NullFontName		    ((FontNamePtr) 0)
51a96d7823Smrg#define NullFontScaled		    ((FontScaled) 0)
52a96d7823Smrg#define NullFontScalableExtra	    ((FontScalableExtra) 0)
53a96d7823Smrg#define NullFontscalableEntry	    ((FontScalableEntry) 0)
54a96d7823Smrg#define NullFontScaleAliasEntry	    ((FontScaleAliasEntry) 0)
55a96d7823Smrg#define NullFontBitmapEntry	    ((FontBitmapEntry) 0)
56a96d7823Smrg#define NullFontAliasEntry	    ((FontAliasEntry) 0)
57a96d7823Smrg#define NullFontDirectory	    ((FontDirectoryPtr) 0)
58a96d7823Smrg#define NullFontRenderer	    ((FontRendererPtr) 0)
59a96d7823Smrg
60a96d7823Smrg#define FONT_ENTRY_SCALABLE	0
61a96d7823Smrg#define FONT_ENTRY_SCALE_ALIAS	1
62a96d7823Smrg#define FONT_ENTRY_BITMAP	2
63a96d7823Smrg#define FONT_ENTRY_ALIAS	3
64a96d7823Smrg
65a96d7823Smrg#define MAXFONTNAMELEN	    1024
66a96d7823Smrg#define MAXFONTFILENAMELEN  1024
67a96d7823Smrg
68a96d7823Smrg#define FontDirFile	    "fonts.dir"
69a96d7823Smrg#define FontAliasFile	    "fonts.alias"
70a96d7823Smrg#define FontScalableFile    "fonts.scale"
71a96d7823Smrg
72a96d7823Smrgextern int FontFileNameCheck ( const char *name );
73a96d7823Smrgextern int FontFileInitFPE ( FontPathElementPtr fpe );
74a96d7823Smrgextern int FontFileResetFPE ( FontPathElementPtr fpe );
75a96d7823Smrgextern int FontFileFreeFPE ( FontPathElementPtr fpe );
76a96d7823Smrgextern int FontFileOpenFont ( pointer client, FontPathElementPtr fpe,
77a96d7823Smrg			      Mask flags, const char *name, int namelen,
78a96d7823Smrg			      fsBitmapFormat format, fsBitmapFormatMask fmask,
79a96d7823Smrg			      XID id, FontPtr *pFont, char **aliasName,
80a96d7823Smrg			      FontPtr non_cachable_font );
81a96d7823Smrgextern void FontFileCloseFont ( FontPathElementPtr fpe, FontPtr pFont );
82a96d7823Smrgextern int FontFileOpenBitmap ( FontPathElementPtr fpe, FontPtr *pFont,
83a96d7823Smrg				int flags, FontEntryPtr entry,
84a96d7823Smrg				fsBitmapFormat format,
85a96d7823Smrg				fsBitmapFormatMask fmask );
86a96d7823Smrgextern int FontFileListFonts ( pointer client, FontPathElementPtr fpe,
87a96d7823Smrg			       const char *pat, int len, int max,
88a96d7823Smrg			       FontNamesPtr names );
89a96d7823Smrgextern int FontFileStartListFonts ( pointer client, FontPathElementPtr fpe,
90a96d7823Smrg				    const char *pat, int len, int max,
91a96d7823Smrg				    pointer *privatep, int mark_aliases );
92a96d7823Smrgextern int FontFileStartListFontsWithInfo ( pointer client,
93a96d7823Smrg					    FontPathElementPtr fpe,
94a96d7823Smrg					    const char *pat, int len, int max,
95a96d7823Smrg					    pointer *privatep );
96a96d7823Smrgextern int FontFileListNextFontWithInfo ( pointer client,
97a96d7823Smrg					  FontPathElementPtr fpe,
98a96d7823Smrg					  char **namep, int *namelenp,
99a96d7823Smrg					  FontInfoPtr *pFontInfo,
100a96d7823Smrg					  int *numFonts, pointer private );
101a96d7823Smrgextern int FontFileStartListFontsAndAliases ( pointer client,
102a96d7823Smrg					      FontPathElementPtr fpe,
103a96d7823Smrg					      const char *pat, int len, int max,
104a96d7823Smrg					      pointer *privatep );
105a96d7823Smrgextern int FontFileListNextFontOrAlias ( pointer client,
106a96d7823Smrg					 FontPathElementPtr fpe,
107a96d7823Smrg					 char **namep, int *namelenp,
108a96d7823Smrg					 char **resolvedp, int *resolvedlenp,
109a96d7823Smrg					 pointer private );
110a96d7823Smrgextern void FontFileRegisterLocalFpeFunctions ( void );
111a96d7823Smrgextern void CatalogueRegisterLocalFpeFunctions ( void );
112a96d7823Smrg
113a96d7823Smrg
114a96d7823Smrgextern FontEntryPtr FontFileAddEntry ( FontTablePtr table,
115a96d7823Smrg				       FontEntryPtr prototype );
116a96d7823Smrgextern Bool FontFileAddFontAlias ( FontDirectoryPtr dir, char *aliasName,
117a96d7823Smrg				   char *fontName );
118a96d7823Smrgextern Bool FontFileAddFontFile ( FontDirectoryPtr dir, char *fontName,
119a96d7823Smrg				  char *fileName );
120a96d7823Smrgextern int FontFileCountDashes ( char *name, int namelen );
121a96d7823Smrgextern FontEntryPtr FontFileFindNameInDir ( FontTablePtr table,
122a96d7823Smrg					    FontNamePtr pat );
123a96d7823Smrgextern FontEntryPtr FontFileFindNameInScalableDir ( FontTablePtr table,
124a96d7823Smrg						    FontNamePtr pat,
125a96d7823Smrg						    FontScalablePtr vals );
126a96d7823Smrgextern int FontFileFindNamesInDir ( FontTablePtr table, FontNamePtr pat,
127a96d7823Smrg				    int max, FontNamesPtr names );
128a96d7823Smrgextern int FontFileFindNamesInScalableDir ( FontTablePtr table,
129a96d7823Smrg					    FontNamePtr pat, int max,
130a96d7823Smrg					    FontNamesPtr names,
131a96d7823Smrg					    FontScalablePtr vals,
132a96d7823Smrg					    int alias_behavior, int *newmax );
133a96d7823Smrg
134a96d7823Smrgextern void FontFileFreeDir ( FontDirectoryPtr dir );
135a96d7823Smrgextern void FontFileFreeEntry ( FontEntryPtr entry );
136a96d7823Smrgextern void FontFileFreeTable ( FontTablePtr table );
137a96d7823Smrgextern Bool FontFileInitTable ( FontTablePtr table, int size );
138a96d7823Smrgextern FontDirectoryPtr FontFileMakeDir ( const char *dirName, int size );
139a96d7823Smrgextern Bool FontFileMatchName ( char *name, int length, FontNamePtr pat );
140a96d7823Smrgextern char * FontFileSaveString ( char *s );
141a96d7823Smrgextern void FontFileSortDir ( FontDirectoryPtr dir );
142a96d7823Smrgextern void FontFileSortTable ( FontTablePtr table );
143a96d7823Smrg
144a96d7823Smrgextern void FontDefaultFormat ( int *bit, int *byte, int *glyph, int *scan );
145a96d7823Smrg
146a96d7823Smrgextern Bool FontFileRegisterRenderer ( FontRendererPtr renderer );
147a96d7823Smrgextern Bool FontFilePriorityRegisterRenderer ( FontRendererPtr renderer,
148a96d7823Smrg                                               int priority );
149a96d7823Smrgextern FontRendererPtr FontFileMatchRenderer ( char *fileName );
150a96d7823Smrg
151a96d7823Smrgextern Bool FontFileAddScaledInstance ( FontEntryPtr entry,
152a96d7823Smrg					FontScalablePtr vals, FontPtr pFont,
153a96d7823Smrg					char *bitmapName );
154a96d7823Smrgextern void FontFileSwitchStringsToBitmapPointers ( FontDirectoryPtr dir );
155a96d7823Smrgextern void FontFileRemoveScaledInstance ( FontEntryPtr entry, FontPtr pFont );
156a96d7823Smrgextern Bool FontFileCompleteXLFD ( FontScalablePtr vals, FontScalablePtr def );
157a96d7823Smrgextern FontScaledPtr FontFileFindScaledInstance ( FontEntryPtr entry,
158a96d7823Smrg						  FontScalablePtr vals,
159a96d7823Smrg						  int noSpecificSize );
160a96d7823Smrg
161a96d7823Smrgextern Bool FontFileRegisterBitmapSource ( FontPathElementPtr fpe );
162a96d7823Smrgextern void FontFileUnregisterBitmapSource ( FontPathElementPtr fpe );
163a96d7823Smrgextern void FontFileEmptyBitmapSource ( void );
164a96d7823Smrgextern int FontFileMatchBitmapSource ( FontPathElementPtr fpe,
165a96d7823Smrg				       FontPtr *pFont, int flags,
166a96d7823Smrg				       FontEntryPtr entry,
167a96d7823Smrg				       FontNamePtr zeroPat,
168a96d7823Smrg				       FontScalablePtr vals,
169a96d7823Smrg				       fsBitmapFormat format,
170a96d7823Smrg				       fsBitmapFormatMask fmask,
171a96d7823Smrg				       Bool noSpecificSize );
172a96d7823Smrg
173a96d7823Smrgextern int FontFileReadDirectory ( const char *directory, FontDirectoryPtr *pdir );
174a96d7823Smrgextern Bool FontFileDirectoryChanged ( FontDirectoryPtr dir );
175a96d7823Smrg
176a96d7823Smrg#endif /* _FONTFILE_H_ */
177