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
32 static int
BuiltinOpenBitmap(FontPathElementPtr fpe,FontPtr * ppFont,int flags,FontEntryPtr entry,char * fileName,fsBitmapFormat format,fsBitmapFormatMask fmask,FontPtr unused)33 BuiltinOpenBitmap (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
74 static int
BuiltinGetInfoBitmap(FontPathElementPtr fpe,FontInfoPtr pFontInfo,FontEntryPtr entry,char * fileName)75 BuiltinGetInfoBitmap (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
89 static int
BuiltinOpenScalable(FontPathElementPtr fpe,FontPtr * pFont,int flags,FontEntryPtr entry,char * fileName,FontScalablePtr vals,fsBitmapFormat format,fsBitmapFormatMask fmask,FontPtr non_cachable_font)90 BuiltinOpenScalable (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
103 static int
BuiltinGetInfoScalable(FontPathElementPtr fpe,FontInfoPtr pFontInfo,FontEntryPtr entry,FontNamePtr fontName,char * fileName,FontScalablePtr vals)104 BuiltinGetInfoScalable (FontPathElementPtr fpe,
105 FontInfoPtr pFontInfo,
106 FontEntryPtr entry,
107 FontNamePtr fontName,
108 char *fileName,
109 FontScalablePtr vals)
110 {
111 return BadFontName;
112 }
113
114 static 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
125 void
BuiltinRegisterFontFileFunctions(void)126 BuiltinRegisterFontFileFunctions(void)
127 {
128 int i;
129 for (i = 0; i < numRenderers; i++)
130 FontFileRegisterRenderer ((FontRendererRec *) &renderers[i]);
131 }
132
133