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