xref: /OK3568_Linux_fs/external/xserver/include/dixfontstr.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /***********************************************************
2*4882a593Smuzhiyun Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
3*4882a593Smuzhiyun 
4*4882a593Smuzhiyun                         All Rights Reserved
5*4882a593Smuzhiyun 
6*4882a593Smuzhiyun Permission to use, copy, modify, and distribute this software and its
7*4882a593Smuzhiyun documentation for any purpose and without fee is hereby granted,
8*4882a593Smuzhiyun provided that the above copyright notice appear in all copies and that
9*4882a593Smuzhiyun both that copyright notice and this permission notice appear in
10*4882a593Smuzhiyun supporting documentation, and that the name of Digital not be
11*4882a593Smuzhiyun used in advertising or publicity pertaining to distribution of the
12*4882a593Smuzhiyun software without specific, written prior permission.
13*4882a593Smuzhiyun 
14*4882a593Smuzhiyun DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
15*4882a593Smuzhiyun ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
16*4882a593Smuzhiyun DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
17*4882a593Smuzhiyun ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
18*4882a593Smuzhiyun WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
19*4882a593Smuzhiyun ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
20*4882a593Smuzhiyun SOFTWARE.
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun ******************************************************************/
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun #ifndef DIXFONTSTRUCT_H
25*4882a593Smuzhiyun #define DIXFONTSTRUCT_H
26*4882a593Smuzhiyun 
27*4882a593Smuzhiyun #include "servermd.h"
28*4882a593Smuzhiyun #include "dixfont.h"
29*4882a593Smuzhiyun #include <X11/fonts/fontstruct.h>
30*4882a593Smuzhiyun #include <X11/fonts/libxfont2.h>
31*4882a593Smuzhiyun #include "closure.h"
32*4882a593Smuzhiyun #include <X11/Xproto.h>         /* for xQueryFontReply */
33*4882a593Smuzhiyun 
34*4882a593Smuzhiyun #define FONTCHARSET(font)	  (font)
35*4882a593Smuzhiyun #define FONTMAXBOUNDS(font,field) (font)->info.maxbounds.field
36*4882a593Smuzhiyun #define FONTMINBOUNDS(font,field) (font)->info.minbounds.field
37*4882a593Smuzhiyun #define TERMINALFONT(font)	  (font)->info.terminalFont
38*4882a593Smuzhiyun #define FONTASCENT(font)	  (font)->info.fontAscent
39*4882a593Smuzhiyun #define FONTDESCENT(font)	  (font)->info.fontDescent
40*4882a593Smuzhiyun #define FONTGLYPHS(font)	  0
41*4882a593Smuzhiyun #define FONTCONSTMETRICS(font)	  (font)->info.constantMetrics
42*4882a593Smuzhiyun #define FONTCONSTWIDTH(font)	  (font)->info.constantWidth
43*4882a593Smuzhiyun #define FONTALLEXIST(font)	  (font)->info.allExist
44*4882a593Smuzhiyun #define FONTFIRSTCOL(font)	  (font)->info.firstCol
45*4882a593Smuzhiyun #define FONTLASTCOL(font)	  (font)->info.lastCol
46*4882a593Smuzhiyun #define FONTFIRSTROW(font)	  (font)->info.firstRow
47*4882a593Smuzhiyun #define FONTLASTROW(font)	  (font)->info.lastRow
48*4882a593Smuzhiyun #define FONTDEFAULTCH(font)	  (font)->info.defaultCh
49*4882a593Smuzhiyun #define FONTINKMIN(font)	  (&((font)->info.ink_minbounds))
50*4882a593Smuzhiyun #define FONTINKMAX(font)	  (&((font)->info.ink_maxbounds))
51*4882a593Smuzhiyun #define FONTPROPS(font)		  (font)->info.props
52*4882a593Smuzhiyun #define FONTGLYPHBITS(base,pci)	  ((unsigned char *) (pci)->bits)
53*4882a593Smuzhiyun #define FONTINFONPROPS(font)	  (font)->info.nprops
54*4882a593Smuzhiyun 
55*4882a593Smuzhiyun /* some things haven't changed names, but we'll be careful anyway */
56*4882a593Smuzhiyun 
57*4882a593Smuzhiyun #define FONTREFCNT(font)	  (font)->refcnt
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun /*
60*4882a593Smuzhiyun  * for linear char sets
61*4882a593Smuzhiyun  */
62*4882a593Smuzhiyun #define N1dChars(pfont)	(FONTLASTCOL(pfont) - FONTFIRSTCOL(pfont) + 1)
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun /*
65*4882a593Smuzhiyun  * for 2D char sets
66*4882a593Smuzhiyun  */
67*4882a593Smuzhiyun #define N2dChars(pfont)	(N1dChars(pfont) * \
68*4882a593Smuzhiyun 			 (FONTLASTROW(pfont) - FONTFIRSTROW(pfont) + 1))
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #ifndef GLYPHPADBYTES
71*4882a593Smuzhiyun #define GLYPHPADBYTES -1
72*4882a593Smuzhiyun #endif
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun #if GLYPHPADBYTES == 0 || GLYPHPADBYTES == 1
75*4882a593Smuzhiyun #define	GLYPHWIDTHBYTESPADDED(pci)	(GLYPHWIDTHBYTES(pci))
76*4882a593Smuzhiyun #define	PADGLYPHWIDTHBYTES(w)		(((w)+7)>>3)
77*4882a593Smuzhiyun #endif
78*4882a593Smuzhiyun 
79*4882a593Smuzhiyun #if GLYPHPADBYTES == 2
80*4882a593Smuzhiyun #define	GLYPHWIDTHBYTESPADDED(pci)	((GLYPHWIDTHBYTES(pci)+1) & ~0x1)
81*4882a593Smuzhiyun #define	PADGLYPHWIDTHBYTES(w)		(((((w)+7)>>3)+1) & ~0x1)
82*4882a593Smuzhiyun #endif
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun #if GLYPHPADBYTES == 4
85*4882a593Smuzhiyun #define	GLYPHWIDTHBYTESPADDED(pci)	((GLYPHWIDTHBYTES(pci)+3) & ~0x3)
86*4882a593Smuzhiyun #define	PADGLYPHWIDTHBYTES(w)		(((((w)+7)>>3)+3) & ~0x3)
87*4882a593Smuzhiyun #endif
88*4882a593Smuzhiyun 
89*4882a593Smuzhiyun #if GLYPHPADBYTES == 8          /* for a cray? */
90*4882a593Smuzhiyun #define	GLYPHWIDTHBYTESPADDED(pci)	((GLYPHWIDTHBYTES(pci)+7) & ~0x7)
91*4882a593Smuzhiyun #define	PADGLYPHWIDTHBYTES(w)		(((((w)+7)>>3)+7) & ~0x7)
92*4882a593Smuzhiyun #endif
93*4882a593Smuzhiyun 
94*4882a593Smuzhiyun #endif                          /* DIXFONTSTRUCT_H */
95