render.c revision a96d7823
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 "libxfontint.h" 28#include <X11/fonts/fntfilst.h> 29#include <X11/fonts/fontutil.h> 30#include <X11/fonts/pcf.h> 31#include "builtin.h" 32 33static int 34BuiltinOpenBitmap (FontPathElementPtr fpe, FontPtr *ppFont, int flags, 35 FontEntryPtr entry, char *fileName, fsBitmapFormat format, 36 fsBitmapFormatMask fmask, FontPtr unused) 37{ 38 FontFilePtr file; 39 FontPtr pFont; 40 int ret; 41 int bit, 42 byte, 43 glyph, 44 scan, 45 image; 46 47 file = BuiltinFileOpen (fileName); 48 if (!file) 49 return BadFontName; 50 pFont = malloc(sizeof(FontRec)); 51 if (!pFont) { 52 BuiltinFileClose (file, 0); 53 return AllocError; 54 } 55 /* set up default values */ 56 FontDefaultFormat(&bit, &byte, &glyph, &scan); 57 /* get any changes made from above */ 58 ret = CheckFSFormat(format, fmask, &bit, &byte, &scan, &glyph, &image); 59 60 /* Fill in font record. Data format filled in by reader. */ 61 pFont->refcnt = 0; 62 pFont->maxPrivate = -1; 63 pFont->devPrivates = (pointer *) 0; 64 65 ret = pcfReadFont (pFont, file, bit, byte, glyph, scan); 66 67 BuiltinFileClose (file, 0); 68 if (ret != Successful) 69 free(pFont); 70 else 71 *ppFont = pFont; 72 return ret; 73} 74 75static int 76BuiltinGetInfoBitmap (FontPathElementPtr fpe, FontInfoPtr pFontInfo, 77 FontEntryPtr entry, char *fileName) 78{ 79 FontFilePtr file; 80 int ret; 81 82 file = BuiltinFileOpen (fileName); 83 if (!file) 84 return BadFontName; 85 ret = pcfReadFontInfo (pFontInfo, file); 86 BuiltinFileClose (file, 0); 87 return ret; 88} 89 90static int 91BuiltinOpenScalable (FontPathElementPtr fpe, 92 FontPtr *pFont, 93 int flags, 94 FontEntryPtr entry, 95 char *fileName, 96 FontScalablePtr vals, 97 fsBitmapFormat format, 98 fsBitmapFormatMask fmask, 99 FontPtr non_cachable_font) /* We don't do licensing */ 100{ 101 return BadFontName; 102} 103 104static int 105BuiltinGetInfoScalable (FontPathElementPtr fpe, 106 FontInfoPtr pFontInfo, 107 FontEntryPtr entry, 108 FontNamePtr fontName, 109 char *fileName, 110 FontScalablePtr vals) 111{ 112 return BadFontName; 113} 114 115static FontRendererRec renderers[] = { 116 { ".builtin", 8, 117 BuiltinOpenBitmap, 118 BuiltinOpenScalable, 119 BuiltinGetInfoBitmap, 120 BuiltinGetInfoScalable, 121 0 } 122}; 123 124#define numRenderers (sizeof renderers / sizeof renderers[0]) 125 126void 127BuiltinRegisterFontFileFunctions(void) 128{ 129 int i; 130 for (i = 0; i < numRenderers; i++) 131 FontFileRegisterRenderer ((FontRendererRec *) &renderers[i]); 132} 133 134