1/*
2 * Copyright 1999 SuSE, Inc.
3 *
4 * Permission to use, copy, modify, distribute, and sell this software and its
5 * documentation for any purpose is hereby granted without fee, provided that
6 * the above copyright notice appear in all copies and that both that
7 * copyright notice and this permission notice appear in supporting
8 * documentation, and that the name of SuSE not be used in advertising or
9 * publicity pertaining to distribution of the software without specific,
10 * written prior permission.  SuSE makes no representations about the
11 * suitability of this software for any purpose.  It is provided "as is"
12 * without express or implied warranty.
13 *
14 * SuSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL SuSE
16 * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
18 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
19 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20 *
21 * Author:  Keith Packard, SuSE, Inc.
22 */
23
24#ifdef HAVE_CONFIG_H
25#include <config.h>
26#endif
27#include    <X11/fonts/fntfilst.h>
28#include    <X11/fonts/fontutil.h>
29#include    <X11/fonts/pcf.h>
30#include    "builtin.h"
31
32static int
33BuiltinOpenBitmap (FontPathElementPtr fpe, FontPtr *ppFont, int	flags,
34		   FontEntryPtr entry, char *fileName, fsBitmapFormat format,
35		   fsBitmapFormatMask fmask, FontPtr unused)
36{
37    FontFilePtr	file;
38    FontPtr     pFont;
39    int         ret;
40    int         bit,
41                byte,
42                glyph,
43                scan,
44		image;
45
46    file = BuiltinFileOpen (fileName);
47    if (!file)
48	return BadFontName;
49    pFont = malloc(sizeof(FontRec));
50    if (!pFont) {
51	BuiltinFileClose (file, 0);
52	return AllocError;
53    }
54    /* set up default values */
55    FontDefaultFormat(&bit, &byte, &glyph, &scan);
56    /* get any changes made from above */
57    ret = CheckFSFormat(format, fmask, &bit, &byte, &scan, &glyph, &image);
58
59    /* Fill in font record. Data format filled in by reader. */
60    pFont->refcnt = 0;
61    pFont->maxPrivate = -1;
62    pFont->devPrivates = (pointer *) 0;
63
64    ret = pcfReadFont (pFont, file, bit, byte, glyph, scan);
65
66    BuiltinFileClose (file, 0);
67    if (ret != Successful)
68	free(pFont);
69    else
70	*ppFont = pFont;
71    return ret;
72}
73
74static int
75BuiltinGetInfoBitmap (FontPathElementPtr fpe, FontInfoPtr pFontInfo,
76		      FontEntryPtr entry, char *fileName)
77{
78    FontFilePtr file;
79    int		ret;
80
81    file = BuiltinFileOpen (fileName);
82    if (!file)
83	return BadFontName;
84    ret = pcfReadFontInfo (pFontInfo, file);
85    BuiltinFileClose (file, 0);
86    return ret;
87}
88
89static int
90BuiltinOpenScalable (FontPathElementPtr fpe,
91		     FontPtr *pFont,
92		     int flags,
93		     FontEntryPtr entry,
94		     char *fileName,
95		     FontScalablePtr vals,
96		     fsBitmapFormat format,
97		     fsBitmapFormatMask fmask,
98		     FontPtr non_cachable_font)	/* We don't do licensing */
99{
100    return BadFontName;
101}
102
103static int
104BuiltinGetInfoScalable (FontPathElementPtr fpe,
105			FontInfoPtr pFontInfo,
106			FontEntryPtr entry,
107			FontNamePtr fontName,
108			char *fileName,
109			FontScalablePtr vals)
110{
111    return BadFontName;
112}
113
114static FontRendererRec renderers[] = {
115    { ".builtin", 8,
116    BuiltinOpenBitmap,
117    BuiltinOpenScalable,
118    BuiltinGetInfoBitmap,
119    BuiltinGetInfoScalable,
120    0 }
121};
122
123#define numRenderers	(sizeof renderers / sizeof renderers[0])
124
125void
126BuiltinRegisterFontFileFunctions(void)
127{
128    int	i;
129    for (i = 0; i < numRenderers; i++)
130	FontFileRegisterRenderer ((FontRendererRec *) &renderers[i]);
131}
132
133