1fa2b3b63Smrg/***********************************************************
2fa2b3b63SmrgCopyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
3fa2b3b63Smrg
4fa2b3b63Smrg                        All Rights Reserved
5fa2b3b63Smrg
6fa2b3b63SmrgPermission to use, copy, modify, and distribute this software and its
7fa2b3b63Smrgdocumentation for any purpose and without fee is hereby granted,
8fa2b3b63Smrgprovided that the above copyright notice appear in all copies and that
9fa2b3b63Smrgboth that copyright notice and this permission notice appear in
10fa2b3b63Smrgsupporting documentation, and that the name of Digital not be
11fa2b3b63Smrgused in advertising or publicity pertaining to distribution of the
12fa2b3b63Smrgsoftware without specific, written prior permission.
13fa2b3b63Smrg
14fa2b3b63SmrgDIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15fa2b3b63SmrgALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16fa2b3b63SmrgDIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17fa2b3b63SmrgANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18fa2b3b63SmrgWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19fa2b3b63SmrgARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20fa2b3b63SmrgSOFTWARE.
21fa2b3b63Smrg
22fa2b3b63Smrg******************************************************************/
23fa2b3b63Smrg
24fa2b3b63Smrg#ifndef FONT_H
25fa2b3b63Smrg#define FONT_H
26fa2b3b63Smrg
27fa2b3b63Smrg#ifndef BitmapFormatByteOrderMask
28fa2b3b63Smrg#include	"fsmasks.h"
29fa2b3b63Smrg#endif
30fa2b3b63Smrg
31fa2b3b63Smrg/* data structures */
32fa2b3b63Smrg#ifndef _XTYPEDEF_FONTPTR
33fa2b3b63Smrgtypedef struct _Font *FontPtr;
34fa2b3b63Smrg#define _XTYPEDEF_FONTPTR
35fa2b3b63Smrg#endif
36fa2b3b63Smrg
37fa2b3b63Smrgtypedef struct _FontInfo *FontInfoPtr;
38fa2b3b63Smrgtypedef struct _FontProp *FontPropPtr;
39fa2b3b63Smrgtypedef struct _ExtentInfo *ExtentInfoPtr;
40fa2b3b63Smrgtypedef struct _FontPathElement *FontPathElementPtr;
41fa2b3b63Smrg
42fa2b3b63Smrg#ifndef _XTYPEDEF_CHARINFOPTR
43fa2b3b63Smrgtypedef struct _CharInfo *CharInfoPtr;
44fa2b3b63Smrg#define _XTYPEDEF_CHARINFOPTR
45fa2b3b63Smrg#endif
46fa2b3b63Smrg
47fa2b3b63Smrgtypedef struct _FontNames *FontNamesPtr;
48fa2b3b63Smrgtypedef struct _FontResolution *FontResolutionPtr;
49fa2b3b63Smrg
50fa2b3b63Smrg#define NullCharInfo	((CharInfoPtr) 0)
51fa2b3b63Smrg#define NullFont	((FontPtr) 0)
52fa2b3b63Smrg#define NullFontInfo	((FontInfoPtr) 0)
53fa2b3b63Smrg
54fa2b3b63Smrg /* draw direction */
55fa2b3b63Smrg#define LeftToRight 0
56fa2b3b63Smrg#define RightToLeft 1
57fa2b3b63Smrg#define BottomToTop 2
58fa2b3b63Smrg#define TopToBottom 3
59fa2b3b63Smrgtypedef int DrawDirection;
60fa2b3b63Smrg
61fa2b3b63Smrg#define NO_SUCH_CHAR	-1
62fa2b3b63Smrg
63fa2b3b63Smrg#define	FontAliasType	0x1000
64fa2b3b63Smrg
65fa2b3b63Smrg#define	AllocError	80
66fa2b3b63Smrg#define	StillWorking	81
67fa2b3b63Smrg#define	FontNameAlias	82
68fa2b3b63Smrg#define	BadFontName	83
69fa2b3b63Smrg#define	Suspended	84
70fa2b3b63Smrg#define	Successful	85
71fa2b3b63Smrg#define	BadFontPath	86
72fa2b3b63Smrg#define	BadCharRange	87
73fa2b3b63Smrg#define	BadFontFormat	88
74e24f450bSmrg#define	FPEResetFailed	89      /* for when an FPE reset won't work */
75fa2b3b63Smrg
76fa2b3b63Smrg/* OpenFont flags */
77fa2b3b63Smrg#define FontLoadInfo	0x0001
78fa2b3b63Smrg#define FontLoadProps	0x0002
79fa2b3b63Smrg#define FontLoadMetrics	0x0004
80fa2b3b63Smrg#define FontLoadBitmaps	0x0008
81fa2b3b63Smrg#define FontLoadAll	0x000f
82fa2b3b63Smrg#define	FontOpenSync	0x0010
83fa2b3b63Smrg#define FontReopen	0x0020
84fa2b3b63Smrg
85fa2b3b63Smrg/* Query flags */
86fa2b3b63Smrg#define	LoadAll		0x1
87fa2b3b63Smrg#define	FinishRamge	0x2
88fa2b3b63Smrg#define       EightBitFont    0x4
89fa2b3b63Smrg#define       SixteenBitFont  0x8
90fa2b3b63Smrg
91fa2b3b63Smrg/* Glyph Caching Modes */
92fa2b3b63Smrg#define CACHING_OFF 0
93fa2b3b63Smrg#define CACHE_16_BIT_GLYPHS 1
94fa2b3b63Smrg#define CACHE_ALL_GLYPHS 2
95fa2b3b63Smrg#define DEFAULT_GLYPH_CACHING_MODE CACHE_16_BIT_GLYPHS
96fa2b3b63Smrgextern int glyphCachingMode;
97fa2b3b63Smrg
98fa2b3b63Smrgstruct _Client;
99fa2b3b63Smrg
100fa2b3b63Smrgextern int StartListFontsWithInfo(
101e24f450bSmrg    struct _Client * /*client */,
102e24f450bSmrg    int /* length */,
103e24f450bSmrg    unsigned char * /* pattern */,
104e24f450bSmrg    int /* max_names */
105fa2b3b63Smrg);
106fa2b3b63Smrg
107fa2b3b63Smrgextern FontNamesPtr MakeFontNamesRecord(
108fa2b3b63Smrg    unsigned /* size */
109fa2b3b63Smrg);
110fa2b3b63Smrg
111fa2b3b63Smrgextern void FreeFontNames(
112e24f450bSmrg    FontNamesPtr /* pFN */
113fa2b3b63Smrg);
114fa2b3b63Smrg
115e24f450bSmrgextern int AddFontNamesName(
116fa2b3b63Smrg    FontNamesPtr /* names */,
117fa2b3b63Smrg    char * /* name */,
118fa2b3b63Smrg    int /* length */
119fa2b3b63Smrg);
120fa2b3b63Smrg
121e24f450bSmrg#if 0                           /* unused */
122e24f450bSmrgextern int FontToFSError();
123fa2b3b63Smrgextern FontResolutionPtr GetClientResolution();
124fa2b3b63Smrg#endif
125fa2b3b63Smrg
126e24f450bSmrgtypedef struct _FontPatternCache *FontPatternCachePtr;
127fa2b3b63Smrg
128e24f450bSmrgextern FontPatternCachePtr MakeFontPatternCache(void);
129fa2b3b63Smrg
130e24f450bSmrgextern void FreeFontPatternCache(
131fa2b3b63Smrg    FontPatternCachePtr /* cache */
132fa2b3b63Smrg);
133fa2b3b63Smrg
134e24f450bSmrgextern void EmptyFontPatternCache(
135fa2b3b63Smrg    FontPatternCachePtr /* cache */
136fa2b3b63Smrg);
137fa2b3b63Smrg
138e24f450bSmrgextern void CacheFontPattern(
139fa2b3b63Smrg    FontPatternCachePtr /* cache */,
140fa2b3b63Smrg    const char * /* pattern */,
141fa2b3b63Smrg    int /* patlen */,
142fa2b3b63Smrg    FontPtr /* pFont */
143fa2b3b63Smrg);
144fa2b3b63Smrgextern FontResolutionPtr GetClientResolutions(
145fa2b3b63Smrg    int * /* num */
146fa2b3b63Smrg);
147fa2b3b63Smrg
148e24f450bSmrgextern FontPtr FindCachedFontPattern(
149fa2b3b63Smrg    FontPatternCachePtr /* cache */,
150fa2b3b63Smrg    const char * /* pattern */,
151fa2b3b63Smrg    int /* patlen */
152fa2b3b63Smrg);
153fa2b3b63Smrg
154e24f450bSmrgextern void RemoveCachedFontPattern(
155fa2b3b63Smrg    FontPatternCachePtr /* cache */,
156fa2b3b63Smrg    FontPtr /* pFont */
157fa2b3b63Smrg);
158fa2b3b63Smrg
159fa2b3b63Smrgtypedef enum {
160fa2b3b63Smrg    Linear8Bit, TwoD8Bit, Linear16Bit, TwoD16Bit
161e24f450bSmrg} FontEncoding;
162fa2b3b63Smrg
163e24f450bSmrg#endif                          /* FONT_H */
164