fontxlfd.h revision fa2b3b63
1fa2b3b63Smrg/*
2fa2b3b63Smrg
3fa2b3b63SmrgCopyright 1990, 1994, 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
12fa2b3b63Smrgin all copies or substantial portions of the Software.
13fa2b3b63Smrg
14fa2b3b63SmrgTHE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15fa2b3b63SmrgOR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16fa2b3b63SmrgMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17fa2b3b63SmrgIN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
18fa2b3b63SmrgOTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19fa2b3b63SmrgARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20fa2b3b63SmrgOTHER DEALINGS IN THE SOFTWARE.
21fa2b3b63Smrg
22fa2b3b63SmrgExcept as contained in this notice, the name of The Open Group shall
23fa2b3b63Smrgnot be used in advertising or otherwise to promote the sale, use or
24fa2b3b63Smrgother dealings in this Software without prior written authorization
25fa2b3b63Smrgfrom The Open Group.
26fa2b3b63Smrg
27fa2b3b63Smrg*/
28fa2b3b63Smrg
29fa2b3b63Smrg/*
30fa2b3b63Smrg * Author:  Keith Packard, MIT X Consortium
31fa2b3b63Smrg */
32fa2b3b63Smrg
33fa2b3b63Smrg#ifndef _FONTXLFD_H_
34fa2b3b63Smrg#define _FONTXLFD_H_
35fa2b3b63Smrg
36fa2b3b63Smrg#include <X11/fonts/FSproto.h>
37fa2b3b63Smrg
38fa2b3b63Smrg/* Constants for values_supplied bitmap */
39fa2b3b63Smrg
40fa2b3b63Smrg#define SIZE_SPECIFY_MASK		0xf
41fa2b3b63Smrg
42fa2b3b63Smrg#define PIXELSIZE_MASK			0x3
43fa2b3b63Smrg#define PIXELSIZE_UNDEFINED		0
44fa2b3b63Smrg#define PIXELSIZE_SCALAR		0x1
45fa2b3b63Smrg#define PIXELSIZE_ARRAY			0x2
46fa2b3b63Smrg#define PIXELSIZE_SCALAR_NORMALIZED	0x3	/* Adjusted for resolution */
47fa2b3b63Smrg
48fa2b3b63Smrg#define POINTSIZE_MASK			0xc
49fa2b3b63Smrg#define POINTSIZE_UNDEFINED		0
50fa2b3b63Smrg#define POINTSIZE_SCALAR		0x4
51fa2b3b63Smrg#define POINTSIZE_ARRAY			0x8
52fa2b3b63Smrg
53fa2b3b63Smrg#define PIXELSIZE_WILDCARD		0x10
54fa2b3b63Smrg#define POINTSIZE_WILDCARD		0x20
55fa2b3b63Smrg
56fa2b3b63Smrg#define ENHANCEMENT_SPECIFY_MASK	0x40
57fa2b3b63Smrg
58fa2b3b63Smrg#define CHARSUBSET_SPECIFIED		0x40
59fa2b3b63Smrg
60fa2b3b63Smrg#define EPS		1.0e-20
61fa2b3b63Smrg#define XLFD_NDIGITS	3		/* Round numbers in pixel and
62fa2b3b63Smrg					   point arrays to this many
63fa2b3b63Smrg					   digits for repeatability */
64fa2b3b63Smrg
65fa2b3b63Smrgtypedef struct _FontScalable {
66fa2b3b63Smrg    int		values_supplied;	/* Bitmap identifying what advanced
67fa2b3b63Smrg					   capabilities or enhancements
68fa2b3b63Smrg					   were specified in the font name */
69fa2b3b63Smrg    double	pixel_matrix[4];
70fa2b3b63Smrg    double	point_matrix[4];
71fa2b3b63Smrg
72fa2b3b63Smrg    /* Pixel and point fields are deprecated in favor of the
73fa2b3b63Smrg       transformation matrices.  They are provided and filled in for the
74fa2b3b63Smrg       benefit of rasterizers that do not handle the matrices.  */
75fa2b3b63Smrg
76fa2b3b63Smrg    int		pixel,
77fa2b3b63Smrg		point;
78fa2b3b63Smrg
79fa2b3b63Smrg    int         x,
80fa2b3b63Smrg                y,
81fa2b3b63Smrg                width;
82fa2b3b63Smrg    char	*xlfdName;
83fa2b3b63Smrg    int		nranges;
84fa2b3b63Smrg    fsRange	*ranges;
85fa2b3b63Smrg}           FontScalableRec, *FontScalablePtr;
86fa2b3b63Smrg
87fa2b3b63Smrg
88fa2b3b63Smrgextern double xlfd_round_double ( double x );
89fa2b3b63Smrgextern Bool FontParseXLFDName ( char *fname, FontScalablePtr vals, int subst );
90fa2b3b63Smrgextern fsRange *FontParseRanges ( char *name, int *nranges );
91fa2b3b63Smrg
92fa2b3b63Smrg#define FONT_XLFD_REPLACE_NONE	0
93fa2b3b63Smrg#define FONT_XLFD_REPLACE_STAR	1
94fa2b3b63Smrg#define FONT_XLFD_REPLACE_ZERO	2
95fa2b3b63Smrg#define FONT_XLFD_REPLACE_VALUE	3
96fa2b3b63Smrg
97fa2b3b63Smrg#endif				/* _FONTXLFD_H_ */
98