diff options
author | Alexander Larsson <alla@lysator.liu.se> | 2001-11-18 16:06:02 +0000 |
---|---|---|
committer | Alexander Larsson <alexl@src.gnome.org> | 2001-11-18 16:06:02 +0000 |
commit | 0766534429b5830716e782418179ea63f8f1f65d (patch) | |
tree | 1ab6b8c50e572af8320c8f3623b8135276c010f6 /pango/mini-xft/minixftdir.c | |
parent | b12c0fb6263fd542bb03f8bb10076a0653694f12 (diff) | |
download | pango-0766534429b5830716e782418179ea63f8f1f65d.tar.gz |
Check for LEX and YACC. This will be made optional later, with the build
2001-11-17 Alexander Larsson <alla@lysator.liu.se>
* configure.in:
Check for LEX and YACC. This will be made optional later,
with the build sources checked in to cvs.
Generate pango/mini-xft/Makefile
* modules/basic/basic-ft2.c:
Use the new pangoft2 API.
* pango/Makefile.am:
Build mini-xft.
Add new files.
* pango/pango-context.[ch]:
Support only one fontmap per context.
Use pango_font_map_load_fontset() and PangoFontset instead
of internal fontset.
* pango/pango-fontmap.[ch]:
New virtual function pango_font_map_load_fontset() and
default implementation that uses pango_font_map_load_font().
* pango/pango-utils.[ch] (pango_lookup_aliases):
Utility function for looking up aliases. This can be
used by backend that has no backend specific aliases.
* pango/pangoft2-fontcache.c:
Removed file.
* pango/pangoft2-fontmap.c:
* pango/pangoft2-private.h:
* pango/pangoft2.c:
* pango/pangoft2.h:
Major rewrite. Doesn't handle fontsets. Uses mini-xft so that
it will always match the PangoXft backend. Simplified the
public API.
* pango/pangowin32.c:
* pango/pangox.c:
pango_context_add_font_map -> pango_context_set_font_map
* pango/pangoxft-font.c:
* pango/pangoxft-fontmap.c:
* pango/pangoxft-private.h:
New code to handle fontsets.
* pango/mini-xft/*:
Mini version of libXft from XFree86 in order to have
the pangoFT2 and pangXft backends have same config files and
generate the same fonts.
Diffstat (limited to 'pango/mini-xft/minixftdir.c')
-rw-r--r-- | pango/mini-xft/minixftdir.c | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/pango/mini-xft/minixftdir.c b/pango/mini-xft/minixftdir.c new file mode 100644 index 00000000..c6eacb10 --- /dev/null +++ b/pango/mini-xft/minixftdir.c @@ -0,0 +1,136 @@ +/* + * $XFree86: xc/lib/MiniXft/xftdir.c,v 1.3 2001/05/16 10:32:54 keithp Exp $ + * + * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc. + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation, and that the name of Keith Packard not be used in + * advertising or publicity pertaining to distribution of the software without + * specific, written prior permission. Keith Packard makes no + * representations about the suitability of this software for any purpose. It + * is provided "as is" without express or implied warranty. + * + * KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO + * EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> +#include <dirent.h> +#include <stdlib.h> +#include <string.h> +#include "minixftint.h" + +Bool +MiniXftDirScan (MiniXftFontSet *set, const char *dir, Bool force) +{ + DIR *d; + struct dirent *e; + char *file; + char *base; + MiniXftPattern *font; + char *name; + int count; + Bool ret = True; + int id; + + file = (char *) malloc (strlen (dir) + 1 + 256 + 1); + if (!file) + return False; + + strcpy (file, dir); + strcat (file, "/"); + base = file + strlen (file); + if (!force) + { + strcpy (base, "MiniXftCache"); + + if (MiniXftFileCacheReadDir (set, file)) + { + free (file); + return True; + } + } + + d = opendir (dir); + if (!d) + { + free (file); + return False; + } + while (ret && (e = readdir (d))) + { + if (e->d_name[0] != '.') + { + id = 0; + strcpy (base, e->d_name); + do + { + if (!force) + name = MiniXftFileCacheFind (file, id, &count); + else + name = 0; + if (name) + { + font = MiniXftNameParse (name); + if (font) + MiniXftPatternAddString (font, XFT_FILE, file); + } + else + { + font = MiniXftFreeTypeQuery (file, id, &count); + if (font && !force) + { + char unparse[8192]; + + if (MiniXftNameUnparse (font, unparse, sizeof (unparse))) + { + (void) MiniXftFileCacheUpdate (file, id, unparse); + } + } + } + if (font) + { + if (!MiniXftFontSetAdd (set, font)) + { + MiniXftPatternDestroy (font); + font = 0; + ret = False; + } + } + id++; + } while (font && ret && id < count); + } + } + free (file); + closedir (d); + return ret; +} + +Bool +MiniXftDirSave (MiniXftFontSet *set, const char *dir) +{ + char *file; + char *base; + Bool ret; + + file = (char *) malloc (strlen (dir) + 1 + 256 + 1); + if (!file) + return False; + + strcpy (file, dir); + strcat (file, "/"); + base = file + strlen (file); + strcpy (base, "MiniXftCache"); + ret = MiniXftFileCacheWriteDir (set, file); + free (file); + return ret; +} + |