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