aboutsummaryrefslogtreecommitdiff
path: root/libXfont/src
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2009-07-25 13:45:56 +0000
committermarha <marha@users.sourceforge.net>2009-07-25 13:45:56 +0000
commit2fb179f86b0f9ecb7876759b87f9c64634a3f114 (patch)
tree351df3c4d5648356980bc078544e25820e4d26fc /libXfont/src
parenta7be905cf4423239285228d4e23caf2172adfa8b (diff)
downloadvcxsrv-2fb179f86b0f9ecb7876759b87f9c64634a3f114.tar.gz
vcxsrv-2fb179f86b0f9ecb7876759b87f9c64634a3f114.tar.bz2
vcxsrv-2fb179f86b0f9ecb7876759b87f9c64634a3f114.zip
Added libXfont-1.4.0.tar.gz.
Diffstat (limited to 'libXfont/src')
-rw-r--r--libXfont/src/FreeType/Makefile.in46
-rw-r--r--libXfont/src/FreeType/ft.h4
-rw-r--r--libXfont/src/FreeType/ftenc.c6
-rw-r--r--libXfont/src/FreeType/ftfuncs.c133
-rw-r--r--libXfont/src/FreeType/fttools.c6
-rw-r--r--libXfont/src/FreeType/xttcap.c43
-rw-r--r--libXfont/src/FreeType/xttcap.h4
-rw-r--r--libXfont/src/Makefile.am16
-rw-r--r--libXfont/src/Makefile.in71
-rw-r--r--libXfont/src/Speedo/Makefile.am34
-rw-r--r--libXfont/src/Speedo/Makefile.in497
-rw-r--r--libXfont/src/Speedo/adobe-iso.h200
-rw-r--r--libXfont/src/Speedo/bics-iso.h224
-rw-r--r--libXfont/src/Speedo/bics-unicode.c138
-rw-r--r--libXfont/src/Speedo/bics-unicode.h3
-rw-r--r--libXfont/src/Speedo/do_char.c809
-rw-r--r--libXfont/src/Speedo/do_trns.c498
-rw-r--r--libXfont/src/Speedo/keys.h56
-rw-r--r--libXfont/src/Speedo/out_bl2d.c772
-rw-r--r--libXfont/src/Speedo/out_blk.c706
-rw-r--r--libXfont/src/Speedo/out_outl.c290
-rw-r--r--libXfont/src/Speedo/out_scrn.c1090
-rw-r--r--libXfont/src/Speedo/out_util.c339
-rw-r--r--libXfont/src/Speedo/reset.c129
-rw-r--r--libXfont/src/Speedo/set_spcs.c763
-rw-r--r--libXfont/src/Speedo/set_trns.c1214
-rw-r--r--libXfont/src/Speedo/spdo_prv.h262
-rw-r--r--libXfont/src/Speedo/speedo.h874
-rw-r--r--libXfont/src/Speedo/spencode.c67
-rw-r--r--libXfont/src/Speedo/sperr.c127
-rw-r--r--libXfont/src/Speedo/spfile.c460
-rw-r--r--libXfont/src/Speedo/spfont.c453
-rw-r--r--libXfont/src/Speedo/spfuncs.c167
-rw-r--r--libXfont/src/Speedo/spglyph.c399
-rw-r--r--libXfont/src/Speedo/spinfo.c462
-rw-r--r--libXfont/src/Speedo/spint.h178
-rw-r--r--libXfont/src/Speedo/useropt.h41
-rw-r--r--libXfont/src/Type1/Makefile.am52
-rw-r--r--libXfont/src/Type1/Makefile.in516
-rw-r--r--libXfont/src/Type1/arith.c212
-rw-r--r--libXfont/src/Type1/arith.h71
-rw-r--r--libXfont/src/Type1/blues.h95
-rw-r--r--libXfont/src/Type1/cluts.h35
-rw-r--r--libXfont/src/Type1/curves.c228
-rw-r--r--libXfont/src/Type1/curves.h44
-rw-r--r--libXfont/src/Type1/digit.h64
-rw-r--r--libXfont/src/Type1/fontfcn.c317
-rw-r--r--libXfont/src/Type1/fontfcn.h114
-rw-r--r--libXfont/src/Type1/fonts.h49
-rw-r--r--libXfont/src/Type1/hdigit.h94
-rw-r--r--libXfont/src/Type1/hints.c890
-rw-r--r--libXfont/src/Type1/hints.h48
-rw-r--r--libXfont/src/Type1/lines.c188
-rw-r--r--libXfont/src/Type1/lines.h37
-rw-r--r--libXfont/src/Type1/objects.c944
-rw-r--r--libXfont/src/Type1/objects.h293
-rw-r--r--libXfont/src/Type1/paths.c748
-rw-r--r--libXfont/src/Type1/paths.h205
-rw-r--r--libXfont/src/Type1/pictures.h50
-rw-r--r--libXfont/src/Type1/regions.c1328
-rw-r--r--libXfont/src/Type1/regions.h224
-rw-r--r--libXfont/src/Type1/scanfont.c1526
-rw-r--r--libXfont/src/Type1/spaces.c941
-rw-r--r--libXfont/src/Type1/spaces.h151
-rw-r--r--libXfont/src/Type1/strokes.h38
-rw-r--r--libXfont/src/Type1/t1funcs.c754
-rw-r--r--libXfont/src/Type1/t1hdigit.h40
-rw-r--r--libXfont/src/Type1/t1imager.h84
-rw-r--r--libXfont/src/Type1/t1info.c496
-rw-r--r--libXfont/src/Type1/t1intf.h54
-rw-r--r--libXfont/src/Type1/t1io.c299
-rw-r--r--libXfont/src/Type1/t1malloc.c759
-rw-r--r--libXfont/src/Type1/t1snap.c85
-rw-r--r--libXfont/src/Type1/t1stdio.h94
-rw-r--r--libXfont/src/Type1/t1unicode.c251
-rw-r--r--libXfont/src/Type1/t1unicode.h25
-rw-r--r--libXfont/src/Type1/token.c1208
-rw-r--r--libXfont/src/Type1/token.h79
-rw-r--r--libXfont/src/Type1/tokst.h510
-rw-r--r--libXfont/src/Type1/trig.h41
-rw-r--r--libXfont/src/Type1/type1.c1797
-rw-r--r--libXfont/src/Type1/util.c194
-rw-r--r--libXfont/src/Type1/util.h190
-rw-r--r--libXfont/src/bitmap/Makefile.in46
-rw-r--r--libXfont/src/bitmap/bdfread.c71
-rw-r--r--libXfont/src/bitmap/bdfutils.c8
-rw-r--r--libXfont/src/bitmap/bitmapfunc.c13
-rw-r--r--libXfont/src/bitmap/bitmaputil.c2
-rw-r--r--libXfont/src/bitmap/bitscale.c369
-rw-r--r--libXfont/src/bitmap/pcfread.c327
-rw-r--r--libXfont/src/bitmap/pcfwrite.c6
-rw-r--r--libXfont/src/bitmap/snfread.c62
-rw-r--r--libXfont/src/builtins/Makefile.in46
-rw-r--r--libXfont/src/builtins/dir.c19
-rw-r--r--libXfont/src/builtins/file.c6
-rw-r--r--libXfont/src/builtins/render.c4
-rw-r--r--libXfont/src/fc/Makefile.in46
-rw-r--r--libXfont/src/fc/fsconvert.c21
-rw-r--r--libXfont/src/fc/fserve.c122
-rw-r--r--libXfont/src/fc/fsio.c21
-rw-r--r--libXfont/src/fc/fslibos.h2
-rw-r--r--libXfont/src/fontfile/Makefile.am2
-rw-r--r--libXfont/src/fontfile/Makefile.in67
-rw-r--r--libXfont/src/fontfile/bitsource.c6
-rw-r--r--libXfont/src/fontfile/bufio.c8
-rw-r--r--libXfont/src/fontfile/bunzip2.c6
-rw-r--r--libXfont/src/fontfile/catalogue.c36
-rw-r--r--libXfont/src/fontfile/decompress.c4
-rw-r--r--libXfont/src/fontfile/dirfile.c8
-rw-r--r--libXfont/src/fontfile/ffcheck.c188
-rw-r--r--libXfont/src/fontfile/fileio.c5
-rw-r--r--libXfont/src/fontfile/filewr.c2
-rw-r--r--libXfont/src/fontfile/fontdir.c55
-rw-r--r--libXfont/src/fontfile/fontfile.c85
-rw-r--r--libXfont/src/fontfile/fontscale.c11
-rw-r--r--libXfont/src/fontfile/gunzip.c8
-rw-r--r--libXfont/src/fontfile/printerfont.c178
-rw-r--r--libXfont/src/fontfile/register.c68
-rw-r--r--libXfont/src/fontfile/renderers.c12
-rw-r--r--libXfont/src/stubs/Makefile.am4
-rw-r--r--libXfont/src/stubs/Makefile.in59
-rw-r--r--libXfont/src/stubs/fontmod.c14
-rw-r--r--libXfont/src/stubs/xpstubs.c21
-rw-r--r--libXfont/src/util/Makefile.in46
-rw-r--r--libXfont/src/util/atom.c9
-rw-r--r--libXfont/src/util/fontnames.c32
-rw-r--r--libXfont/src/util/fontutil.c40
-rw-r--r--libXfont/src/util/fontxlfd.c2
-rw-r--r--libXfont/src/util/miscutil.c54
-rw-r--r--libXfont/src/util/patcache.c14
-rw-r--r--libXfont/src/util/private.c11
-rw-r--r--libXfont/src/util/utilbitmap.c6
132 files changed, 640 insertions, 29655 deletions
diff --git a/libXfont/src/FreeType/Makefile.in b/libXfont/src/FreeType/Makefile.in
index 300e3d01f..a9d808efe 100644
--- a/libXfont/src/FreeType/Makefile.in
+++ b/libXfont/src/FreeType/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -46,7 +46,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
libft_la_LIBADD =
am_libft_la_OBJECTS = ftenc.lo ftfuncs.lo fttools.lo xttcap.lo
libft_la_OBJECTS = $(am_libft_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include/X11/fonts
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -77,22 +77,18 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENCODINGSDIR = @ENCODINGSDIR@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
FREETYPE_LIBS = @FREETYPE_LIBS@
FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
@@ -102,17 +98,24 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATH_LIBS = @MATH_LIBS@
MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -122,6 +125,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -135,8 +139,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -169,6 +172,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -181,6 +185,7 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = \
@@ -205,8 +210,8 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -285,8 +290,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -298,8 +303,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -309,13 +314,12 @@ ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
diff --git a/libXfont/src/FreeType/ft.h b/libXfont/src/FreeType/ft.h
index 7560c8dd1..d5d789ec6 100644
--- a/libXfont/src/FreeType/ft.h
+++ b/libXfont/src/FreeType/ft.h
@@ -76,10 +76,6 @@ typedef struct _FTMapping
/* ftfuncs.c */
-#if 0
-void FreeTypeRegisterFontFileFunctions(void);
-#endif
-
/* ftenc.c */
int FTPickMapping(char*, int, char*, FT_Face, FTMappingPtr);
diff --git a/libXfont/src/FreeType/ftenc.c b/libXfont/src/FreeType/ftenc.c
index f6436fc40..27964b003 100644
--- a/libXfont/src/FreeType/ftenc.c
+++ b/libXfont/src/FreeType/ftenc.c
@@ -24,13 +24,7 @@ THE SOFTWARE.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#ifndef FONTMODULE
#include <string.h>
-#else
-#include "Xmd.h"
-#include "Xdefs.h"
-#include "xf86_ansic.h"
-#endif
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/fontutil.h>
diff --git a/libXfont/src/FreeType/ftfuncs.c b/libXfont/src/FreeType/ftfuncs.c
index fff6eec76..47ebac737 100644
--- a/libXfont/src/FreeType/ftfuncs.c
+++ b/libXfont/src/FreeType/ftfuncs.c
@@ -34,14 +34,8 @@ THE SOFTWARE.
#endif
#include <X11/fonts/fontmisc.h>
-#ifndef FONTMODULE
#include <string.h>
#include <math.h>
-#else
-#include "Xmd.h"
-#include "Xdefs.h"
-#include "xf86_ansic.h"
-#endif
#include <ctype.h>
#include <X11/fonts/fntfilst.h>
@@ -200,24 +194,22 @@ FreeTypeOpenFace(FTFacePtr *facep, char *FTFileName, char *realFileName, int fac
}
/* No cached match; need to make a new one */
- face = (FTFacePtr)xalloc(sizeof(FTFaceRec));
- if(face == NULL) {
+ face = calloc(1, sizeof(FTFaceRec));
+ if (face == NULL) {
return AllocError;
}
- memset(face, 0, sizeof(FTFaceRec));
- face->filename = (char*)xalloc(strlen(FTFileName)+1);
- if(face->filename == NULL) {
- xfree(face);
+ face->filename = strdup(FTFileName);
+ if (face->filename == NULL) {
+ free(face);
return AllocError;
}
- strcpy(face->filename, FTFileName);
ftrc = FT_New_Face(ftypeLibrary, realFileName, faceNumber, &face->face);
if(ftrc != 0) {
ErrorF("FreeType: couldn't open face %s: %d\n", FTFileName, ftrc);
- xfree(face->filename);
- xfree(face);
+ free(face->filename);
+ free(face);
return BadFontName;
}
@@ -263,8 +255,8 @@ FreeTypeFreeFace(FTFacePtr face)
}
MUMBLE1("Closing face: %s\n", face->filename);
FT_Done_Face(face->face);
- xfree(face->filename);
- xfree(face);
+ free(face->filename);
+ free(face);
}
}
@@ -423,7 +415,7 @@ FreeTypeOpenInstance(FTInstancePtr *instance_return, FTFacePtr face,
}
/* None matching found */
- instance = (FTInstancePtr)xalloc(sizeof(FTInstanceRec));
+ instance = malloc(sizeof(FTInstanceRec));
if(instance == NULL) {
return AllocError;
}
@@ -458,7 +450,7 @@ FreeTypeOpenInstance(FTInstancePtr *instance_return, FTFacePtr face,
ftrc = FT_New_Size(instance->face->face, &instance->size);
if(ftrc != 0) {
ErrorF("FreeType: couldn't create size object: %d\n", ftrc);
- xfree(instance);
+ free(instance);
return FTtoXReturnCode(ftrc);
}
FreeTypeActivateInstance(instance);
@@ -471,14 +463,14 @@ FreeTypeOpenInstance(FTInstancePtr *instance_return, FTFacePtr face,
int xsize, ysize;
xrc = FTFindSize(face->face, trans, &xsize, &ysize);
if(xrc != Successful) {
- xfree(instance);
+ free(instance);
return xrc;
}
ftrc = FT_Set_Pixel_Sizes(instance->face->face, xsize, ysize);
}
if(ftrc != 0) {
FT_Done_Size(instance->size);
- xfree(instance);
+ free(instance);
return FTtoXReturnCode(ftrc);
}
@@ -575,10 +567,10 @@ FreeTypeFreeInstance(FTInstancePtr instance)
FreeTypeFreeFace(instance->face);
if(instance->charcellMetrics) {
- xfree(instance->charcellMetrics);
+ free(instance->charcellMetrics);
}
if(instance->forceConstantMetrics) {
- xfree(instance->forceConstantMetrics);
+ free(instance->forceConstantMetrics);
}
if(instance->glyphs) {
for(i = 0; i < iceil(instance->nglyphs, FONTSEGMENTSIZE); i++) {
@@ -586,21 +578,21 @@ FreeTypeFreeInstance(FTInstancePtr instance)
for(j = 0; j < FONTSEGMENTSIZE; j++) {
if(instance->available[i][j] ==
FT_AVAILABLE_RASTERISED)
- xfree(instance->glyphs[i][j].bits);
+ free(instance->glyphs[i][j].bits);
}
- xfree(instance->glyphs[i]);
+ free(instance->glyphs[i]);
}
}
- xfree(instance->glyphs);
+ free(instance->glyphs);
}
if(instance->available) {
for(i = 0; i < iceil(instance->nglyphs, FONTSEGMENTSIZE); i++) {
if(instance->available[i])
- xfree(instance->available[i]);
+ free(instance->available[i]);
}
- xfree(instance->available);
+ free(instance->available);
}
- xfree(instance);
+ free(instance);
}
}
@@ -623,38 +615,30 @@ FreeTypeInstanceFindGlyph(unsigned idx_in, int flags, FTInstancePtr instance,
}
if(*available == NULL) {
- *available =
- (int**)xalloc(sizeof(int*) * iceil(instance->nglyphs,
- FONTSEGMENTSIZE));
+ *available = calloc(iceil(instance->nglyphs, FONTSEGMENTSIZE),
+ sizeof(int *));
if(*available == NULL)
return AllocError;
- memset((char*)(*available), 0,
- sizeof(int*) * iceil(instance->nglyphs, FONTSEGMENTSIZE));
}
segment = ifloor(idx, FONTSEGMENTSIZE);
offset = idx - segment * FONTSEGMENTSIZE;
if((*available)[segment] == NULL) {
- (*available)[segment] = (int*)xalloc(sizeof(int) * FONTSEGMENTSIZE);
+ (*available)[segment] = calloc(FONTSEGMENTSIZE, sizeof(int *));
if((*available)[segment] == NULL)
return AllocError;
- memset((char*)(*available)[segment], 0, sizeof(int) * FONTSEGMENTSIZE);
}
if(*glyphs == NULL) {
- *glyphs = (CharInfoPtr*)xalloc(sizeof(CharInfoPtr)*
- iceil(instance->nglyphs,
- FONTSEGMENTSIZE));
+ *glyphs = calloc(iceil(instance->nglyphs, FONTSEGMENTSIZE),
+ sizeof(CharInfoPtr));
if(*glyphs == NULL)
return AllocError;
- memset((char*)(*glyphs), 0,
- sizeof(CharInfoPtr)*iceil(instance->nglyphs, FONTSEGMENTSIZE));
}
if((*glyphs)[segment] == NULL) {
- (*glyphs)[segment]=
- (CharInfoPtr)xalloc(sizeof(CharInfoRec) * FONTSEGMENTSIZE);
+ (*glyphs)[segment] = malloc(sizeof(CharInfoRec) * FONTSEGMENTSIZE);
if((*glyphs)[segment] == NULL)
return AllocError;
}
@@ -1378,10 +1362,9 @@ FreeTypeRasteriseGlyph(unsigned idx, int flags, CharInfoPtr tgp,
bpr = (((wd + (instance->bmfmt.glyph<<3) - 1) >> 3) &
-instance->bmfmt.glyph);
- raster = (char*)xalloc(ht * bpr);
+ raster = calloc(1, ht * bpr);
if(raster == NULL)
return AllocError;
- memset(raster, 0, ht * bpr);
tgp->bits = raster;
@@ -1540,10 +1523,10 @@ FreeTypeFreeFont(FTFontPtr font)
{
FreeTypeFreeInstance(font->instance);
if(font->ranges)
- xfree(font->ranges);
+ free(font->ranges);
if(font->dummy_char.bits)
- xfree(font->dummy_char.bits);
- xfree(font);
+ free(font->dummy_char.bits);
+ free(font);
}
/* Free a font. If freeProps is 0, don't free the properties. */
@@ -1558,8 +1541,8 @@ FreeTypeFreeXFont(FontPtr pFont, int freeProps)
FreeTypeFreeFont(tf);
}
if(freeProps && pFont->info.nprops>0) {
- xfree(pFont->info.isStringProp);
- xfree(pFont->info.props);
+ free(pFont->info.isStringProp);
+ free(pFont->info.props);
}
DestroyFontRec(pFont);
}
@@ -1639,13 +1622,13 @@ FreeTypeAddProperties(FTFontPtr font, FontScalablePtr vals, FontInfoPtr info,
( (font_properties && (post || t1info)) ? 3 : 0 ) +
2; /* type */
- info->props = (FontPropPtr)xalloc(maxprops * sizeof(FontPropRec));
+ info->props = malloc(maxprops * sizeof(FontPropRec));
if(info->props == NULL)
return AllocError;
- info->isStringProp = (char*)xalloc(maxprops);
+ info->isStringProp = malloc(maxprops);
if(info->isStringProp == NULL) {
- xfree(info->props);
+ free(info->props);
return AllocError;
}
@@ -2139,7 +2122,7 @@ restrict_code_range_by_str(int count,unsigned short *refFirstCol,
fflush(stderr);
#endif
nRanges++;
- ranges = (fsRange *)xrealloc(ranges, nRanges*sizeof(*ranges));
+ ranges = realloc(ranges, nRanges*sizeof(*ranges));
if (NULL == ranges)
break;
{
@@ -2170,7 +2153,7 @@ restrict_code_range_by_str(int count,unsigned short *refFirstCol,
}
result=i;
}
- xfree(ranges);
+ free(ranges);
}
return result;
}
@@ -2214,7 +2197,7 @@ FreeTypeSetUpTTCap( char *fileName, FontScalablePtr vals,
int dirLen = p1-fileName;
int baseLen = fileName+len - p2 -1;
- *dynStrRealFileName = (char *)xalloc(dirLen+baseLen+1);
+ *dynStrRealFileName = malloc(dirLen+baseLen+1);
if( *dynStrRealFileName == NULL ) {
result = AllocError;
goto quit;
@@ -2284,7 +2267,7 @@ FreeTypeSetUpTTCap( char *fileName, FontScalablePtr vals,
if( beginptr && 0 < *face_number ) {
char *slash;
*dynStrFTFileName = /* add -> ':'+strlen0+':'+strlen1+'\0' */
- (char *)xalloc(1+strlen(beginptr)+1+strlen(*dynStrRealFileName)+1);
+ malloc(1+strlen(beginptr)+1+strlen(*dynStrRealFileName)+1);
if( *dynStrFTFileName == NULL ){
result = AllocError;
goto quit;
@@ -2309,7 +2292,7 @@ FreeTypeSetUpTTCap( char *fileName, FontScalablePtr vals,
}
}
else{
- *dynStrFTFileName = (char *)xalloc(strlen(*dynStrRealFileName)+1);
+ *dynStrFTFileName = malloc(strlen(*dynStrRealFileName)+1);
if( *dynStrFTFileName == NULL ){
result = AllocError;
goto quit;
@@ -2829,7 +2812,7 @@ FreeTypeLoadFont(FTFontPtr font, FontInfoPtr info, FTFacePtr face,
font->nranges = vals->nranges;
font->ranges = 0;
if(font->nranges) {
- font->ranges = (fsRange*)xalloc(vals->nranges*sizeof(fsRange));
+ font->ranges = malloc(vals->nranges*sizeof(fsRange));
if(font->ranges == NULL)
return AllocError;
memcpy((char*)font->ranges, (char*)vals->ranges,
@@ -3157,12 +3140,11 @@ FreeTypeLoadXFont(char *fileName,
char *dynStrFTFileName = NULL; /* :1:foo.ttc */
char *dynStrTTCapCodeRange = NULL;
- font = (FTFontPtr)xalloc(sizeof(FTFontRec));
+ font = calloc(1, sizeof(FTFontRec));
if(font == NULL) {
xrc = AllocError;
goto quit;
}
- memset(font, 0, sizeof(FTFontRec));
xrc = FreeTypeSetUpTTCap(fileName, vals,
&dynStrRealFileName, &dynStrFTFileName,
@@ -3467,7 +3449,7 @@ FreeTypeLoadXFont(char *fileName,
}
/* header's metrics */
- instance->charcellMetrics = (xCharInfo*)xalloc(sizeof(xCharInfo));
+ instance->charcellMetrics = malloc(sizeof(xCharInfo));
if(instance->charcellMetrics == NULL) {
xrc = AllocError;
goto quit;
@@ -3498,7 +3480,7 @@ FreeTypeLoadXFont(char *fileName,
int c = ins_ttcap->force_c_representative_metrics_char_code;
/* header's metrics */
if( instance->forceConstantMetrics == NULL ){
- instance->forceConstantMetrics = (xCharInfo*)xalloc(sizeof(xCharInfo));
+ instance->forceConstantMetrics = malloc(sizeof(xCharInfo));
if(instance->forceConstantMetrics == NULL) {
xrc = AllocError;
goto quit;
@@ -3638,9 +3620,9 @@ FreeTypeLoadXFont(char *fileName,
}
quit:
- if ( dynStrTTCapCodeRange ) xfree(dynStrTTCapCodeRange);
- if ( dynStrFTFileName ) xfree(dynStrFTFileName);
- if ( dynStrRealFileName ) xfree(dynStrRealFileName);
+ if ( dynStrTTCapCodeRange ) free(dynStrTTCapCodeRange);
+ if ( dynStrFTFileName ) free(dynStrFTFileName);
+ if ( dynStrRealFileName ) free(dynStrRealFileName);
if ( xrc != Successful ) {
if( font ){
if( face && font->instance == NULL ) FreeTypeFreeFace(face);
@@ -3769,9 +3751,8 @@ FreeTypeGetGlyphs(FontPtr pFont, unsigned long count, unsigned char *chars,
else ht=ht_actual;
bpr = (((wd + (tf->instance->bmfmt.glyph<<3) - 1) >> 3) &
-tf->instance->bmfmt.glyph);
- raster = (char*)xalloc(ht * bpr);
+ raster = calloc(1, ht * bpr);
if(raster) {
- memset(raster, 0, ht * bpr);
tf->dummy_char.bits = raster;
*gp++ = &tf->dummy_char;
}
@@ -3917,40 +3898,24 @@ FreeTypeGetInfoScalable(FontPathElementPtr fpe, FontInfoPtr info,
static FontRendererRec renderers[] = {
{".ttf", 4, 0, FreeTypeOpenScalable, 0,
FreeTypeGetInfoScalable, 0, CAPABILITIES},
- {".TTF", 4, 0, FreeTypeOpenScalable, 0,
- FreeTypeGetInfoScalable, 0, CAPABILITIES},
{".ttc", 4, 0, FreeTypeOpenScalable, 0,
FreeTypeGetInfoScalable, 0, CAPABILITIES},
- {".TTC", 4, 0, FreeTypeOpenScalable, 0,
- FreeTypeGetInfoScalable, 0, CAPABILITIES},
{".otf", 4, 0, FreeTypeOpenScalable, 0,
FreeTypeGetInfoScalable, 0, CAPABILITIES},
- {".OTF", 4, 0, FreeTypeOpenScalable, 0,
- FreeTypeGetInfoScalable, 0, CAPABILITIES},
{".otc", 4, 0, FreeTypeOpenScalable, 0,
FreeTypeGetInfoScalable, 0, CAPABILITIES},
- {".OTC", 4, 0, FreeTypeOpenScalable, 0,
- FreeTypeGetInfoScalable, 0, CAPABILITIES},
{".pfa", 4, 0, FreeTypeOpenScalable, 0,
FreeTypeGetInfoScalable, 0, CAPABILITIES},
- {".PFA", 4, 0, FreeTypeOpenScalable, 0,
- FreeTypeGetInfoScalable, 0, CAPABILITIES},
{".pfb", 4, 0, FreeTypeOpenScalable, 0,
FreeTypeGetInfoScalable, 0, CAPABILITIES},
- {".PFB", 4, 0, FreeTypeOpenScalable, 0,
- FreeTypeGetInfoScalable, 0, CAPABILITIES},
};
static int num_renderers = sizeof(renderers) / sizeof(renderers[0]);
static FontRendererRec alt_renderers[] = {
{".bdf", 4, 0, FreeTypeOpenScalable, 0,
FreeTypeGetInfoScalable, 0, CAPABILITIES},
- {".BDF", 4, 0, FreeTypeOpenScalable, 0,
- FreeTypeGetInfoScalable, 0, CAPABILITIES},
{".pcf", 4, 0, FreeTypeOpenScalable, 0,
FreeTypeGetInfoScalable, 0, CAPABILITIES},
- {".PCF", 4, 0, FreeTypeOpenScalable, 0,
- FreeTypeGetInfoScalable, 0, CAPABILITIES},
};
static int num_alt_renderers =
diff --git a/libXfont/src/FreeType/fttools.c b/libXfont/src/FreeType/fttools.c
index 10604b1f6..7277273fd 100644
--- a/libXfont/src/FreeType/fttools.c
+++ b/libXfont/src/FreeType/fttools.c
@@ -27,14 +27,8 @@
#include <config.h>
#endif
#include <X11/fonts/fontmisc.h>
-#ifndef FONTMODULE
#include <ctype.h>
#include <string.h>
-#else
-#include "Xmd.h"
-#include "Xdefs.h"
-#include "xf86_ansic.h"
-#endif
#include <X11/fonts/font.h>
#include <ft2build.h>
diff --git a/libXfont/src/FreeType/xttcap.c b/libXfont/src/FreeType/xttcap.c
index 507da80d6..89e092b0e 100644
--- a/libXfont/src/FreeType/xttcap.c
+++ b/libXfont/src/FreeType/xttcap.c
@@ -44,21 +44,8 @@ static char const * const releaseID =
#endif
#include <X11/fonts/fontmisc.h>
#include <string.h>
-#ifndef FONTMODULE
#include <ctype.h>
#include <math.h>
-#else
-#include "Xmd.h"
-#include "Xdefs.h"
-#include "xf86_ansic.h"
-#endif
-/*
-#include <X11/X.h>
-#include <X11/Xmd.h>
-#include <X11/Xfuncproto.h>
-#include "xf86Module.h"
-#include "xf86_ansic.h"
-*/
#ifndef True
#define True (-1)
@@ -69,17 +56,6 @@ static char const * const releaseID =
#include "xttcap.h"
-#if 0
-/*
- Prototypes for obsoleted OS (e.g. SunOS4)
- */
-
-#if (defined(sun) && !(defined(SVR4) || defined(__SVR4)))
-double strtod(char *str, char **ptr);
-double strtol(char *str, char **ptr, int base);
-#endif
-#endif
-
/**************************************************************************
Private Data Types
@@ -259,7 +235,7 @@ SPropRecValList_add_record(SDynPropRecValList *pThisList,
{
char *p;
- if (NULL == (p = (char *)xalloc(strlen(strValue)+1))) {
+ if (NULL == (p = malloc(strlen(strValue)+1))) {
fprintf(stderr,
"truetype font property : "
"cannot allocate memory.\n");
@@ -283,8 +259,7 @@ SPropRecValList_add_record(SDynPropRecValList *pThisList,
/* add to list */
SPropRecValListNodeP *newNode;
- if (NULL == (newNode =
- (SPropRecValListNodeP *)xalloc(sizeof(*newNode)))) {
+ if (NULL == (newNode = malloc(sizeof(*newNode)))) {
fprintf(stderr,
"truetype font property : "
"cannot allocate memory.\n");
@@ -473,7 +448,7 @@ parse_one_line(SDynPropRecValList *pThisList, FILE *is)
char *buf = NULL;
char *recordHead, *valueHead = NULL;
- if (NULL == (buf = xalloc(LEN_LINEBUF))) {
+ if (NULL == (buf = malloc(LEN_LINEBUF))) {
fprintf(stderr,
"truetype font property file : cannot allocate memory.\n");
result = True;
@@ -508,7 +483,7 @@ parse_one_line(SDynPropRecValList *pThisList, FILE *is)
result = SPropRecValList_add_record(pThisList, recordHead, valueHead);
}
quit:
- xfree(buf);
+ free(buf);
abort:
return result;
}
@@ -649,13 +624,13 @@ SPropRecValList_add_by_font_cap(SDynPropRecValList *pThisList,
char *value;
len = term-p-1;
- value=(char *)xalloc(len+1);
+ value=malloc(len+1);
memcpy(value, p+1, len);
value[len]='\0';
SPropRecValList_add_record(pThisList,
"FaceNumber",
value);
- xfree(value);
+ free(value);
term=p;
}
break;
@@ -669,7 +644,7 @@ SPropRecValList_add_by_font_cap(SDynPropRecValList *pThisList,
int i;
char const *nextColon = strchr(strCapHead, ':');
if (0<nextColon-strCapHead) {
- char *duplicated = (char *)xalloc((nextColon-strCapHead)+1);
+ char *duplicated = malloc((nextColon-strCapHead)+1);
{
char *value;
@@ -698,7 +673,7 @@ SPropRecValList_add_by_font_cap(SDynPropRecValList *pThisList,
next:
;
}
- xfree(duplicated);
+ free(duplicated);
}
strCapHead = nextColon+1;
}
@@ -719,7 +694,7 @@ XttXstrdup(char const *str)
{
char *result;
- result = (char *)xalloc(strlen(str)+1);
+ result = malloc(strlen(str)+1);
if (result)
strcpy(result, str);
diff --git a/libXfont/src/FreeType/xttcap.h b/libXfont/src/FreeType/xttcap.h
index 9da3c961c..e91e5232a 100644
--- a/libXfont/src/FreeType/xttcap.h
+++ b/libXfont/src/FreeType/xttcap.h
@@ -121,10 +121,6 @@ SPropRecValList_dump(SRefPropRecValList *refList);
Prototypes (xttmisc)
*/
-/* compare strings with ignoring case */
- /* False == equal, True == not equal */
-Bool mystrcasecmp(char const *s1, char const *s2);
-
/* strdup clone */
char * XttXstrdup(char const *str);
#undef xstrdup
diff --git a/libXfont/src/Makefile.am b/libXfont/src/Makefile.am
index 3e0cbfae0..094275d11 100644
--- a/libXfont/src/Makefile.am
+++ b/libXfont/src/Makefile.am
@@ -21,6 +21,8 @@
lib_LTLIBRARIES = libXfont.la
+AM_CFLAGS = $(OS_CFLAGS)
+
if XFONT_FONTFILE
FONTFILE_DIR = fontfile
FONTFILE_LIB = fontfile/libfontfile.la
@@ -46,16 +48,6 @@ FC_DIR = fc
FC_LIB = fc/libfc.la
endif
-if XFONT_TYPE1
-TYPE1_DIR = Type1
-TYPE1_LIB = Type1/libtype1.la
-endif
-
-if XFONT_SPEEDO
-SPEEDO_DIR = Speedo
-SPEEDO_LIB = Speedo/libspeedo.la
-endif
-
UTIL_DIR = util
UTIL_LIB = util/libutil.la
@@ -64,13 +56,11 @@ STUBS_DIR = stubs
SUBDIRS=\
$(FONTFILE_DIR) $(FREETYPE_DIR) $(BITMAP_DIR) \
- $(BUILTINS_DIR) $(FC_DIR) $(UTIL_DIR) $(STUBS_DIR) \
- $(TYPE1_DIR) $(SPEEDO_DIR)
+ $(BUILTINS_DIR) $(FC_DIR) $(UTIL_DIR) $(STUBS_DIR)
libXfont_la_LIBADD = \
$(FONTFILE_LIB) $(FREETYPE_LIB) $(BITMAP_LIB) \
$(BUILTINS_LIB) $(FC_LIB) $(UTIL_LIB) $(STUBS_LIB) \
- $(TYPE1_LIB) $(SPEEDO_LIB) \
$(FREETYPE_LIBS) $(Z_LIBS) $(MATH_LIBS) $(XFONT_LIBS)
libXfont_la_SOURCES = dummy.c
diff --git a/libXfont/src/Makefile.in b/libXfont/src/Makefile.in
index b285616c0..abf3f969b 100644
--- a/libXfont/src/Makefile.in
+++ b/libXfont/src/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -75,15 +75,14 @@ LTLIBRARIES = $(lib_LTLIBRARIES)
am__DEPENDENCIES_1 =
libXfont_la_DEPENDENCIES = $(FONTFILE_LIB) $(FREETYPE_LIB) \
$(BITMAP_LIB) $(BUILTINS_LIB) $(FC_LIB) $(UTIL_LIB) \
- $(STUBS_LIB) $(TYPE1_LIB) $(SPEEDO_LIB) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
+ $(STUBS_LIB) $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am_libXfont_la_OBJECTS = dummy.lo
libXfont_la_OBJECTS = $(am_libXfont_la_OBJECTS)
libXfont_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(libXfont_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include/X11/fonts
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -108,8 +107,7 @@ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
ETAGS = etags
CTAGS = ctags
-DIST_SUBDIRS = fontfile FreeType bitmap builtins fc util stubs Type1 \
- Speedo
+DIST_SUBDIRS = fontfile FreeType bitmap builtins fc util stubs
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMTAR = @AMTAR@
@@ -125,22 +123,18 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENCODINGSDIR = @ENCODINGSDIR@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
FREETYPE_LIBS = @FREETYPE_LIBS@
FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
@@ -150,17 +144,24 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATH_LIBS = @MATH_LIBS@
MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -170,6 +171,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -183,8 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -217,6 +218,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -229,9 +231,11 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
lib_LTLIBRARIES = libXfont.la
+AM_CFLAGS = $(OS_CFLAGS)
@XFONT_FONTFILE_TRUE@FONTFILE_DIR = fontfile
@XFONT_FONTFILE_TRUE@FONTFILE_LIB = fontfile/libfontfile.la
@XFONT_FREETYPE_TRUE@FREETYPE_DIR = FreeType
@@ -242,23 +246,17 @@ lib_LTLIBRARIES = libXfont.la
@XFONT_BUILTINS_TRUE@BUILTINS_LIB = builtins/libbuiltins.la
@XFONT_FC_TRUE@FC_DIR = fc
@XFONT_FC_TRUE@FC_LIB = fc/libfc.la
-@XFONT_TYPE1_TRUE@TYPE1_DIR = Type1
-@XFONT_TYPE1_TRUE@TYPE1_LIB = Type1/libtype1.la
-@XFONT_SPEEDO_TRUE@SPEEDO_DIR = Speedo
-@XFONT_SPEEDO_TRUE@SPEEDO_LIB = Speedo/libspeedo.la
UTIL_DIR = util
UTIL_LIB = util/libutil.la
STUBS_LIB = stubs/libstubs.la
STUBS_DIR = stubs
SUBDIRS = \
$(FONTFILE_DIR) $(FREETYPE_DIR) $(BITMAP_DIR) \
- $(BUILTINS_DIR) $(FC_DIR) $(UTIL_DIR) $(STUBS_DIR) \
- $(TYPE1_DIR) $(SPEEDO_DIR)
+ $(BUILTINS_DIR) $(FC_DIR) $(UTIL_DIR) $(STUBS_DIR)
libXfont_la_LIBADD = \
$(FONTFILE_LIB) $(FREETYPE_LIB) $(BITMAP_LIB) \
$(BUILTINS_LIB) $(FC_LIB) $(UTIL_LIB) $(STUBS_LIB) \
- $(TYPE1_LIB) $(SPEEDO_LIB) \
$(FREETYPE_LIBS) $(Z_LIBS) $(MATH_LIBS) $(XFONT_LIBS)
libXfont_la_SOURCES = dummy.c
@@ -271,8 +269,8 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -302,8 +300,8 @@ install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
if test -f $$p; then \
f=$(am__strip_dir) \
- echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
else :; fi; \
done
@@ -311,8 +309,8 @@ uninstall-libLTLIBRARIES:
@$(NORMAL_UNINSTALL)
@list='$(lib_LTLIBRARIES)'; for p in $$list; do \
p=$(am__strip_dir) \
- echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
- $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
done
clean-libLTLIBRARIES:
@@ -436,8 +434,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -462,8 +460,8 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -473,13 +471,12 @@ ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
diff --git a/libXfont/src/Speedo/Makefile.am b/libXfont/src/Speedo/Makefile.am
deleted file mode 100644
index 99d972d1c..000000000
--- a/libXfont/src/Speedo/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-INCLUDES = \
- -I${top_srcdir}/include
-
-AM_CFLAGS = $(XFONT_CFLAGS) $(OS_CFLAGS) $(CWARNFLAGS)
-
-noinst_LTLIBRARIES = libspeedo.la
-
-libspeedo_la_SOURCES = \
- adobe-iso.h \
- bics-iso.h \
- bics-unicode.c \
- bics-unicode.h \
- do_char.c \
- do_trns.c \
- keys.h \
- out_bl2d.c \
- out_blk.c \
- out_outl.c \
- out_scrn.c \
- out_util.c \
- reset.c \
- set_spcs.c \
- set_trns.c \
- spdo_prv.h \
- speedo.h \
- spencode.c \
- sperr.c \
- spfile.c \
- spfont.c \
- spfuncs.c \
- spglyph.c \
- spinfo.c \
- spint.h \
- useropt.h
diff --git a/libXfont/src/Speedo/Makefile.in b/libXfont/src/Speedo/Makefile.in
deleted file mode 100644
index b55b517a1..000000000
--- a/libXfont/src/Speedo/Makefile.in
+++ /dev/null
@@ -1,497 +0,0 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src/Speedo
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h \
- $(top_builddir)/include/X11/fonts/fontconf.h
-CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libspeedo_la_LIBADD =
-am_libspeedo_la_OBJECTS = bics-unicode.lo do_char.lo do_trns.lo \
- out_bl2d.lo out_blk.lo out_outl.lo out_scrn.lo out_util.lo \
- reset.lo set_spcs.lo set_trns.lo spencode.lo sperr.lo \
- spfile.lo spfont.lo spfuncs.lo spglyph.lo spinfo.lo
-libspeedo_la_OBJECTS = $(am_libspeedo_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-SOURCES = $(libspeedo_la_SOURCES)
-DIST_SOURCES = $(libspeedo_la_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CHANGELOG_CMD = @CHANGELOG_CMD@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENCODINGSDIR = @ENCODINGSDIR@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_LIBS = @FREETYPE_LIBS@
-FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MATH_LIBS = @MATH_LIBS@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-OS_CFLAGS = @OS_CFLAGS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XFONT_CFLAGS = @XFONT_CFLAGS@
-XFONT_LIBS = @XFONT_LIBS@
-X_GZIP_FONT_COMPRESSION = @X_GZIP_FONT_COMPRESSION@
-Z_LIBS = @Z_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-distcleancheck_listfiles = @distcleancheck_listfiles@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ft_config = @ft_config@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-INCLUDES = \
- -I${top_srcdir}/include
-
-AM_CFLAGS = $(XFONT_CFLAGS) $(OS_CFLAGS) $(CWARNFLAGS)
-noinst_LTLIBRARIES = libspeedo.la
-libspeedo_la_SOURCES = \
- adobe-iso.h \
- bics-iso.h \
- bics-unicode.c \
- bics-unicode.h \
- do_char.c \
- do_trns.c \
- keys.h \
- out_bl2d.c \
- out_blk.c \
- out_outl.c \
- out_scrn.c \
- out_util.c \
- reset.c \
- set_spcs.c \
- set_trns.c \
- spdo_prv.h \
- speedo.h \
- spencode.c \
- sperr.c \
- spfile.c \
- spfont.c \
- spfuncs.c \
- spglyph.c \
- spinfo.c \
- spint.h \
- useropt.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Speedo/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign src/Speedo/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libspeedo.la: $(libspeedo_la_OBJECTS) $(libspeedo_la_DEPENDENCIES)
- $(LINK) $(libspeedo_la_OBJECTS) $(libspeedo_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bics-unicode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/do_char.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/do_trns.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/out_bl2d.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/out_blk.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/out_outl.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/out_scrn.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/out_util.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reset.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_spcs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/set_trns.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spencode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sperr.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spfile.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spfont.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spfuncs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spglyph.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spinfo.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/libXfont/src/Speedo/adobe-iso.h b/libXfont/src/Speedo/adobe-iso.h
deleted file mode 100644
index e1eeef1c5..000000000
--- a/libXfont/src/Speedo/adobe-iso.h
+++ /dev/null
@@ -1,200 +0,0 @@
-/* $Xorg: adobe-iso.h,v 1.3 2000/08/17 19:46:24 cpqbld Exp $ */
-
-/*
- * Latin 1 format from masterset format 11 (ps)
- * 0 implies no valid mapping
- */
-
-int adobe_map[] = {
- 32, 32,
- 33, 33,
- 34, 34,
- 35, 35,
- 36, 36,
- 37, 37,
- 38, 38,
- 39, 169,
- 40, 40,
- 41, 41,
- 42, 42,
- 43, 43,
- 44, 44,
- 45, 45,
- 46, 46,
- 47, 47,
- 48, 48,
- 49, 49,
- 50, 50,
- 51, 51,
- 52, 52,
- 53, 53,
- 54, 54,
- 55, 55,
- 56, 56,
- 57, 57,
- 58, 58,
- 59, 59,
- 60, 60,
- 61, 61,
- 62, 62,
- 63, 63,
- 64, 64,
- 65, 65,
- 66, 66,
- 67, 67,
- 68, 68,
- 69, 69,
- 70, 70,
- 71, 71,
- 72, 72,
- 73, 73,
- 74, 74,
- 75, 75,
- 76, 76,
- 77, 77,
- 78, 78,
- 79, 79,
- 80, 80,
- 81, 81,
- 82, 82,
- 83, 83,
- 84, 84,
- 85, 85,
- 86, 86,
- 87, 87,
- 88, 88,
- 89, 89,
- 90, 90,
- 91, 91,
- 92, 92,
- 93, 93,
- 94, 195,
- 95, 95,
- 96, 193,
- 97, 97,
- 98, 98,
- 99, 99,
- 100, 100,
- 101, 101,
- 102, 102,
- 103, 103,
- 104, 104,
- 105, 105,
- 106, 106,
- 107, 107,
- 108, 108,
- 109, 109,
- 110, 110,
- 111, 111,
- 112, 112,
- 113, 113,
- 114, 114,
- 115, 115,
- 116, 116,
- 117, 117,
- 118, 118,
- 119, 119,
- 120, 120,
- 121, 121,
- 122, 122,
- 123, 123,
- 124, 124,
- 125, 125,
- 126, 196, /* lc tilde */
- 127, 0, /* */
- 161, 161, /* invert exclamation */
- 162, 162, /* cent */
- 163, 163, /* pound sterling */
- 164, 168, /* intl currency */
- 165, 165, /* yen */
- 166, 320, /* split vert bar */
- 167, 167, /* section mark */
- 168, 200, /* dierisis */
- 169, 0, /* superior copyright */
- 170, 0, /* feminine ordinal */
- 171, 171, /* dbl left guillemot */
- 172, 314, /* math not */
- 173, 0, /* hyphen ? */
- 174, 0, /* superior registered */
- 175, 0, /* overscore */
- 176, 321, /* degree */
- 177, 329, /* math +- */
- 178, 333, /* superior 2 */
- 179, 332, /* superior 3 */
- 180, 194, /* lc acute */
- 181, 324, /* greek lc mu */
- 182, 182, /* Paragraph */
- 183, 180, /* center dot */
- 184, 203, /* cedilla lc */
- 185, 328, /* superior 1 */
- 186, 0, /* masculine ordinal(using superior o) */
- 187, 187, /* right dbl guillemot */
- 188, 327, /* 1/4 */
- 189, 326, /* 1/2 */
- 190, 331, /* 3/4 */
- 191, 191, /* invert question */
- 192, 259, /* A grave */
- 193, 256, /* A acute */
- 194, 257, /* A circumflex */
- 195, 261, /* A tilde */
- 196, 258, /* A dierisis */
- 197, 260, /* A angstrom */
- 198, 225, /* AE ligature */
- 199, 262, /* C cedilla */
- 200, 266, /* E grave */
- 201, 263, /* E acute */
- 202, 264, /* E circumflex */
- 203, 265, /* E dierisis */
- 204, 270, /* I grave */
- 205, 267, /* I acute */
- 206, 268, /* I circumflex */
- 207, 269, /* I dierisis */
- 208, 317, /* D bar */
- 209, 271, /* N tilde */
- 210, 275, /* O grave */
- 211, 272, /* O acute */
- 212, 273, /* O circumflex */
- 213, 276, /* O tilde */
- 214, 274, /* O dierisis */
- 215, 325, /* math multiply */
- 216, 233, /* O bar */
- 217, 281, /* U grave */
- 218, 278, /* U acute */
- 219, 279, /* U circumflex */
- 220, 280, /* U dierisis */
- 221, 319, /* Y acute */
- 222, 318, /* icelandic thorn lc */
- 223, 251, /* German dbl s */
- 224, 287, /* a grave */
- 225, 284, /* a acute */
- 226, 285, /* a circumflex */
- 227, 289, /* a tilde */
- 228, 286, /* a dierisis */
- 229, 288, /* a angstrom */
- 230, 241, /* ae ligature */
- 231, 290, /* c cedilla */
- 232, 294, /* e grave */
- 233, 291, /* e acute */
- 234, 292, /* e circumflex */
- 235, 293, /* e dierisis */
- 236, 298, /* i grave */
- 237, 295, /* i acute */
- 238, 296, /* i circumflex */
- 239, 297, /* i dierisis */
- 240, 323, /* icelandic eth lc */
- 241, 299, /* n tilde */
- 242, 303, /* o grave */
- 243, 300, /* o acute */
- 244, 301, /* o circumflex */
- 245, 304, /* o tilde */
- 246, 302, /* o dierisis */
- 247, 322, /* math divide */
- 248, 249, /* o bar */
- 249, 309, /* u grave */
- 250, 306, /* u acute */
- 251, 307, /* u circumflex */
- 252, 308, /* u dierisis */
- 253, 334, /* y acute */
- 254, 330, /* icelandic thorn uc */
- 255, 310, /* y dierisis */
-};
diff --git a/libXfont/src/Speedo/bics-iso.h b/libXfont/src/Speedo/bics-iso.h
deleted file mode 100644
index 4964fa34e..000000000
--- a/libXfont/src/Speedo/bics-iso.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/* $Xorg: bics-iso.h,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
-
-Copyright 1993, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/bics-iso.h,v 1.6 2001/01/17 19:43:17 dawes Exp $ */
-
-int sp_bics_map[] = {
- 32, 0,
- 33, 1,
- 34, 2,
- 35, 3,
- 36, 4,
- 37, 5,
- 38, 6,
- 39, 264,
- 40, 8,
- 41, 9,
- 42, 10,
- 43, 11,
- 44, 12,
- 45, 13,
- 46, 14,
- 47, 15,
- 48, 16,
- 49, 17,
- 50, 18,
- 51, 19,
- 52, 20,
- 53, 21,
- 54, 22,
- 55, 23,
- 56, 24,
- 57, 25,
- 58, 26,
- 59, 27,
- 60, 28,
- 61, 29,
- 62, 30,
- 63, 31,
- 64, 32,
- 65, 33,
- 66, 34,
- 67, 35,
- 68, 36,
- 69, 37,
- 70, 38,
- 71, 39,
- 72, 40,
- 73, 41,
- 74, 42,
- 75, 43,
- 76, 44,
- 77, 45,
- 78, 46,
- 79, 47,
- 80, 48,
- 81, 49,
- 82, 50,
- 83, 51,
- 84, 52,
- 85, 53,
- 86, 54,
- 87, 55,
- 88, 56,
- 89, 57,
- 90, 58,
- 91, 59,
- 92, 60,
- 93, 61,
- 94, 133,
- 95, 63,
- 96, 131,
- 97, 65,
- 98, 66,
- 99, 67,
- 100, 68,
- 101, 69,
- 102, 70,
- 103, 71,
- 104, 72,
- 105, 73,
- 106, 74,
- 107, 75,
- 108, 76,
- 109, 77,
- 110, 78,
- 111, 79,
- 112, 80,
- 113, 81,
- 114, 82,
- 115, 83,
- 116, 84,
- 117, 85,
- 118, 86,
- 119, 87,
- 120, 88,
- 121, 89,
- 122, 90,
- 123, 91,
- 124, 92,
- 125, 93,
- 126, 137,
- 127, 358,
- 161, 128,
- 162, 98,
- 163, 97,
- 164, 278,
- 165, 274,
- 166, 277,
- 167, 110,
- 168, 135,
- 169, 503,
- 170, 538,
- 171, 125,
- 172, 309,
- 173, 191,
- 174, 504,
- 175, 230,
- 176, 339,
- 177, 286,
- 178, 160,
- 179, 161,
- 180, 129,
- 181, 325,
- 182, 279,
- 183, 102,
- 184, 141,
- 185, 159,
- 186, 544,
- 187, 126,
- 188, 151,
- 189, 153,
- 190, 155,
- 191, 127,
- 192, 259,
- 193, 261,
- 194, 257,
- 195, 253,
- 196, 255,
- 197, 113,
- 198, 114,
- 199, 148,
- 200, 249,
- 201, 251,
- 202, 247,
- 203, 245,
- 204, 239,
- 205, 241,
- 206, 237,
- 207, 235,
- 208, 169,
- 209, 196,
- 210, 202,
- 211, 200,
- 212, 204,
- 213, 208,
- 214, 206,
- 215, 284,
- 216, 115,
- 217, 212,
- 218, 210,
- 219, 214,
- 220, 216,
- 221, 224,
- 222, 271,
- 223, 121,
- 224, 260,
- 225, 262,
- 226, 258,
- 227, 254,
- 228, 256,
- 229, 117,
- 230, 118,
- 231, 149,
- 232, 250,
- 233, 252,
- 234, 248,
- 235, 246,
- 236, 240,
- 237, 242,
- 238, 238,
- 239, 236,
- 240, 273,
- 241, 195,
- 242, 201,
- 243, 199,
- 244, 203,
- 245, 207,
- 246, 205,
- 247, 285,
- 248, 119,
- 249, 211,
- 250, 209,
- 251, 213,
- 252, 215,
- 253, 223,
- 254, 272,
- 255, 221,
-};
-
diff --git a/libXfont/src/Speedo/bics-unicode.c b/libXfont/src/Speedo/bics-unicode.c
deleted file mode 100644
index 735508268..000000000
--- a/libXfont/src/Speedo/bics-unicode.c
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-Copyright (c) 1998 by Juliusz Chroboczek
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/* $XFree86$ */
-
-/* These data are very dodgy. */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "bics-unicode.h"
-
-static short table_160[]=
-{0, 128, 98, 97, 278, 274, 277, 110, 135, 503, 538, 125, 309, 191, 504,
- 230, 339, 286, 160, 161, 129, 325, 279, 102, 141, 159, 544, 126, 151,
- 153, 155, 127, 259, 261, 257, 253, 255, 113, 114, 148, 249, 251, 247,
- 245, 239, 241, 237, 235, 169, 196, 202, 200, 204, 208, 206, 284, 115,
- 212, 210, 214, 216, 224, 271, 121, 260, 262, 258, 254, 256, 117, 118,
- 149, 250, 252, 248, 246, 240, 242, 238, 236, 273, 195, 201, 199, 203,
- 207, 205, 285, 119, 211, 209, 213, 215, 223, 272, 221, 477, 476, 374,
- 373, 171, 177, 376, 375, -1, -1, -1, -1, 378, 377, 379, -1, 169, 173,
- 383, 382, -1, -1, -1, -1, 172, 178, 243, 244, -1, -1, -1, -1, -1, -1,
- 385, -1, -1, -1, -1, -1, 233, 234, 387, 386, -1, -1, 391, 390, 389,
- 122, 276, 275, -1, -1, 393, 392, -1, 395, 394, 399, 398, -1, -1, -1,
- -1, 170, 174, 194, 193, 402, 401, 198, 197, 263, -1, -1, -1, -1, -1,
- -1, 404, 403, 116, 120, -1, -1, 408, 407, 406, 405, 410, 409, -1, -1,
- 486, 485, 412, 411, 419, 418, 364, 363, -1, -1, 218, 217, 421, 420, -1,
- -1, 220, 219, 423, 422, -1, 268, 425, 424, -1, -1, 222, 368, 367, 372,
- 371, 370, 369};
-
-static short table_728[]={144, 181, 146, 731, 137, 183};
-
-static short table_915[]=
-{313, 314, -1, -1, -1, 315, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 316, -1, -1, 317, -1, -1, 318, -1, -1, -1, -1, -1, -1, -1, 319, 320,
- -1, 321, 322, -1, 323, 324, -1, -1, -1, 325, -1, -1, -1, 326, -1, -1,
- 327, 328, -1, 329};
-
-static short table_8211[]=
-{111, 112, -1, -1, -1, -1, -1, 106, -1, 103, 105, 107, 104, 108, 109,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, -1,
- -1, -1, -1, -1, -1, -1, 123, 124, -1, 265};
-
-static short table_8319[]=
-{543, 475, 466, 467, 468, 469, 470, 471, 472, 473, 474, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 491, -1, -1, -1, 266};
-
-static short table_8592[]={293, 295, 294, 292, 297, 296};
-
-static short table_8712[]=
-{298, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 492, -1, -1, -1, -1, -1,
- -1, 302, -1, -1, -1, 303, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 299,
- -1, -1, -1, -1, 428};
-
-
-static short table_8800[]={288, -1, -1, -1, 291, 290};
-
-static short table_9600[]=
-{304, -1, -1, -1, 305, -1, -1, -1, 308, -1, -1, -1, 306, -1, -1, -1,
- 307, 357, 358, 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 335, 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, 348, -1, -1, -1, 345, -1, -1, -1, -1, -1, 347, -1, -1, -1, 346,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 339, -1, -1, -1, 342, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, 344};
-
-static short table_9784[]={360, -1, 361, 362, -1, -1, -1, -1, 350, -1, 349};
-
-static short table_9824[]=
-{354, -1, -1, 352, -1, 351, 353, -1, -1, -1, 330, 331};
-
-static short table_64256[]={282, 95, 96, 281};
-
-int
-unicode_to_bics(unsigned code)
-{
- if(code<32) return -1;
- else if(code<127) return code-32;
- else if(code<160) return -1;
- else if(code<383) return table_160[code-160];
- else if(code==402) return 99;
- else if(code==486) return 480;
- else if(code==487) return 379;
- else if(code==501) return 384;
- else if(code==711) return 139;
- else if(code<728) return -1;
- else if(code<734) return table_728[code-728];
- else if(code<915) return -1;
- else if(code<967) return table_915[code-915];
- else if(code<8211) return -1;
- else if(code<8253) return table_8211[code-8211];
- else if(code<8319) return -1;
- else if(code<8360) return table_8319[code-8319];
- else if(code<8592) return -1;
- else if(code<8598) return table_8592[code-8592];
- else if(code==8616) return 340;
- else if(code<8712) return -1;
- else if(code<8751) return table_8712[code-8712];
- else if(code<8800) return -1;
- else if(code<8806) return table_8800[code-8800];
- else if(code==8976) return 310;
- else if(code==8992) return 300;
- else if(code==8993) return 301;
- else if(code==9400) return 332;
- else if(code==9415) return 333;
- else if(code==9473) return 355;
- else if(code==9475) return 356;
- else if(code<9600) return -1;
- else if(code<9690) return table_9600[code-9600];
- else if(code==9711) return 343;
- else if(code<9784) return -1;
- else if(code<9795) return table_9784[code-9784];
- else if(code<9824) return -1;
- else if(code<9836) return table_9824[code-9824];
- else if(code<64256) return -1;
- else if(code<64261) return table_64256[code-64256];
- else return -1;
-}
-
diff --git a/libXfont/src/Speedo/bics-unicode.h b/libXfont/src/Speedo/bics-unicode.h
deleted file mode 100644
index 90fa1885b..000000000
--- a/libXfont/src/Speedo/bics-unicode.h
+++ /dev/null
@@ -1,3 +0,0 @@
-/* $XFree86$ */
-
-int unicode_to_bics(unsigned);
diff --git a/libXfont/src/Speedo/do_char.c b/libXfont/src/Speedo/do_char.c
deleted file mode 100644
index 076b41366..000000000
--- a/libXfont/src/Speedo/do_char.c
+++ /dev/null
@@ -1,809 +0,0 @@
-/* $Xorg: do_char.c,v 1.3 2000/08/17 19:46:24 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/do_char.c,v 1.3 2001/01/17 19:43:17 dawes Exp $ */
-
-/***************************** D O - C H A R . C *****************************
- * *
- * This is the top level module for processing one simple or composite *
- * character.
- * *
- ****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spdo_prv.h" /* General definitions for Speedo */
-
-#define DEBUG 0
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/***** EXTERNAL VARIABLES *****/
-
-/***** EXTERNAL FUNCTIONS *****/
-
-/***** STATIC VARIABLES *****/
-
-/***** STATIC FUNCTIONS *****/
-
-static boolean sp_make_simp_char(PROTO_DECL2 ufix8 FONTFAR *pointer,ufix8 format);
-static boolean sp_make_comp_char(PROTO_DECL2 ufix8 FONTFAR *pointer);
-static ufix8 FONTFAR *sp_get_char_org(PROTO_DECL2 ufix16 char_index,boolean top_level);
-static fix15 sp_get_posn_arg(PROTO_DECL2 ufix8 FONTFAR *STACKFAR *ppointer,ufix8 format);
-static fix15 sp_get_scale_arg(PROTO_DECL2 ufix8 FONTFAR *STACKFAR *ppointer,ufix8 format);
-
-
-#if INCL_METRICS
-FUNCTION fix31 get_char_width(
-GDECL
-ufix16 char_index) /* Index to character in char directory */
-/*
- * Returns character set width for specified character index in currently
- * selected font in units of 1/65536 em.
- * Reports Error 10 and returns 0 if no font selected.
- * Reports Error 12 and returns 0 if character data not available.
- */
-{
-ufix8 FONTFAR *pointer; /* Pointer to character data */
-fix31 set_width; /* Set width of character */
-
-if (!sp_globals.specs_valid) /* Font specs not defined? */
- {
- report_error(10); /* Report font not specified */
- return (fix31)0; /* Return zero character width */
- }
-
-pointer = sp_get_char_org(char_index, TRUE); /* Get pointer to character data */
-if (pointer == NULL) /* Character data not available? */
- {
- report_error(12); /* Report character data not avail */
- return (fix31)0; /* Return zero character width */
- }
-
-pointer += 2; /* Skip over character id */
-set_width = (fix31)NEXT_WORD(pointer); /* Read set width and Convert units */
-set_width = ((set_width << 16) + (sp_globals.metric_resolution >> 1)) / sp_globals.metric_resolution;
-return set_width; /* Return in 1/65536 em units */
-}
-#endif
-
-#if INCL_METRICS
-#ifdef old
-FUNCTION boolean get_char_bbox(
-GDECL
-ufix16 char_index,
-bbox_t *bbox)
-{
-/*
- * returns true if character exists, false if it doesn't
- * provides transformed character bounding box in 1/65536 pixels
- * in the provided bbox_t structure. Bounding box may be
- * conservative in the event that the transformation is not
- * normal or the character is compound.
- */
-
-ufix8 FONTFAR *pointer;
-fix15 tmp;
-point_t Pmin, Pmax;
-
-#if REENTRANT_ALLOC
-plaid_t plaid;
-sp_globals.plaid = &plaid;
-#endif
-
-if (!sp_globals.specs_valid) /* Font specs not defined? */
- {
- report_error(10); /* Report font not specified */
- return FALSE; /* Error return */
- }
-
-init_tcb(); /* Initialize transformation control block */
-
-pointer = sp_get_char_org(char_index, TRUE); /* Point to start of character data */
-if (pointer == NULL) /* Character data not available? */
- {
- report_error(12); /* Report character data not avail */
- return FALSE; /* Error return */
- }
-
-pointer += 2; /* Skip over character id */
-tmp = NEXT_WORD(pointer); /* Read set width */
-
-tmp = NEXT_BYTE(pointer);
-if (tmp & BIT1) /* Optional data in header? */
- {
- tmp = (ufix8)NEXT_BYTE(pointer); /* Read size of optional data */
- pointer += tmp; /* Skip optional data */
- }
-
-pointer = plaid_tcb(pointer, tmp); /* Process plaid data */
-pointer = read_bbox(pointer, &Pmin, &Pmax,(boolean)FALSE); /* Read bounding box */
-bbox->xmin = (fix31)Pmin.x << sp_globals.poshift;
-bbox->xmax = (fix31)Pmax.x << sp_globals.poshift;
-bbox->ymin = (fix31)Pmin.y << sp_globals.poshift;
-bbox->ymax = (fix31)Pmax.y << sp_globals.poshift;
-return TRUE;
-}
-
-#else /* new code, 4/25/91 */
-
-FUNCTION boolean get_char_bbox(
-GDECL
-ufix16 char_index,
-bbox_t *bbox)
-{
-/*
- * returns true if character exists, false if it doesn't
- * provides transformed character bounding box in 1/65536 pixels
- * in the provided bbox_t structure. Bounding box may be
- * conservative in the event that the transformation is not
- * normal or the character is compound.
- */
-
-ufix8 FONTFAR *pointer;
-fix15 tmp;
-fix15 format;
-ufix16 pix_adj;
-point_t Pmin, Pmax;
-
-#if REENTRANT_ALLOC
-plaid_t plaid;
-sp_globals.plaid = &plaid;
-#endif
-
-if (!sp_globals.specs_valid) /* Font specs not defined? */
- {
- report_error(10); /* Report font not specified */
- return FALSE; /* Error return */
- }
-
-init_tcb(); /* Initialize transformation control block */
-
-pointer = sp_get_char_org(char_index, TRUE); /* Point to start of character data */
-if (pointer == NULL) /* Character data not available? */
- {
- report_error(12); /* Report character data not avail */
- return FALSE; /* Error return */
- }
-
-pointer += 2; /* Skip over character id */
-tmp = NEXT_WORD(pointer); /* Read set width */
-
-format = NEXT_BYTE(pointer);
-if (format & BIT1) /* Optional data in header? */
- {
- tmp = (ufix8)NEXT_BYTE(pointer); /* Read size of optional data */
- pointer += tmp; /* Skip optional data */
- }
-
-if (format & BIT0)
- {
- pix_adj = sp_globals.onepix << 1; /* Allow 2 pixel expansion ... */
- }
-else
- {
- pix_adj = 0;
- }
-
-pointer = plaid_tcb(pointer, format); /* Process plaid data */
-pointer = read_bbox(pointer, &Pmin, &Pmax,(boolean)FALSE); /* Read bounding box */
-
-Pmin.x -= pix_adj; /* ... of components of ... */
-Pmin.y -= pix_adj; /* ... compound ... */
-Pmax.x += pix_adj; /* ... character ... */
-Pmax.y += pix_adj; /* ... bounding box. */
-
-
-bbox->xmin = (fix31)Pmin.x << sp_globals.poshift;
-bbox->xmax = (fix31)Pmax.x << sp_globals.poshift;
-bbox->ymin = (fix31)Pmin.y << sp_globals.poshift;
-bbox->ymax = (fix31)Pmax.y << sp_globals.poshift;
-return TRUE;
-}
-#endif /* new code */
-
-#endif
-
-
-#if INCL_ISW
-FUNCTION boolean make_char_isw(
-GDECL
-ufix16 char_index,
-ufix32 imported_setwidth)
-{
-fix15 xmin; /* Minimum X ORU value in font */
-fix15 xmax; /* Maximum X ORU value in font */
-fix15 ymin; /* Minimum Y ORU value in font */
-fix15 ymax; /* Maximum Y ORU value in font */
-ufix16 return_value;
-
-sp_globals.import_setwidth_act = TRUE;
-/* convert imported width to orus */
-sp_globals.imported_width = (sp_globals.metric_resolution *
- imported_setwidth) >> 16;
-return_value = do_make_char(char_index);
-
-if (sp_globals.isw_modified_constants)
- {
- /* reset fixed point constants */
- xmin = read_word_u(sp_globals.font_org + FH_FXMIN);
- ymin = read_word_u(sp_globals.font_org + FH_FYMIN);
- ymax = read_word_u(sp_globals.font_org + FH_FYMAX);
- sp_globals.constr.data_valid = FALSE;
- xmax = read_word_u(sp_globals.font_org + FH_FXMAX);
- if (!setup_consts(xmin,xmax,ymin,ymax))
- {
- report_error(3); /* Requested specs out of range */
- return FALSE;
- }
- }
-return (return_value);
-}
-
-FUNCTION boolean make_char(
-GDECL
-ufix16 char_index) /* Index to character in char directory */
-{
-sp_globals.import_setwidth_act = FALSE;
-return (do_make_char(char_index));
-}
-
-FUNCTION static boolean do_make_char(GDECL ufix16 char_index)
-#else
-FUNCTION boolean make_char(GDECL ufix16 char_index)
-#endif
-/*
- * Outputs specified character using the currently selected font and
- * scaling and output specifications.
- * Reports Error 10 and returns FALSE if no font specifications
- * previously set.
- * Reports Error 12 and returns FALSE if character data not available.
- */
-{
-ufix8 FONTFAR *pointer; /* Pointer to character data */
-fix15 x_orus;
-fix15 tmpfix15;
-ufix8 format;
-
-#if INCL_ISW
-sp_globals.isw_modified_constants = FALSE;
-#endif
-
-#if REENTRANT_ALLOC
-
-plaid_t plaid;
-
-#if INCL_BLACK || INCL_SCREEN || INCL_2D
-intercepts_t intercepts;
-sp_globals.intercepts = &intercepts;
-#endif
-
-sp_globals.plaid = &plaid;
-#endif
-
-if (!sp_globals.specs_valid) /* Font specs not defined? */
- {
- report_error(10); /* Report font not specified */
- return FALSE; /* Error return */
- }
-
-#if INCL_MULTIDEV
-#if INCL_OUTLINE
-if (sp_globals.output_mode == MODE_OUTLINE && !sp_globals.outline_device_set)
- {
- report_error(2);
- return FALSE;
- }
-else
-#endif
- if (!sp_globals.bitmap_device_set)
- {
- report_error(2);
- return FALSE;
- }
-#endif
-
-
-init_tcb(); /* Initialize transformation control block */
-
-pointer = sp_get_char_org(char_index, TRUE); /* Point to start of character data */
-SHOW(pointer);
-if (pointer == NULL) /* Character data not available? */
- {
- report_error(12); /* Report character data not avail */
- return FALSE; /* Error return */
- }
-
-pointer += 2; /* Skip over character id */
-x_orus = NEXT_WORD(pointer); /* Read set width */
-#if INCL_SQUEEZING || INCL_ISW
-sp_globals.setwidth_orus = x_orus;
-#endif
-
-#if INCL_ISW
-if (sp_globals.import_setwidth_act)
- x_orus = sp_globals.imported_width;
-#endif
-sp_globals.Psw.x = (fix15)((fix31)
- (((fix31)x_orus * (sp_globals.specs.xxmult>>16) +
- ( ((fix31)x_orus * (sp_globals.specs.xxmult&0xffffL) )>>16)
- ) << sp_globals.pixshift) / sp_globals.metric_resolution);
-
-sp_globals.Psw.y = (fix15)(
- (fix31)(
- ((fix31)x_orus * (sp_globals.specs.yxmult>>16) +
- ( ((fix31)x_orus * (sp_globals.specs.yxmult&0xffffL) )>>16)
- ) << sp_globals.pixshift) / sp_globals.metric_resolution);
-
-format = NEXT_BYTE(pointer);
-if (format & BIT1) /* Optional data in header? */
- {
- tmpfix15 = (ufix8)NEXT_BYTE(pointer); /* Read size of optional data */
- pointer += tmpfix15; /* Skip optional data */
- }
-if (format & BIT0)
- {
- return sp_make_comp_char(pointer); /* Output compound character */
- }
-else
- {
- return sp_make_simp_char(pointer, format); /* Output simple character */
- }
-}
-
-FUNCTION static boolean sp_make_simp_char(
-GDECL
-ufix8 FONTFAR *pointer, /* Pointer to first byte of position argument */
-ufix8 format) /* Character format byte */
-/*
- * Called by sp_make_char() to output a simple (non-compound) character.
- * Returns TRUE on completion.
- */
-{
-point_t Pmin, Pmax; /* Transformed corners of bounding box */
-#if INCL_SQUEEZING || INCL_ISW
-ufix8 FONTFAR *save_pointer;
-#endif
-#if INCL_ISW
-fix31 char_width;
-fix31 isw_scale;
-#endif
-
-#if INCL_SQUEEZING
-sp_globals.squeezing_compound = FALSE;
-if ((sp_globals.pspecs->flags & SQUEEZE_LEFT) ||
- (sp_globals.pspecs->flags & SQUEEZE_RIGHT) ||
- (sp_globals.pspecs->flags & SQUEEZE_TOP) ||
- (sp_globals.pspecs->flags & SQUEEZE_BOTTOM) )
- {
- /* get the bounding box data before processing the character */
- save_pointer = pointer;
- preview_bounding_box (pointer, format);
- pointer = save_pointer;
- }
-#endif
-#if (INCL_ISW)
-if (sp_globals.import_setwidth_act)
- {
- save_pointer = pointer;
- preview_bounding_box (pointer, format);
- pointer = save_pointer;
- /* make sure I'm not going to get fixed point overflow */
- isw_scale = compute_isw_scale();
- if (sp_globals.bbox_xmin_orus < 0)
- char_width = SQUEEZE_MULT((sp_globals.bbox_xmax_orus - sp_globals.bbox_xmin_orus), isw_scale);
- else
- char_width = SQUEEZE_MULT(sp_globals.bbox_xmax_orus, isw_scale);
- if (char_width >= sp_globals.isw_xmax)
- if (!reset_xmax(char_width))
- return FALSE;
- }
-#endif
-pointer = plaid_tcb(pointer, format); /* Process plaid data */
-pointer = read_bbox(pointer, &Pmin, &Pmax, FALSE); /* Read bounding box */
-if (fn_begin_char(sp_globals.Psw, Pmin, Pmax)) /* Signal start of character output */
- {
- do
- {
- proc_outl_data(pointer); /* Process outline data */
- }
- while (!fn_end_char()); /* Repeat if not done */
- }
-return TRUE;
-}
-
-FUNCTION static boolean sp_make_comp_char(
-GDECL
-ufix8 FONTFAR *pointer) /* Pointer to first byte of position argument */
-/*
- * Called by sp_make_char() to output a compound character.
- * Returns FALSE if data for any sub-character is not available.
- * Returns TRUE if output completed with no error.
- */
-{
-point_t Pmin, Pmax; /* Transformed corners of bounding box */
-point_t Pssw; /* Transformed escapement vector */
-ufix8 FONTFAR *pointer_sav; /* Saved pointer to compound character data */
-ufix8 FONTFAR *sub_pointer; /* Pointer to sub-character data */
-ufix8 format; /* Format of DOCH instruction */
-ufix16 sub_char_index; /* Index to sub-character in character directory */
-fix15 x_posn; /* X position of sub-character (outline res units) */
-fix15 y_posn; /* Y position of sub-character (outline res units) */
-fix15 x_scale; /* X scale factor of sub-character (scale units) */
-fix15 y_scale; /* Y scale factor of sub-character (scale units) */
-fix15 tmpfix15; /* Temporary workspace */
-fix15 x_orus; /* Set width in outline resolution units */
-fix15 pix_adj; /* Pixel adjustment to compound char bounding box */
-#if INCL_SQUEEZING
-fix31 x_factor, x_offset, top_scale, bottom_scale;
-boolean squeezed_x, squeezed_y;
-#endif
-#if INCL_SQUEEZING || INCL_ISW
-fix15 x_offset_pix;
-#endif
-#if INCL_ISW
-fix31 char_width;
-fix31 isw_scale;
-#endif
-
-
-#if INCL_SQUEEZING
-sp_globals.squeezing_compound = TRUE;
-#endif
-pointer = read_bbox(pointer, &Pmin, &Pmax, TRUE); /* Read bounding box data */
-pix_adj = sp_globals.onepix << 1; /* Allow 2 pixel expansion ... */
-Pmin.x -= pix_adj; /* ... of components of ... */
-Pmin.y -= pix_adj; /* ... compound ... */
-Pmax.x += pix_adj; /* ... character ... */
-Pmax.y += pix_adj; /* ... bounding box. */
-
-#if INCL_SQUEEZING
-/* scale the bounding box if necessary before calling begin_char */
-squeezed_x = calculate_x_scale(&x_factor, &x_offset, 0);
-squeezed_y = calculate_y_scale(&top_scale, &bottom_scale,0,0);
-
-if (squeezed_x)
- { /* scale the x coordinates of the bbox */
- x_offset_pix = (fix15)(((x_offset >> 16) * sp_globals.tcb0.xppo)
- >> sp_globals.mpshift);
- if ((x_offset_pix >0) && (x_offset_pix < sp_globals.onepix))
- x_offset_pix = sp_globals.onepix;
- Pmin.x = SQUEEZE_MULT (x_factor, Pmin.x) + x_offset_pix - pix_adj;
- Pmax.x = SQUEEZE_MULT (x_factor, Pmax.x) + x_offset_pix + pix_adj;
- }
-if (squeezed_y)
- { /* scale the y coordinates of the bbox */
- if ((Pmin.y) < 0)
- Pmin.y = SQUEEZE_MULT (bottom_scale, Pmin.y) - pix_adj;
- else
- Pmin.y = SQUEEZE_MULT (top_scale, Pmin.y) - pix_adj;
- if ((Pmax.y) < 0)
- Pmax.y = SQUEEZE_MULT (bottom_scale, Pmax.y) + pix_adj;
- else
- Pmax.y = SQUEEZE_MULT (top_scale, Pmax.y) + pix_adj;
- }
-#endif
-#if (INCL_ISW)
-if (sp_globals.import_setwidth_act)
- {
- /* make sure I'm not going to get fixed point overflow */
- isw_scale = ((fix31)sp_globals.imported_width << 16)/
- (fix31)sp_globals.setwidth_orus;
- char_width = SQUEEZE_MULT((sp_globals.bbox_xmax_orus -
- sp_globals.bbox_xmin_orus),
-isw_scale);
- if (char_width >= sp_globals.isw_xmax)
- if (!reset_xmax(char_width))
- return FALSE;
- }
-#endif
-
-if (fn_begin_char(sp_globals.Psw, Pmin, Pmax)) /* Signal start of character data */
- {
- pointer_sav = pointer;
- do
- {
- pointer = pointer_sav; /* Point to next DOCH or END instruction */
- while ((format = NEXT_BYTE(pointer))) /* DOCH instruction? */
- {
- init_tcb(); /* Initialize transformation control block */
- x_posn = sp_get_posn_arg(&pointer, format);
- y_posn = sp_get_posn_arg(&pointer, (ufix8)(format >> 2));
- x_scale = sp_get_scale_arg(&pointer, (ufix8)(format & BIT4));
- y_scale = sp_get_scale_arg(&pointer, (ufix8)(format & BIT5));
- scale_tcb(&sp_globals.tcb, x_posn, y_posn, x_scale, y_scale); /* Scale for sub-char */
- sub_char_index = (format & BIT6)? /* Read sub-char index */
- 0xffff & NEXT_WORD(pointer):
- 0xffff & NEXT_BYTE(pointer);
- sub_pointer = sp_get_char_org(sub_char_index, FALSE); /* Point to start of sub-char */
- if (sub_pointer == NULL) /* Character data not available? */
- {
- return FALSE; /* Abort character output */
- }
- sub_pointer += 2; /* Skip over character id */
- x_orus = NEXT_WORD(sub_pointer); /* Read set_width of sub-character */
-
- Pssw.x = (fix15)(
- (fix31)(
- ((fix31)x_orus * (sp_globals.specs.xxmult>>16) +
- ( ((fix31)x_orus * (sp_globals.specs.xxmult&0xffffL) )>>16)
- ) << sp_globals.pixshift) / sp_globals.metric_resolution);
- Pssw.y = (fix15)(
- (fix31)(
- ((fix31)x_orus * (sp_globals.specs.yxmult>>16) +
- ( ((fix31)x_orus * (sp_globals.specs.yxmult&0xffffL) )>>16)
- ) << sp_globals.pixshift) / sp_globals.metric_resolution);
-
- format = NEXT_BYTE(sub_pointer); /* Read sub-character format */
- if (format & BIT1) /* Optional data in header? */
- {
- tmpfix15 = (ufix8)NEXT_BYTE(sub_pointer); /* Read size of optional data */
- sub_pointer += tmpfix15; /* Skip optional data */
- }
- sub_pointer = plaid_tcb(sub_pointer, format); /* Process sub-character plaid data */
- sub_pointer = read_bbox(sub_pointer, &Pmin, &Pmax, FALSE); /* Read bounding box */
- fn_begin_sub_char(Pssw, Pmin, Pmax); /* Signal start of sub-character data */
- proc_outl_data(sub_pointer); /* Process sub-character data */
- fn_end_sub_char(); /* Signal end of sub-character data */
- }
- }
- while (!fn_end_char()); /* Signal end of character; repeat if required */
- }
-return TRUE;
-}
-
-#if INCL_LCD /* Dynamic load character data supported? */
-FUNCTION static ufix8 FONTFAR *sp_get_char_org(
-GDECL
-ufix16 char_index, /* Index of character to be accessed */
-boolean top_level) /* Not a compound character element */
-/*
- * Called by sp_get_char_id(), sp_get_char_width(), sp_make_char() and
- * sp_make_comp_char() to get a pointer to the start of the character data
- * for the specified character index.
- * Version for configuration supporting dynamic character data loading.
- * Calls load_char_data() to load character data if not already loaded
- * as part of the original font buffer.
- * Returns NULL if character data not available
- */
-{
-buff_t *pchar_data; /* Buffer descriptor requested */
-ufix8 FONTFAR *pointer; /* Pointer into character directory */
-ufix8 format; /* Character directory format byte */
-fix31 char_offset; /* Offset of char data from start of font file */
-fix31 next_char_offset; /* Offset of char data from start of font file */
-fix15 no_bytes; /* Number of bytes required for char data */
-
-if (top_level) /* Not element of compound char? */
- {
- if (char_index < sp_globals.first_char_idx) /* Before start of character set? */
- return NULL;
- char_index -= sp_globals.first_char_idx;
- if (char_index >= sp_globals.no_chars_avail) /* Beyond end of character set? */
- return NULL;
- sp_globals.cb_offset = 0; /* Reset char buffer offset */
- }
-
-pointer = sp_globals.pchar_dir;
-format = NEXT_BYTE(pointer); /* Read character directory format byte */
-pointer += char_index << 1; /* Point to indexed character entry */
-if (format) /* 3-byte entries in char directory? */
- {
- pointer += char_index; /* Adjust for 3-byte entries */
- char_offset = read_long(pointer); /* Read file offset to char data */
- next_char_offset = read_long(pointer + 3); /* Read offset to next char */
- }
-else
- {
- char_offset = (fix31)(0xffff & NEXT_WORD(pointer)); /* Read file offset to char data */
- next_char_offset = (fix31)(0xffff & NEXT_WORD(pointer)); /* Read offset to next char */
- }
-
-no_bytes = next_char_offset - char_offset;
-if (no_bytes == 0) /* Character not in directory? */
- return NULL;
-
-if (next_char_offset <= sp_globals.font_buff_size)/* Character data already in font buffer? */
- return sp_globals.pfont->org + char_offset; /* Return pointer into font buffer */
-
-pchar_data = load_char_data(char_offset, no_bytes, sp_globals.cb_offset); /* Request char data load */
-if (pchar_data->no_bytes < no_bytes) /* Correct number of bytes loaded? */
- return NULL;
-
-if (top_level) /* Not element of compound char? */
- {
- sp_globals.cb_offset = no_bytes;
- }
-
-return pchar_data->org; /* Return pointer into character data buffer */
-}
-#endif
-
-#if INCL_LCD
-#else /* Dynamic load character data not supported? */
-FUNCTION static ufix8 FONTFAR *sp_get_char_org(
-GDECL
-ufix16 char_index, /* Index of character to be accessed */
-boolean top_level) /* Not a compound character element */
-/*
- * Called by sp_get_char_id(), sp_get_char_width(), sp_make_char() and
- * sp_make_comp_char() to get a pointer to the start of the character data
- * for the specified character index.
- * Version for configuration not supporting dynamic character data loading.
- * Returns NULL if character data not available
- */
-{
-ufix8 FONTFAR *pointer; /* Pointer into character directory */
-ufix8 format; /* Character directory format byte */
-fix31 char_offset; /* Offset of char data from start of font file */
-fix31 next_char_offset; /* Offset of char data from start of font file */
-fix15 no_bytes; /* Number of bytes required for char data */
-
-if (top_level) /* Not element of compound char? */
- {
- if (char_index < sp_globals.first_char_idx) /* Before start of character set? */
- return NULL;
- char_index -= sp_globals.first_char_idx;
- if (char_index >= sp_globals.no_chars_avail) /* Beyond end of character set? */
- return NULL;
- }
-
-pointer = sp_globals.pchar_dir;
-format = NEXT_BYTE(pointer); /* Read character directory format byte */
-pointer += char_index << 1; /* Point to indexed character entry */
-if (format) /* 3-byte entries in char directory? */
- {
- pointer += char_index; /* Adjust for 3-byte entries */
- char_offset = read_long(pointer); /* Read file offset to char data */
- next_char_offset = read_long(pointer + 3); /* Read offset to next char */
- }
-else
- {
- char_offset = (fix31)(0xffff & NEXT_WORD(pointer)); /* Read file offset to char data */
- next_char_offset = (fix31)(0xffff & NEXT_WORD(pointer)); /* Read offset to next char */
- }
-
-no_bytes = next_char_offset - char_offset;
-if (no_bytes == 0) /* Character not in directory? */
- return NULL;
-
-return sp_globals.pfont->org + char_offset; /* Return pointer into font buffer */
-}
-#endif
-
-
-FUNCTION static fix15 sp_get_posn_arg(
-GDECL
-ufix8 FONTFAR * STACKFAR *ppointer, /* Pointer to first byte of position argument */
-ufix8 format) /* Format of DOCH arguments */
-/*
- * Called by sp_make_comp_char() to read a position argument from the
- * specified point in the font/char buffer.
- * Updates pointer to byte following position argument.
- * Returns value of position argument in outline resolution units
- */
-{
-switch (format & 0x03)
- {
-case 1:
- return NEXT_WORD(*ppointer);
-
-case 2:
- return (fix15)((fix7)NEXT_BYTE(*ppointer));
-
-default:
- return (fix15)0;
- }
-}
-
-FUNCTION static fix15 sp_get_scale_arg(
-GDECL
-ufix8 FONTFAR *STACKFAR *ppointer, /* Pointer to first byte of position argument */
-ufix8 format) /* Format of DOCH arguments */
-/*
- * Called by sp_make_comp_char() to read a scale argument from the
- * specified point in the font/char buffer.
- * Updates pointer to byte following scale argument.
- * Returns value of scale argument in scale units (normally 1/4096)
- */
-{
-if (format)
- return NEXT_WORD(*ppointer);
-else
- return (fix15)ONE_SCALE;
-}
-#if INCL_ISW || INCL_SQUEEZING
-FUNCTION static void preview_bounding_box(
-GDECL
-ufix8 FONTFAR *pointer, /* Pointer to first byte of position argument */
-ufix8 format) /* Character format byte */
-{
-point_t Pmin, Pmax; /* Transformed corners of bounding box */
-
- sp_globals.no_X_orus = (format & BIT2)?
- (fix15)NEXT_BYTE(pointer):
- 0;
- sp_globals.no_Y_orus = (format & BIT3)?
- (fix15)NEXT_BYTE(pointer):
- 0;
- pointer = read_oru_table(pointer);
-
- /* Skip over control zone table */
- pointer = skip_control_zone(pointer,format);
-
- /* Skip over interpolation table */
- pointer = skip_interpolation_table(pointer,format);
- /* get_args has a pathological need for this value to be set */
- sp_globals.Y_edge_org = sp_globals.no_X_orus;
- pointer = read_bbox(pointer, &Pmin, &Pmax, TRUE); /* Read bounding bo
-x */
-
-}
-#endif
-#if INCL_ISW
-FUNCTION static boolean reset_xmax(
-GDECL
-fix31 xmax)
-
-{
-fix15 xmin; /* Minimum X ORU value in font */
-fix15 ymin; /* Minimum Y ORU value in font */
-fix15 ymax; /* Maximum Y ORU value in font */
-
-
-sp_globals.isw_modified_constants = TRUE;
-xmin = read_word_u(sp_globals.font_org + FH_FXMIN);
-ymin = read_word_u(sp_globals.font_org + FH_FYMIN);
-ymax = read_word_u(sp_globals.font_org + FH_FYMAX);
-
-if (!setup_consts(xmin,xmax,ymin,ymax))
- {
- report_error(3); /* Requested specs out of range */
- return FALSE;
- }
-sp_globals.constr.data_valid = FALSE;
-/* recompute setwidth */
-sp_globals.Psw.x = (fix15)((fix31)(
- ((fix31)sp_globals.imported_width * (sp_globals.specs.xxmult>>16) +
- ( ((fix31)sp_globals.imported_width *
- (sp_globals.specs.xxmult&0xffffL) )>>16)
- ) << sp_globals.pixshift) / sp_globals.metric_resolution);
-sp_globals.Psw.y = (fix15)(
- (fix31)(
- ((fix31)sp_globals.imported_width * (sp_globals.specs.yxmult>>16) +
- ( ((fix31)sp_globals.imported_width * (sp_globals.specs.yxmult&0xffffL) )>>16)
- ) << sp_globals.pixshift) / sp_globals.metric_resolution);
-
-return TRUE;
-}
-#endif
diff --git a/libXfont/src/Speedo/do_trns.c b/libXfont/src/Speedo/do_trns.c
deleted file mode 100644
index 95ab102df..000000000
--- a/libXfont/src/Speedo/do_trns.c
+++ /dev/null
@@ -1,498 +0,0 @@
-/* $Xorg: do_trns.c,v 1.3 2000/08/17 19:46:25 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/do_trns.c,v 1.3 2001/01/17 19:43:17 dawes Exp $ */
-
-/**************************** D O _ T R N S . C ******************************
- * *
- * This module is responsible for executing all intelligent transformation *
- * for bounding box and outline data *
- * *
- ****************************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spdo_prv.h" /* General definitions for Speedo */
-
-#define DEBUG 0
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/***** EXTERNAL VARIABLES *****/
-
-/***** EXTERNAL FUNCTIONS *****/
-
-/***** STATIC VARIABLES *****/
-
-/***** STATIC FUNCTIONS *****/
-
-static void sp_split_curve(PROTO_DECL2 point_t P1,point_t P2,point_t P3,fix15 depth);
-static ufix8 FONTFAR *sp_get_args(PROTO_DECL2 ufix8 FONTFAR *pointer,ufix8 format,point_t STACKFAR *pP);
-
-
-FUNCTION ufix8 FONTFAR *read_bbox(
-GDECL
-ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */
-point_t STACKFAR *pPmin, /* Lower left corner of bounding box */
-point_t STACKFAR *pPmax, /* Upper right corner of bounding box */
-boolean set_flag) /* flag to indicate whether global oru bbox should be saved */
-/*
- * Called by make_simp_char() and make_comp_char() to read the
- * bounding box data from the font.
- * Sets Pmin and Pmax to the bottom left and top right corners
- * of the bounding box after transformation into device space.
- * The units of Pmin and Pmax are sub-pixels.
- * Updates *ppointer to point to the byte following the
- * bounding box data.
- */
-{
-ufix8 format1;
-ufix8 format = 0;
-fix15 i;
-point_t P;
-
-sp_globals.x_int = 0;
-sp_globals.y_int = sp_globals.Y_int_org;
-sp_globals.x_orus = sp_globals.y_orus = 0;
-format1 = NEXT_BYTE(pointer);
-pointer = sp_get_args(pointer, format1, pPmin);
-#if INCL_SQUEEZING || INCL_ISW
-if (set_flag)
- {
- sp_globals.bbox_xmin_orus = sp_globals.x_orus;
- sp_globals.bbox_ymin_orus = sp_globals.y_orus;
- }
-#endif
-*pPmax = *pPmin;
-for (i = 1; i < 4; i++)
- {
- switch(i)
- {
- case 1:
- if (format1 & BIT6) /* Xmax requires X int zone 1? */
- sp_globals.x_int++;
- format = (format1 >> 4) | 0x0c;
- break;
-
- case 2:
- if (format1 & BIT7) /* Ymax requires Y int zone 1? */
- sp_globals.y_int++;
- format = NEXT_BYTE(pointer);
- break;
-
- case 3:
- sp_globals.x_int = 0;
- format >>= 4;
- break;
-
- default:
- break;
- }
-
- pointer = sp_get_args(pointer, format, &P);
-#if INCL_SQUEEZING || INCL_ISW
- if (set_flag && (i==2))
- {
- sp_globals.bbox_xmax_orus = sp_globals.x_orus;
- sp_globals.bbox_ymax_orus = sp_globals.y_orus;
- }
-#endif
- if ((i == 2) || (!sp_globals.normal))
- {
- if (P.x < pPmin->x)
- pPmin->x = P.x;
- if (P.y < pPmin->y)
- pPmin->y = P.y;
- if (P.x > pPmax->x)
- pPmax->x = P.x;
- if (P.y > pPmax->y)
- pPmax->y = P.y;
- }
- }
-
-#if DEBUG
-printf("BBOX %6.1f(Xint 0), %6.1f(Yint 0), %6.1f(Xint %d), %6.1f(Yint %d)\n",
- (real)pPmin->x / (real)sp_globals.onepix,
- (real)pPmin->y / (real)sp_globals.onepix,
- (real)pPmax->x / (real)sp_globals.onepix,
- (format1 >> 6) & 0x01,
- (real)pPmax->y / (real)sp_globals.onepix,
- (format1 >> 7) & 0x01);
-
-#endif
-return pointer;
-}
-
-FUNCTION void proc_outl_data(
-GDECL
-ufix8 FONTFAR *pointer) /* Pointer to next byte in char data */
-/*
- * Called by make_simp_char() and make_comp_char() to read the
- * outline data from the font.
- * The outline data is parsed, transformed into device coordinates
- * and passed to an output module for further processing.
- * Note that pointer is not updated to facilitate repeated
- * processing of the outline data when banding mode is in effect.
- */
-{
-ufix8 format1, format2;
-point_t P0, P1, P2, P3;
-fix15 depth;
-fix15 curve_count;
-
-sp_globals.x_int = 0;
-sp_globals.y_int = sp_globals.Y_int_org;
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-record_xint((fix15)sp_globals.x_int); /* Record xint data */
-record_yint((fix15)(sp_globals.y_int - sp_globals.Y_int_org)); /* Record yint data */
-#endif
-
-sp_globals.x_orus = sp_globals.y_orus = 0;
-curve_count = 0;
-while(TRUE)
- {
- format1 = NEXT_BYTE(pointer);
- switch(format1 >> 4)
- {
- case 0: /* LINE */
- pointer = sp_get_args(pointer, format1, &P1);
-#if DEBUG
- printf("LINE %6.1f, %6.1f\n",
- (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix);
-#endif
- fn_line(P1);
- sp_globals.P0 = P1;
- continue;
-
- case 1: /* Short XINT */
- sp_globals.x_int = format1 & 0x0f;
-#if DEBUG
- printf("XINT %d\n", sp_globals.x_int);
-#endif
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-record_xint((fix15)sp_globals.x_int); /* Record xint data */
-#endif
- continue;
-
- case 2: /* Short YINT */
- sp_globals.y_int = sp_globals.Y_int_org + (format1 & 0x0f);
-#if DEBUG
- printf("YINT %d\n", sp_globals.y_int - sp_globals.Y_int_org);
-#endif
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-record_yint((fix15)(sp_globals.y_int - sp_globals.Y_int_org)); /* Record yint data */
-#endif
- continue;
-
- case 3: /* Miscellaneous */
- switch(format1 & 0x0f)
- {
- case 0: /* END */
- if (curve_count)
- {
- fn_end_contour();
- }
- return;
-
- case 1: /* Long XINT */
- sp_globals.x_int = NEXT_BYTE(pointer);
-#if DEBUG
- printf("XINT %d\n", sp_globals.x_int);
-#endif
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-record_xint((fix15)sp_globals.x_int); /* Record xint data */
-#endif
- continue;
-
- case 2: /* Long YINT */
- sp_globals.y_int = sp_globals.Y_int_org + NEXT_BYTE(pointer);
-#if DEBUG
- printf("YINT %d\n", sp_globals.y_int - sp_globals.Y_int_org);
-#endif
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-record_yint((fix15)(sp_globals.y_int - sp_globals.Y_int_org)); /* Record yint data */
-#endif
- continue;
-
- default: /* Not used */
- continue;
- }
-
- case 4: /* MOVE Inside */
- case 5: /* MOVE Outside */
- if (curve_count++)
- {
- fn_end_contour();
- }
-
- pointer = sp_get_args(pointer, format1, &P0);
- sp_globals.P0 = P0;
-#if DEBUG
- printf("MOVE %6.1f, %6.1f\n",
- (real)sp_globals.P0.x / (real)sp_globals.onepix, (real)sp_globals.P0.y / (real)sp_globals.onepix);
-#endif
- fn_begin_contour(sp_globals.P0, (boolean)(format1 & BIT4));
- continue;
-
- case 6: /* Undefined */
-#if DEBUG
- printf("*** Undefined instruction (Hex %4x)\n", format1);
-#endif
- continue;
-
- case 7: /* Undefined */
-#if DEBUG
- printf("*** Undefined instruction (Hex %4x)\n", format1);
-#endif
- continue;
-
- default: /* CRVE */
- format2 = NEXT_BYTE(pointer);
- pointer = sp_get_args(pointer, format1, &P1);
- pointer = sp_get_args(pointer, format2, &P2);
- pointer = sp_get_args(pointer, (ufix8)(format2 >> 4), &P3);
- depth = (format1 >> 4) & 0x07;
-#if DEBUG
- printf("CRVE %6.1f, %6.1f, %6.1f, %6.1f, %6.1f, %6.1f, %d\n",
- (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix,
- (real)P2.x / (real)sp_globals.onepix, (real)P2.y / (real)sp_globals.onepix,
- (real)P3.x / (real)sp_globals.onepix, (real)P3.y / (real)sp_globals.onepix,
- depth);
-#endif
- depth += sp_globals.depth_adj;
- if (sp_globals.curves_out)
- {
- fn_curve(P1, P2, P3, depth);
- sp_globals.P0 = P3;
- continue;
- }
- if (depth <= 0)
- {
- fn_line(P3);
- sp_globals.P0 = P3;
- continue;
- }
- sp_split_curve(P1, P2, P3, depth);
- continue;
- }
- }
-}
-
-FUNCTION static void sp_split_curve(
-GDECL
-point_t P1, /* First control point of Bezier curve */
-point_t P2, /* Second control point of Bezier curve */
-point_t P3, /* End point of Bezier curve */
-fix15 depth) /* Levels of recursive subdivision required */
-/*
- * Called by proc_outl_data() to subdivide Bezier curves into an
- * appropriate number of vectors, whenever curves are not enabled
- * for output to the currently selected output module.
- * sp_split_curve() calls itself recursively to the depth specified
- * at which point it calls line() to deliver each vector resulting
- * from the spliting process.
- */
-{
-fix31 X0 = (fix31)sp_globals.P0.x;
-fix31 Y0 = (fix31)sp_globals.P0.y;
-fix31 X1 = (fix31)P1.x;
-fix31 Y1 = (fix31)P1.y;
-fix31 X2 = (fix31)P2.x;
-fix31 Y2 = (fix31)P2.y;
-fix31 X3 = (fix31)P3.x;
-fix31 Y3 = (fix31)P3.y;
-point_t Pmid;
-point_t Pctrl1;
-point_t Pctrl2;
-
-#if DEBUG
-printf("CRVE(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n",
- (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix,
- (real)P2.x / (real)sp_globals.onepix, (real)P2.y / (real)sp_globals.onepix,
- (real)P3.x / (real)sp_globals.onepix, (real)P3.y / (real)sp_globals.onepix);
-#endif
-
-
-Pmid.x = (X0 + (X1 + X2) * 3 + X3 + 4) >> 3;
-Pmid.y = (Y0 + (Y1 + Y2) * 3 + Y3 + 4) >> 3;
-if ((--depth) <= 0)
- {
- fn_line(Pmid);
- sp_globals.P0 = Pmid;
- fn_line(P3);
- sp_globals.P0 = P3;
- }
-else
- {
- Pctrl1.x = (X0 + X1 + 1) >> 1;
- Pctrl1.y = (Y0 + Y1 + 1) >> 1;
- Pctrl2.x = (X0 + (X1 << 1) + X2 + 2) >> 2;
- Pctrl2.y = (Y0 + (Y1 << 1) + Y2 + 2) >> 2;
- sp_split_curve(Pctrl1, Pctrl2, Pmid, depth);
- Pctrl1.x = (X1 + (X2 << 1) + X3 + 2) >> 2;
- Pctrl1.y = (Y1 + (Y2 << 1) + Y3 + 2) >> 2;
- Pctrl2.x = (X2 + X3 + 1) >> 1;
- Pctrl2.y = (Y2 + Y3 + 1) >> 1;
- sp_split_curve(Pctrl1, Pctrl2, P3, depth);
- }
-}
-
-FUNCTION static ufix8 FONTFAR *sp_get_args(
-GDECL
-ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */
-ufix8 format, /* Format specifiaction of argument pair */
-point_t STACKFAR *pP) /* Resulting transformed point */
-/*
- * Called by read_bbox() and proc_outl_data() to read an X Y argument
- * pair from the font.
- * The format is specified as follows:
- * Bits 0-1: Type of X argument.
- * Bits 2-3: Type of Y argument.
- * where the 4 possible argument types are:
- * Type 0: Controlled coordinate represented by one byte
- * index into the X or Y controlled coordinate table.
- * Type 1: Interpolated coordinate represented by a two-byte
- * signed integer.
- * Type 2: Interpolated coordinate represented by a one-byte
- * signed increment/decrement relative to the
- * proceding X or Y coordinate.
- * Type 3: Repeat of preceding X or Y argument value and type.
- * The units of P are sub-pixels.
- * Updates *ppointer to point to the byte following the
- * argument pair.
- */
-{
-ufix8 edge;
-
-/* Read X argument */
-switch(format & 0x03)
- {
-case 0: /* Index to controlled oru */
- edge = NEXT_BYTE(pointer);
- sp_globals.x_orus = sp_plaid.orus[edge];
- sp_globals.x_pix = sp_plaid.pix[edge];
- break;
-
-case 1: /* 2 byte interpolated oru value */
- sp_globals.x_orus = NEXT_WORD(pointer);
- goto L1;
-
-case 2: /* 1 byte signed oru increment */
- sp_globals.x_orus += (fix15)((fix7)NEXT_BYTE(pointer));
-L1:
- sp_globals.x_pix = TRANS(sp_globals.x_orus, sp_plaid.mult[sp_globals.x_int], sp_plaid.offset[sp_globals.x_int], sp_globals.mpshift);
- break;
-
-default: /* No change in X value */
- break;
- }
-
-/* Read Y argument */
-switch((format >> 2) & 0x03)
- {
-case 0: /* Index to controlled oru */
- edge = sp_globals.Y_edge_org + NEXT_BYTE(pointer);
- sp_globals.y_orus = sp_plaid.orus[edge];
- sp_globals.y_pix = sp_plaid.pix[edge];
- break;
-
-case 1: /* 2 byte interpolated oru value */
- sp_globals.y_orus = NEXT_WORD(pointer);
- goto L2;
-
-case 2: /* 1 byte signed oru increment */
- sp_globals.y_orus += (fix15)((fix7)NEXT_BYTE(pointer));
-L2:
- sp_globals.y_pix = TRANS(sp_globals.y_orus, sp_plaid.mult[sp_globals.y_int], sp_plaid.offset[sp_globals.y_int], sp_globals.mpshift);
- break;
-
-default: /* No change in X value */
- break;
- }
-
-switch(sp_globals.tcb.xmode)
- {
-case 0: /* X mode 0 */
- pP->x = sp_globals.x_pix;
- break;
-
-case 1: /* X mode 1 */
- pP->x = -sp_globals.x_pix;
- break;
-
-case 2: /* X mode 2 */
- pP->x = sp_globals.y_pix;
- break;
-
-case 3: /* X mode 3 */
- pP->x = -sp_globals.y_pix;
- break;
-
-default: /* X mode 4 */
- pP->x = (MULT16(sp_globals.x_orus, sp_globals.tcb.xxmult) +
- MULT16(sp_globals.y_orus, sp_globals.tcb.xymult) +
- sp_globals.tcb.xoffset) >> sp_globals.mpshift;
- break;
- }
-
-switch(sp_globals.tcb.ymode)
- {
-case 0: /* Y mode 0 */
- pP->y = sp_globals.y_pix;
- break;
-
-case 1: /* Y mode 1 */
- pP->y = -sp_globals.y_pix;
- break;
-
-case 2: /* Y mode 2 */
- pP->y = sp_globals.x_pix;
- break;
-
-case 3: /* Y mode 3 */
- pP->y = -sp_globals.x_pix;
- break;
-
-default: /* Y mode 4 */
- pP->y = (MULT16(sp_globals.x_orus, sp_globals.tcb.yxmult) +
- MULT16(sp_globals.y_orus, sp_globals.tcb.yymult) +
- sp_globals.tcb.yoffset) >> sp_globals.mpshift;
- break;
- }
-
-return pointer;
-}
-
-
-
diff --git a/libXfont/src/Speedo/keys.h b/libXfont/src/Speedo/keys.h
deleted file mode 100644
index dd9d0bff7..000000000
--- a/libXfont/src/Speedo/keys.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* $Xorg: keys.h,v 1.3 2000/08/17 19:46:25 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-
-
-/***** DECRYPTION KEY CONSTANTS (PC Platform) *****/
-
-#define CUS0 432 /* Customer number */
-
-#define KEY0 0 /* Decryption key 0 */
-#define KEY1 72 /* Decryption key 1 */
-#define KEY2 123 /* Decryption key 2 */
-#define KEY3 1 /* Decryption key 3 */
-#define KEY4 222 /* Decryption key 4 */
-#define KEY5 194 /* Decryption key 5 */
-#define KEY6 113 /* Decryption key 6 */
-#define KEY7 119 /* Decryption key 7 */
-#define KEY8 52 /* Decryption key 8 */
-
-/***** DECRYPTION KEY CONSTANTS (Sample) *****/
-
-#define XSAMPLEFONTS
-
-#define XCUS0 0 /* Customer number */
-
-#define XKEY0 0 /* Decryption key 0 */
-#define XKEY1 0 /* Decryption key 1 */
-#define XKEY2 0 /* Decryption key 2 */
-#define XKEY3 0 /* Decryption key 3 */
-#define XKEY4 0 /* Decryption key 4 */
-#define XKEY5 0 /* Decryption key 5 */
-#define XKEY6 0 /* Decryption key 6 */
-#define XKEY7 0 /* Decryption key 7 */
-#define XKEY8 0 /* Decryption key 8 */
-
-
diff --git a/libXfont/src/Speedo/out_bl2d.c b/libXfont/src/Speedo/out_bl2d.c
deleted file mode 100644
index 6c38cb30d..000000000
--- a/libXfont/src/Speedo/out_bl2d.c
+++ /dev/null
@@ -1,772 +0,0 @@
-/* $Xorg: out_bl2d.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/out_bl2d.c,v 1.3 1999/02/07 11:47:14 dawes Exp $ */
-
-/*************************** O U T _ B L 2 D . C *****************************
- * *
- * This is an output module for screen writer using two dimensional scanning *
- ****************************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spdo_prv.h" /* General definitions for speedo */
-
-#define CLOCKWISE 1
-#define DEBUG 0
-#define ABS(X) ( (X < 0) ? -X : X)
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/***** EXTERNAL VARIABLES *****/
-
-/***** EXTERNAL FUNCTIONS *****/
-
-/***** STATIC VARIABLES *****/
-
-/***** STATIC FUNCTIONS *****/
-
-#if INCL_2D
-static void sp_draw_vector_to_2d(PROTO_DECL2 fix15 x0,fix15 y0,fix15 x1,fix15 y1,band_t GLOBALFAR *band);
-static void sp_add_intercept_2d(PROTO_DECL2 fix15 y,fix15 x);
-static void sp_proc_intercepts_2d(PROTO_DECL1);
-#endif
-
-#if INCL_2D
-FUNCTION boolean init_2d(
-GDECL
-specs_t GLOBALFAR *specsarg)
-/*
- * init_out_2d() is called by sp_set_specs() to initialize the output module.
- * Returns TRUE if output module can accept requested specifications.
- * Returns FALSE otherwise.
- */
-{
-
-if (specsarg->flags & CURVES_OUT)
- return FALSE; /* Curves out, clipping not supported */
-
-#if DEBUG
-printf("INIT_OUT__2d()\n");
-#endif
-return TRUE;
-}
-#endif
-
-#if INCL_2D
-FUNCTION boolean begin_char_2d(
-GDECL
-point_t Psw,
-point_t Pmin,
-point_t Pmax)
-/* Called once at the start of the character generation process
- * Initializes intercept table, either calculates pixel maxima or
- * decides that they need to be collected
- */
-{
-#if DEBUG
-printf("BEGIN_CHAR__2d(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n",
- (real)Psw.x / (real)sp_globals.onepix, (real)Psw.y / (real)sp_globals.onepix,
- (real)Pmin.x / (real)sp_globals.onepix, (real)Pmin.y / (real)sp_globals.onepix,
- (real)Pmax.x / (real)sp_globals.onepix, (real)Pmax.y / (real)sp_globals.onepix);
-#endif
-/* Convert PIX.FRAC to 16.16 form */
-sp_globals.x_scan_active = TRUE; /* Assume x-scanning from the start */
-
-init_char_out(Psw,Pmin,Pmax);
-return TRUE;
-}
-#endif
-
-
-#if INCL_2D
-FUNCTION void begin_contour_2d(
-GDECL
-point_t P1,
-boolean outside)
-/* Called at the start of each contour
- */
-{
-
-#if DEBUG
-printf("BEGIN_CONTOUR__2d(%3.4f, %3.4f, %s)\n",
- (real)P1.x / (real)sp_globals.onepix,
- (real)P1.y / (real)sp_globals.onepix,
- outside? "outside": "inside");
-#endif
-sp_globals.x0_spxl = P1.x;
-sp_globals.y0_spxl = P1.y;
-}
-#endif
-
-#if INCL_2D
-FUNCTION void line_2d(
-GDECL
-point_t P1)
-/*
- * Called for each vector in the transformed character
- * "draws" vector into intercept table
- */
-{
-
-#if DEBUG
-printf("LINE_0(%3.4f, %3.4f)\n",
- (real)P1.x / (real)sp_globals.onepix,
- (real)P1.y / (real)sp_globals.onepix);
-#endif
-
-if (sp_globals.extents_running)
- {
- if (sp_globals.x0_spxl > sp_globals.bmap_xmax)
- sp_globals.bmap_xmax = sp_globals.x0_spxl;
- if (sp_globals.x0_spxl < sp_globals.bmap_xmin)
- sp_globals.bmap_xmin = sp_globals.x0_spxl;
- if (sp_globals.y0_spxl > sp_globals.bmap_ymax)
- sp_globals.bmap_ymax = sp_globals.y0_spxl;
- if (sp_globals.y0_spxl < sp_globals.bmap_ymin)
- sp_globals.bmap_ymin = sp_globals.y0_spxl;
- }
-
-if (!sp_globals.intercept_oflo)
- {
- sp_draw_vector_to_2d(sp_globals.x0_spxl,
- sp_globals.y0_spxl,
- P1.x,
- P1.y,
- &sp_globals.y_band); /* y-scan */
-
- if (sp_globals.x_scan_active)
- sp_draw_vector_to_2d(sp_globals.y0_spxl,
- sp_globals.x0_spxl,
- P1.y,
- P1.x,
- &sp_globals.x_band); /* x-scan if selected */
- }
-
-sp_globals.x0_spxl = P1.x;
-sp_globals.y0_spxl = P1.y; /* update endpoint */
-}
-
-FUNCTION static void sp_draw_vector_to_2d(
-GDECL
-fix15 x0, /* X coordinate */
-fix15 y0, /* Y coordinate */
-fix15 x1,
-fix15 y1,
-band_t GLOBALFAR *band)
-{
-register fix15 how_many_y; /* # of intercepts at y = n + 1/2 */
-register fix15 yc; /* Current scan-line */
- fix15 temp1; /* various uses */
- fix15 temp2; /* various uses */
-register fix31 dx_dy; /* slope of line in 16.16 form */
-register fix31 xc; /* high-precision (16.16) x coordinate */
- fix15 y_pxl;
-
-yc = (y0 + sp_globals.pixrnd) >> sp_globals.pixshift; /* current scan line = end of last line */
-y_pxl = (y1 + sp_globals.pixrnd) >> sp_globals.pixshift; /* calculate new end-scan line */
-
-if ((how_many_y = y_pxl - yc) == 0) return; /* Don't draw a null line */
-
-if (how_many_y < 0) yc--; /* Predecrment downward lines */
-
-if (yc > band->band_max) /* Is start point above band? */
- {
- if (y_pxl > band->band_max) return; /* line has to go down! */
- how_many_y = y_pxl - (yc = band->band_max) - 1; /* Yes, limit it */
- }
-
-if (yc < band->band_min) /* Is start point below band? */
- {
- if (y_pxl < band->band_min) return; /* line has to go up! */
- how_many_y = y_pxl - (yc = band->band_min); /* Yes, limit it */
- }
-
-xc = (fix31)(x0 + sp_globals.pixrnd) << 16; /* Original x coordinate with built in */
- /* rounding. int.16 + pixshift form */
-
-if ( (temp1 = (x1 - x0)) == 0) /* check for vertical line */
- {
- dx_dy = 0L; /* Zero slope, leave xc alone */
- goto skip_calc;
- }
-
-/* calculate dx_dy at 16.16 fixed point */
-
-dx_dy = ( (fix31)temp1 << 16 )/(fix31)(y1 - y0);
-
-/* We have to check for a @#$%@# possible multiply overflow */
-/* by doing another @#$*& multiply. In assembly language, */
-/* the program could just check the OVerflow flag or whatever*/
-/* works on the particular processor. This C code is meant */
-/* to be processor independent. */
-
-temp1 = (yc << sp_globals.pixshift) - y0 + sp_globals.pixrnd;
-/* This sees if the sign bits start at bit 15 */
-/* if they do, no overflow has occurred */
-
-temp2 = (fix15)(MULT16(temp1,(fix15)(dx_dy >> 16)) >> 15);
-
-if ( (temp2 != (fix15)0xFFFF) &&
- (temp2 != 0x0000) )
- { /* Overflow. Pick point closest to yc + .5 */
- if (ABS(temp1) < ABS((yc << sp_globals.pixshift) - y1 + sp_globals.pixrnd))
- { /* use x1 instead of x0 */
- xc = (fix31)(x1 + sp_globals.pixrnd) << (16 - sp_globals.pixshift);
- }
- goto skip_calc;
- }
-/* calculate new xc at the center of the *current* scan line */
-/* due to banding, yc may be several lines away from y0 */
-/* xc += (yc + .5 - y0) * dx_dy */
-/* This multiply generates a subpixel delta. */
-/* So we leave it as an int.pixshift + 16 delta */
-
-xc += (fix31)temp1 * dx_dy;
-dx_dy <<= sp_globals.pixshift;
-skip_calc:
-
-yc -= band->band_array_offset; /* yc is now an offset relative to the band */
-
-if (how_many_y < 0)
- { /* Vector down */
- if ((how_many_y += yc + 1) < band->band_floor)
- how_many_y = band->band_floor; /* can't go below floor */
- while(yc >= how_many_y)
- {
- temp1 = (fix15)(xc >> 16);
- sp_add_intercept_2d(yc--,temp1);
- xc -= dx_dy;
- }
- }
- else
- { /* Vector up */
- /* check to see that line doesn't extend beyond top of band */
- if ((how_many_y += yc) > band->band_ceiling)
- how_many_y = band->band_ceiling;
- while(yc < how_many_y)
- {
- temp1 = (fix15)(xc >> 16);
- sp_add_intercept_2d(yc++,temp1);
- xc += dx_dy;
- }
- }
-}
-
-#endif
-
-#if INCL_2D
-FUNCTION boolean end_char_2d()
-/* Called when all character data has been output
- * Return TRUE if output process is complete
- * Return FALSE to repeat output of the transformed data beginning
- * with the first contour
- */
-{
-
-fix31 xorg;
-fix31 yorg;
-#if INCL_CLIPPING
-fix31 em_max, em_min, bmap_max, bmap_min;
-#endif
-
-#if DEBUG
-printf("END_CHAR__2d()\n");
-#endif
-
-if (sp_globals.first_pass)
- {
- if (sp_globals.bmap_xmax >= sp_globals.bmap_xmin)
- {
- sp_globals.xmin = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- sp_globals.xmax = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
- }
- else
- {
- sp_globals.xmin = sp_globals.xmax = 0;
- }
- if (sp_globals.bmap_ymax >= sp_globals.bmap_ymin)
- {
-
-#if INCL_CLIPPING
- switch(sp_globals.tcb0.xtype)
- {
- case 1: /* 180 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_ymin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift;
- bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- sp_globals.clip_ymin = -1 * sp_globals.clip_ymin;
- if (bmap_min < sp_globals.clip_ymin)
- sp_globals.ymin = sp_globals.clip_ymin;
- else
- sp_globals.ymin = bmap_min;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_ymax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max < sp_globals.clip_ymax)
- sp_globals.ymax = bmap_max;
- else
- sp_globals.ymax = sp_globals.clip_ymax;
- }
- sp_globals.clip_xmax = -sp_globals.xmin;
- sp_globals.clip_xmin = ((sp_globals.set_width.x+32768L) >> 16) -
- sp_globals.xmin;
- break;
- case 2: /* 90 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_xmin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift;
- sp_globals.clip_xmin = -1 * sp_globals.clip_xmin;
- bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- if (bmap_min > sp_globals.clip_xmin)
- sp_globals.clip_xmin = bmap_min;
-
- /* normalize to x origin */
- sp_globals.clip_xmin -= sp_globals.xmin;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_xmax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max < sp_globals.clip_xmax)
- sp_globals.xmax = bmap_max;
- else
- sp_globals.xmax = sp_globals.clip_xmax;
- sp_globals.clip_ymax = 0;
- if ((sp_globals.specs.flags & CLIP_TOP) &&
- (sp_globals.ymax > sp_globals.clip_ymax))
- sp_globals.ymax = sp_globals.clip_ymax;
- sp_globals.clip_ymin = ((sp_globals.set_width.y+32768L) >> 16);
- if ((sp_globals.specs.flags & CLIP_BOTTOM) &&
- (sp_globals.ymin < sp_globals.clip_ymin))
- sp_globals.ymin = sp_globals.clip_ymin;
- /* normalize to x origin */
- sp_globals.clip_xmax -= sp_globals.xmin;
- }
- break;
- case 3: /* 270 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_xmin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift;
- sp_globals.clip_xmin = -1 * sp_globals.clip_xmin;
- bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
-
- /* let the minimum be the larger of these two values */
- if (bmap_min > sp_globals.clip_xmin)
- sp_globals.clip_xmin = bmap_min;
-
- /* normalize the x value to new xorgin */
- sp_globals.clip_xmin -= sp_globals.xmin;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_xmax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
-
- /* let the max be the lesser of these two values */
- if (bmap_max < sp_globals.clip_xmax)
- {
- sp_globals.xmax = bmap_max;
- sp_globals.clip_xmax = bmap_max;
- }
- else
- sp_globals.xmax = sp_globals.clip_xmax;
-
- /* normalize the x value to new x origin */
- sp_globals.clip_xmax -= sp_globals.xmin;
- }
- /* compute y clip values */
- sp_globals.clip_ymax = ((sp_globals.set_width.y+32768L) >> 16);
- if ((sp_globals.specs.flags & CLIP_TOP) &&
- (sp_globals.ymax > sp_globals.clip_ymax))
- sp_globals.ymax = sp_globals.clip_ymax;
- sp_globals.clip_ymin = 0;
- if ((sp_globals.specs.flags & CLIP_BOTTOM) &&
- (sp_globals.ymin < sp_globals.clip_ymin))
- sp_globals.ymin = sp_globals.clip_ymin;
- break;
- default: /* this is for zero degree rotation and arbitrary rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_ymax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max > sp_globals.clip_ymax)
- sp_globals.ymax = bmap_max;
- else
- sp_globals.ymax = sp_globals.clip_ymax;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_ymin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift;
- sp_globals.clip_ymin = - sp_globals.clip_ymin;
- bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- if (bmap_min < sp_globals.clip_ymin)
- sp_globals.ymin = sp_globals.clip_ymin;
- else
- sp_globals.ymin = bmap_min;
- }
- sp_globals.clip_xmin = -sp_globals.xmin;
- sp_globals.clip_xmax = ((sp_globals.set_width.x+32768L) >> 16) -
- sp_globals.xmin;
- break;
- }
-if ( !(sp_globals.specs.flags & CLIP_TOP))
-#endif
- sp_globals.ymax = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
-
-#if INCL_CLIPPING
-if ( !(sp_globals.specs.flags & CLIP_BOTTOM))
-#endif
- sp_globals.ymin = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- }
- else
- {
- sp_globals.ymin = sp_globals.ymax = 0;
- }
-
- /* add in the rounded out part (from xform.) of the left edge */
- if (sp_globals.tcb.xmode == 0) /* for X pix is function of X orus only add the round */
- xorg = (((fix31)sp_globals.xmin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift));
- else
- if (sp_globals.tcb.xmode == 1) /* for X pix is function of -X orus only, subtr. round */
- xorg = (((fix31)sp_globals.xmin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)) ;
- else
- xorg = (fix31)sp_globals.xmin << 16; /* for other cases don't use round on x */
-
- if (sp_globals.tcb.ymode == 2) /* for Y pix is function of X orus only, add round error */
- yorg = (((fix31)sp_globals.ymin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift));
- else
- if (sp_globals.tcb.ymode == 3) /* for Y pix is function of -X orus only, sub round */
- yorg = (((fix31)sp_globals.ymin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift));
- else /* all other cases have no round error on yorg */
- yorg = (fix31)sp_globals.ymin << 16;
-
- open_bitmap(sp_globals.set_width.x, sp_globals.set_width.y, xorg, yorg,
- sp_globals.xmax - sp_globals.xmin, sp_globals.ymax - sp_globals.ymin);
- if (sp_globals.intercept_oflo)
- {
- sp_globals.y_band.band_min = sp_globals.ymin;
- sp_globals.y_band.band_max = sp_globals.ymax;
- sp_globals.x_scan_active = FALSE;
- sp_globals.no_x_lists = 0;
- init_intercepts_out();
- sp_globals.first_pass = FALSE;
- sp_globals.extents_running = FALSE;
- return FALSE;
- }
- else
- {
- sp_proc_intercepts_2d();
- close_bitmap();
- return TRUE;
- }
- }
-else
- {
- if (sp_globals.intercept_oflo)
- {
- reduce_band_size_out();
- init_intercepts_out();
- return FALSE;
- }
- else
- {
- sp_proc_intercepts_2d();
- if (next_band_out())
- {
- init_intercepts_out();
- return FALSE;
- }
- close_bitmap();
- return TRUE;
- }
- }
-}
-#endif
-
-#if INCL_2D
-FUNCTION static void sp_add_intercept_2d(
-GDECL
-fix15 y, /* Y coordinate in relative pixel units */
- /* (0 is lowest sample in band) */
-fix15 x) /* X coordinate of intercept in subpixel units */
-
-/* Called by line() to add an intercept to the intercept list structure
- */
-
-{
-register fix15 from; /* Insertion pointers for the linked list sort */
-register fix15 to;
-
-#if DEBUG
-/* Bounds checking IS done in debug mode */
-if ((y >= MAX_INTERCEPTS) || (y < 0))
- {
- printf("Intercept out of table!!!!! (%d)\n",y);
- return;
- }
-
-if (y >= sp_globals.no_y_lists)
- {
- printf(" Add x intercept(%2d, %f)\n",
- y + sp_globals.x_band.band_min - sp_globals.no_y_lists,
- (real)x/(real)sp_globals.onepix);
- if (y > (sp_globals.no_x_lists + sp_globals.no_y_lists))
- {
- printf(" Intercept too big for band!!!!!\007\n");
- return;
- }
- }
- else
- {
- printf(" Add y intercept(%2d, %f)\n", y + sp_globals.y_band.band_min,(real)x/(real)sp_globals.onepix);
- }
-
-if (y < 0) /* Y value below bottom of current band? */
- {
- printf(" Intecerpt less than 0!!!\007\n");
- return;
- }
-#endif
-
-/* Store new values */
-
-sp_intercepts.car[sp_globals.next_offset] = x;
-
-/* Find slot to insert new element (between from and to) */
-
-from = y; /* Start at list head */
-
-while( (to = sp_intercepts.cdr[from]) >= sp_globals.first_offset) /* Until to == end of list */
- {
- if (x <= sp_intercepts.car[to]) /* If next item is larger than or same as this one... */
- goto insert_element; /* ... drop out and insert here */
- from = to; /* move forward in list */
- }
-
-insert_element: /* insert element "next_offset" between elements "from" */
- /* and "to" */
-
-sp_intercepts.cdr[from] = sp_globals.next_offset;
-sp_intercepts.cdr[sp_globals.next_offset] = to;
-
-if (++sp_globals.next_offset >= MAX_INTERCEPTS) /* Intercept buffer full? */
- {
- sp_globals.intercept_oflo = TRUE;
-/* There may be a few more calls to "add_intercept" from the current line */
-/* To avoid problems, we set next_offset to a safe value. We don't care */
-/* if the intercept table gets trashed at this point */
- sp_globals.next_offset = sp_globals.first_offset;
- }
-}
-
-#endif
-
-#if INCL_2D
-FUNCTION static void sp_proc_intercepts_2d()
-/* Called by sp_make_char to output accumulated intercept lists
- * Clips output to xmin, xmax, sp_globals.ymin, ymax boundaries
- */
-{
-register fix15 i;
-register fix15 from, to; /* Start and end of run in pixel units
- relative to left extent of character */
-register fix15 y;
-register fix15 scan_line;
- fix15 local_bmap_xmin;
- fix15 local_bmap_xmax;
- fix15 first_y, last_y;
- fix15 j,k;
-
-#if INCL_CLIPPING
-if ((sp_globals.specs.flags & CLIP_LEFT) != 0)
- clipleft = TRUE;
-else
- clipleft = FALSE;
-if ((sp_globals.specs.flags & CLIP_RIGHT) != 0)
- clipright = TRUE;
-else
- clipright = FALSE;
-if (clipleft || clipright)
- {
- xmax = sp_globals.clip_xmax << sp_globals.pixshift;
- xmin = sp_globals.clip_xmin << sp_globals.pixshift;
- }
-if (!clipright)
- xmax = ((sp_globals.set_width.x+32768L) >> 16);
-#endif
-
-if (sp_globals.x_scan_active) /* If xscanning, we need to make sure we don't miss any important pixels */
- {
- first_y = sp_globals.x_band.band_floor; /* start of x lists */
- last_y = sp_globals.x_band.band_ceiling; /* end of x lists */
- for (y = first_y; y != last_y; y++) /* scan all xlists */
- {
- i = sp_intercepts.cdr[y]; /* Index head of intercept list */
- while (i != 0) /* Link to next intercept if present */
- {
- from = sp_intercepts.car[i];
- j = i;
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
- if (i == 0) /* End of list? */
- {
-#if DEBUG
- printf("****** proc_intercepts: odd number of intercepts in x list\n");
-#endif
- break;
- }
- to = sp_intercepts.car[i];
- k = sp_intercepts.cdr[i];
- if (((to >> sp_globals.pixshift) >= (from >> sp_globals.pixshift)) &&
- ((to - from) < (sp_globals.onepix + 1)))
- {
- from = ((fix31)to + (fix31)from - (fix31)sp_globals.onepix) >> (sp_globals.pixshift + 1);
- if (from > sp_globals.y_band.band_max)
- from = sp_globals.y_band.band_max;
- if ((from -= sp_globals.y_band.band_min) < 0)
- from = 0;
- to = ((y - sp_globals.x_band.band_floor + sp_globals.x_band.band_min)
- << sp_globals.pixshift)
- + sp_globals.pixrnd;
- sp_intercepts.car[j] = to;
- sp_intercepts.car[i] = to + sp_globals.onepix;
- sp_intercepts.cdr[i] = sp_intercepts.cdr[from];
- sp_intercepts.cdr[from] = j;
- }
- i = k;
- }
- }
- }
-#if DEBUG
-printf("\nIntercept lists:\n");
-#endif
-
-if ((first_y = sp_globals.y_band.band_max) >= sp_globals.ymax)
- first_y = sp_globals.ymax - 1; /* Clip to ymax boundary */
-
-if ((last_y = sp_globals.y_band.band_min) < sp_globals.ymin)
- last_y = sp_globals.ymin; /* Clip to sp_globals.ymin boundary */
-
-last_y -= sp_globals.y_band.band_array_offset;
-
-local_bmap_xmin = sp_globals.xmin << sp_globals.pixshift;
-local_bmap_xmax = (sp_globals.xmax << sp_globals.pixshift) + sp_globals.pixrnd;
-
-#if DEBUG
-/* Print out all of the intercept info */
-scan_line = sp_globals.ymax - first_y - 1;
-
-for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++)
- {
- i = y; /* Index head of intercept list */
- while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */
- {
- if ((from = sp_intercepts.car[i] - local_bmap_xmin) < 0)
- from = 0; /* Clip to xmin boundary */
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
- if (i == 0) /* End of list? */
- {
- printf("****** proc_intercepts: odd number of intercepts\n");
- break;
- }
- if ((to = sp_intercepts.car[i]) > sp_globals.bmap_xmax)
- to = sp_globals.bmap_xmax - local_bmap_xmin; /* Clip to xmax boundary */
- else
- to -= local_bmap_xmin;
- printf(" Y = %2d (scanline %2d): %3.4f %3.4f:\n",
- y + sp_globals.y_band.band_min,
- scan_line,
- (real)from / (real)sp_globals.onepix,
- (real)to / (real)sp_globals.onepix);
- }
- }
-#endif
-
-/* Draw the image */
-scan_line = sp_globals.ymax - first_y - 1;
-
-for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++)
- {
- i = y; /* Index head of intercept list */
- while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */
- {
- if ((from = sp_intercepts.car[i] - local_bmap_xmin) < 0)
- from = 0; /* Clip to xmin boundary */
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
-
- if ((to = sp_intercepts.car[i]) > local_bmap_xmax)
- to = sp_globals.bmap_xmax - local_bmap_xmin; /* Clip to xmax boundary */
- else
- to -= local_bmap_xmin;
-#if INCL_CLIPPING
- if (clipleft)
- {
- if (to <= xmin)
- continue;
- if (from < xmin)
- from = xmin;
- }
- if (clipright)
- {
- if (from >= xmax)
- continue;
- if (to > xmax)
- to = xmax;
- }
-#endif
- if ( (to - from) <= sp_globals.onepix)
- {
- from = (to + from - sp_globals.onepix) >> (sp_globals.pixshift + 1);
- set_bitmap_bits(scan_line, from, from + 1);
- }
- else
- {
- set_bitmap_bits(scan_line, from >> sp_globals.pixshift, to >> sp_globals.pixshift);
- }
- }
- }
-}
-
-#endif
diff --git a/libXfont/src/Speedo/out_blk.c b/libXfont/src/Speedo/out_blk.c
deleted file mode 100644
index a5b669b2a..000000000
--- a/libXfont/src/Speedo/out_blk.c
+++ /dev/null
@@ -1,706 +0,0 @@
-/* $Xorg: out_blk.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/out_blk.c,v 1.2 1999/02/07 06:18:16 dawes Exp $ */
-
-
-/*************************** O U T _ B L K . C *********************************
- * *
- * This is an output module for black-writer mode. *
- * *
- *****************************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spdo_prv.h" /* General definitions for Speedo */
-
-#define DEBUG 0
-#define LOCAL static
-#define ABS(X) ( (X < 0) ? -X : X)
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-
-
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/***** EXTERNAL VARIABLES *****/
-
-/***** EXTERNAL FUNCTIONS *****/
-
-/***** STATIC VARIABLES *****/
-
-/***** STATIC FUNCTIONS *****/
-
-#if INCL_BLACK
-static void sp_add_intercept_black(PROTO_DECL2 fix15 y, fix15 x);
-static void sp_proc_intercepts_black(PROTO_DECL1);
-#endif
-
-
-#if INCL_BLACK
-FUNCTION boolean init_black(
-GDECL
-specs_t GLOBALFAR *specsarg)
-/*
- * init_out0() is called by sp_set_specs() to initialize the output module.
- * Returns TRUE if output module can accept requested specifications.
- * Returns FALSE otherwise.
- */
-{
-#if DEBUG
-printf("INIT_BLK()\n");
-#endif
-if (specsarg->flags & CURVES_OUT)
- return FALSE; /* Curves out not supported */
-return (TRUE);
-}
-#endif
-
-
-#if INCL_BLACK
-FUNCTION boolean begin_char_black(
-GDECL
-point_t Psw,
-point_t Pmin,
-point_t Pmax)
-/* Called once at the start of the character generation process
- */
-{
-#if DEBUG
-printf("BEGIN_CHAR_BLACK(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n",
- (real)Psw.x / (real)sp_globals.onepix, (real)Psw.y / (real)sp_globals.onepix,
- (real)Pmin.x / (real)sp_globals.onepix, (real)Pmin.y / (real)sp_globals.onepix,
- (real)Pmax.x / (real)sp_globals.onepix, (real)Pmax.y / (real)sp_globals.onepix);
-#endif
-init_char_out(Psw,Pmin,Pmax);
-return TRUE;
-}
-#endif
-
-
-#if INCL_BLACK
-FUNCTION void begin_contour_black(
-GDECL
-point_t P1,
-boolean outside)
-/* Called at the start of each contour
- */
-{
-
-#if DEBUG
-printf("BEGIN_CONTOUR_BLACK(%3.1f, %3.1f, %s)\n",
- (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix, outside? "outside": "inside");
-#endif
-sp_globals.x0_spxl = P1.x;
-sp_globals.y0_spxl = P1.y;
-sp_globals.y_pxl = (sp_globals.y0_spxl + sp_globals.pixrnd) >> sp_globals.pixshift;
-}
-#endif
-
-#if INCL_BLACK
-FUNCTION void line_black(
-GDECL
-point_t P1)
-/* Called for each vector in the transformed character
- */
-{
-register fix15 how_many_y; /* # of intercepts at y = n + 1/2 */
-register fix15 yc, i; /* Current scan-line */
- fix15 temp1; /* various uses */
- fix15 temp2; /* various uses */
-register fix31 dx_dy; /* slope of line in 16.16 form */
-register fix31 xc; /* high-precision (16.16) x coordinate */
- fix15 x0,y0,x1,y1; /* PIX.FRAC start and endpoints */
-
-x0 = sp_globals.x0_spxl; /* get start of line (== current point) */
-y0 = sp_globals.y0_spxl;
-sp_globals.x0_spxl = x1 = P1.x; /* end of line */
-sp_globals.y0_spxl = y1 = P1.y; /* (also update current point to end of line) */
-
-yc = sp_globals.y_pxl; /* current scan line = end of last line */
-sp_globals.y_pxl = (y1 + sp_globals.pixrnd) >> sp_globals.pixshift; /* calculate new end-scan sp_globals.line */
-
-
-#if DEBUG
-printf("LINE_BLACK(%3.4f, %3.4f)\n",
- (real)P1.x/(real)sp_globals.onepix,
- (real)P1.y/(real)sp_globals.onepix);
-#endif
-
-if (sp_globals.extents_running)
- {
- if (sp_globals.x0_spxl > sp_globals.bmap_xmax)
- sp_globals.bmap_xmax = sp_globals.x0_spxl;
- if (sp_globals.x0_spxl < sp_globals.bmap_xmin)
- sp_globals.bmap_xmin = sp_globals.x0_spxl;
- if (sp_globals.y0_spxl > sp_globals.bmap_ymax)
- sp_globals.bmap_ymax = sp_globals.y0_spxl;
- if (sp_globals.y0_spxl < sp_globals.bmap_ymin)
- sp_globals.bmap_ymin = sp_globals.y0_spxl;
- }
-
-if (sp_globals.intercept_oflo) return;
-
-if ((how_many_y = sp_globals.y_pxl - yc) == 0) return; /* Don't draw a null line */
-
-if (how_many_y < 0) yc--; /* Predecrment downward lines */
-
-if (yc > sp_globals.y_band.band_max) /* Is start point above band? */
- {
- if (sp_globals.y_pxl > sp_globals.y_band.band_max) return; /* line has to go down! */
- how_many_y = sp_globals.y_pxl - (yc = sp_globals.y_band.band_max) - 1; /* Yes, limit it */
- }
-
-if (yc < sp_globals.y_band.band_min) /* Is start point below band? */
- {
- if (sp_globals.y_pxl < sp_globals.y_band.band_min) return; /* line has to go up! */
- how_many_y = sp_globals.y_pxl - (yc = sp_globals.y_band.band_min); /* Yes, limit it */
- }
-
-xc = (fix31)(x0 + sp_globals.pixrnd) << (16 - sp_globals.pixshift); /* Original x coordinate with built in */
- /* rounding. 16.16 form */
-
-
-if ( (temp1 = (x1 - x0)) == 0) /* check for vertical line */
- {
- yc -= sp_globals.y_band.band_min; /* yc is now an offset relative to the band */
- temp1 = (fix15)(xc >> 16);
- if (how_many_y < 0)
- { /* Vector down */
- if ((how_many_y += yc + 1) < 0) how_many_y = 0; /* can't go below 0 */
- for (i = yc; i >= how_many_y; i--)
- sp_add_intercept_black(i,temp1);
- }
- else
- { /* Vector up */
- /* check to see that line doesn't extend beyond top of band */
- if ((how_many_y += yc) > sp_globals.no_y_lists) how_many_y = sp_globals.no_y_lists;
- for (i = yc; i != how_many_y; i++)
- sp_add_intercept_black(i,temp1);
- }
- return;
- }
-
-/* calculate dx_dy at 16.16 fixed point */
-
-dx_dy = ( (fix31)temp1 << 16 )/(fix31)(y1 - y0);
-
-/* We have to check for a @#$%@# possible multiply overflow */
-/* by doing another @#$*& multiply. In assembly language, */
-/* the program could just check the OVerflow flag or whatever*/
-/* works on the particular processor. This C code is meant */
-/* to be processor independant. */
-
-temp1 = (yc << sp_globals.pixshift) - y0 + sp_globals.pixrnd;
-/* This sees if the sign bits start at bit 15 */
-/* if they do, no overflow has occurred */
-
-temp2 = (fix15)(MULT16(temp1,(fix15)(dx_dy >> 16)) >> 15);
-
-if ( (temp2 != (fix15)0xFFFF) &&
- (temp2 != 0x0000) &&
- /* Overflow. Pick point closest to yc + .5 */
- (ABS(temp1) < ABS((yc << sp_globals.pixshift) - y1 + sp_globals.pixrnd)) )
- { /* use x1 instead of x0 */
- xc = (fix31)(x1 + sp_globals.pixrnd) << (16 - sp_globals.pixshift);
- }
-else
- {
-/* calculate new xc at the center of the *current* scan line */
-/* due to banding, yc may be several lines away from y0 */
-/* xc += (yc + .5 - y0) * dx_dy */
-/* This multiply generates a subpixel delta. */
-/* So we shift it to be a 16.16 delta */
-
- xc += ((fix31)temp1 * dx_dy) >> sp_globals.pixshift;
- }
-
-yc -= sp_globals.y_band.band_min; /* yc is now an offset relative to the band */
-
-if (how_many_y < 0)
- { /* Vector down */
- if (how_many_y == -1)
- sp_add_intercept_black(yc, (fix15) (xc >> 16));
- else
- {
- if ((how_many_y += yc + 1) < 0) how_many_y = 0; /* can't go below 0 */
- for (i = yc; i >= how_many_y; i--)
- {
- temp1 = (fix15)(xc >> 16);
- sp_add_intercept_black(i,temp1);
- xc -= dx_dy;
- }
- }
- }
- else
- { /* Vector up */
- /* check to see that line doesn't extend beyond top of band */
- if (how_many_y == 1)
- sp_add_intercept_black(yc, (fix15) (xc >> 16));
- else
- {
- if ((how_many_y += yc) > sp_globals.no_y_lists) how_many_y = sp_globals.no_y_lists;
- for (i = yc; i != how_many_y; i++)
- {
- temp1 = (fix15)(xc >> 16);
- sp_add_intercept_black(i,temp1);
- xc += dx_dy;
- }
- }
- }
-}
-#endif
-#if INCL_BLACK
-FUNCTION boolean end_char_black()
-GDECL
-/* Called when all character data has been output
- * Return TRUE if output process is complete
- * Return FALSE to repeat output of the transformed data beginning
- * with the first contour
- */
-{
-
-fix31 xorg;
-fix31 yorg;
-#if INCL_CLIPPING
-fix31 bmap_max, bmap_min;
-#endif
-
-#if DEBUG
-printf("END_CHAR_BLACK()\n");
-#endif
-
-if (sp_globals.first_pass)
- {
- if (sp_globals.bmap_xmax >= sp_globals.bmap_xmin)
- {
- sp_globals.xmin = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- sp_globals.xmax = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
- }
- else
- {
- sp_globals.xmin = sp_globals.xmax = 0;
- }
- if (sp_globals.bmap_ymax >= sp_globals.bmap_ymin)
- {
-
-#if INCL_CLIPPING
- switch(sp_globals.tcb0.xtype)
- {
- case 1: /* 180 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_ymin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift;
- bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- sp_globals.clip_ymin = -1 * sp_globals.clip_ymin;
- if (bmap_min < sp_globals.clip_ymin)
- sp_globals.ymin = sp_globals.clip_ymin;
- else
- sp_globals.ymin = bmap_min;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_ymax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max < sp_globals.clip_ymax)
- sp_globals.ymax = bmap_max;
- else
- sp_globals.ymax = sp_globals.clip_ymax;
- }
- sp_globals.clip_xmax = -sp_globals.xmin;
- sp_globals.clip_xmin = ((sp_globals.set_width.x+32768L) >> 16) -
- sp_globals.xmin;
- break;
- case 2: /* 90 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_xmin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift;
- sp_globals.clip_xmin = -1 * sp_globals.clip_xmin;
- bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- if (bmap_min > sp_globals.clip_xmin)
- sp_globals.clip_xmin = bmap_min;
-
- /* normalize to x origin */
- sp_globals.clip_xmin -= sp_globals.xmin;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_xmax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max < sp_globals.clip_xmax)
- sp_globals.xmax = bmap_max;
- else
- sp_globals.xmax = sp_globals.clip_xmax;
- sp_globals.clip_ymax = 0;
- if ((sp_globals.specs.flags & CLIP_TOP) &&
- (sp_globals.ymax > sp_globals.clip_ymax))
- sp_globals.ymax = sp_globals.clip_ymax;
- sp_globals.clip_ymin = ((sp_globals.set_width.y+32768L) >> 16);
- if ((sp_globals.specs.flags & CLIP_BOTTOM) &&
- (sp_globals.ymin < sp_globals.clip_ymin))
- sp_globals.ymin = sp_globals.clip_ymin;
- /* normalize to x origin */
- sp_globals.clip_xmax -= sp_globals.xmin;
- }
- break;
- case 3: /* 270 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_xmin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift;
- sp_globals.clip_xmin = -1 * sp_globals.clip_xmin;
- bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
-
- /* let the minimum be the larger of these two values */
- if (bmap_min > sp_globals.clip_xmin)
- sp_globals.clip_xmin = bmap_min;
-
- /* normalize the x value to new xorgin */
- sp_globals.clip_xmin -= sp_globals.xmin;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_xmax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
-
- /* let the max be the lesser of these two values */
- if (bmap_max < sp_globals.clip_xmax)
- {
- sp_globals.xmax = bmap_max;
- sp_globals.clip_xmax = bmap_max;
- }
- else
- sp_globals.xmax = sp_globals.clip_xmax;
-
- /* normalize the x value to new x origin */
- sp_globals.clip_xmax -= sp_globals.xmin;
- }
- /* compute y clip values */
- sp_globals.clip_ymax = ((sp_globals.set_width.y+32768L) >> 16);
- if ((sp_globals.specs.flags & CLIP_TOP) &&
- (sp_globals.ymax > sp_globals.clip_ymax))
- sp_globals.ymax = sp_globals.clip_ymax;
- sp_globals.clip_ymin = 0;
- if ((sp_globals.specs.flags & CLIP_BOTTOM) &&
- (sp_globals.ymin < sp_globals.clip_ymin))
- sp_globals.ymin = sp_globals.clip_ymin;
- break;
- default: /* this is for zero degree rotation and arbitrary rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_ymax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max > sp_globals.clip_ymax)
- sp_globals.ymax = bmap_max;
- else
- sp_globals.ymax = sp_globals.clip_ymax;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_ymin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift;
- sp_globals.clip_ymin = - sp_globals.clip_ymin;
- bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- if (bmap_min < sp_globals.clip_ymin)
- sp_globals.ymin = sp_globals.clip_ymin;
- else
- sp_globals.ymin = bmap_min;
- }
- sp_globals.clip_xmin = -sp_globals.xmin;
- sp_globals.clip_xmax = ((sp_globals.set_width.x+32768L) >> 16) -
- sp_globals.xmin;
- break;
- }
-if ( !(sp_globals.specs.flags & CLIP_TOP))
-#endif
- sp_globals.ymax = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
-
-#if INCL_CLIPPING
-if ( !(sp_globals.specs.flags & CLIP_BOTTOM))
-#endif
-
- sp_globals.ymin = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- }
- else
- {
- sp_globals.ymin = sp_globals.ymax = 0;
- }
-
- /* add in the rounded out part (from xform.) of the left edge */
- if (sp_globals.tcb.xmode == 0) /* for X pix is function of X orus only add the round */
- xorg = (((fix31)sp_globals.xmin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift));
- else
- if (sp_globals.tcb.xmode == 1) /* for X pix is function of -X orus only, subtr. round */
- xorg = (((fix31)sp_globals.xmin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)) ;
- else
- xorg = (fix31)sp_globals.xmin << 16; /* for other cases don't use round on x */
-
- if (sp_globals.tcb.ymode == 2) /* for Y pix is function of X orus only, add round error */
- yorg = (((fix31)sp_globals.ymin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift));
- else
- if (sp_globals.tcb.ymode == 3) /* for Y pix is function of -X orus only, sub round */
- yorg = (((fix31)sp_globals.ymin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift));
- else /* all other cases have no round error on yorg */
- yorg = (fix31)sp_globals.ymin << 16;
-
- open_bitmap(sp_globals.set_width.x, sp_globals.set_width.y, xorg, yorg,
- sp_globals.xmax - sp_globals.xmin, sp_globals.ymax - sp_globals.ymin);
- if (sp_globals.intercept_oflo)
- {
- sp_globals.y_band.band_min = sp_globals.ymin;
- sp_globals.y_band.band_max = sp_globals.ymax;
- init_intercepts_out();
- sp_globals.first_pass = FALSE;
- sp_globals.extents_running = FALSE;
- return FALSE;
- }
- else
- {
- sp_proc_intercepts_black();
- close_bitmap();
- return TRUE;
- }
- }
-else
- {
- if (sp_globals.intercept_oflo)
- {
- reduce_band_size_out();
- init_intercepts_out();
- return FALSE;
- }
- else
- {
- sp_proc_intercepts_black();
- if (next_band_out())
- {
- init_intercepts_out();
- return FALSE;
- }
- close_bitmap();
- return TRUE;
- }
- }
-}
-#endif
-
-#if INCL_BLACK
-FUNCTION LOCAL void sp_add_intercept_black(
-GDECL
-fix15 y, /* Y coordinate in relative pixel units */
- /* (0 is lowest sample in band) */
-fix15 x) /* X coordinate of intercept in subpixel units */
-
-/* Called by line() to add an intercept to the intercept list structure
- */
-
-{
-register fix15 from; /* Insertion pointers for the linked list sort */
-register fix15 to;
-
-#if DEBUG
-printf(" Add intercept(%2d, %d)\n", y + sp_globals.y_band.band_min,x);
-
-/* Bounds checking IS done in debug mode */
-if (y < 0) /* Y value below bottom of current band? */
- {
- printf(" Intecerpt less than 0!!!\007\n");
- return;
- }
-
-if (y > (sp_globals.no_y_lists - 1)) /* Y value above top of current band? */
- {
- printf(" Intercept too big for band!!!!!\007\n");
- return;
- }
-#endif
-
-/* Store new values */
-
-sp_intercepts.car[sp_globals.next_offset] = x;
-
-/* Find slot to insert new element (between from and to) */
-
-from = y; /* Start at list head */
-
-while( (to = sp_intercepts.cdr[from]) >= sp_globals.first_offset) /* Until to == end of list */
- {
- if (x <= sp_intercepts.car[to]) /* If next item is larger than or same as this one... */
- goto insert_element; /* ... drop out and insert here */
- from = to; /* move forward in list */
- }
-
-insert_element: /* insert element "sp_globals.next_offset" between elements "from" */
- /* and "to" */
-
-sp_intercepts.cdr[from] = sp_globals.next_offset;
-sp_intercepts.cdr[sp_globals.next_offset] = to;
-
-if (++sp_globals.next_offset >= MAX_INTERCEPTS) /* Intercept buffer full? */
- {
- sp_globals.intercept_oflo = TRUE;
-/* There may be a few more calls to "add_intercept" from the current line */
-/* To avoid problems, we set next_offset to a safe value. We don't care */
-/* if the intercept table gets trashed at this point */
- sp_globals.next_offset = sp_globals.first_offset;
- }
-}
-
-#endif
-
-#if INCL_BLACK
-FUNCTION LOCAL void sp_proc_intercepts_black()
-GDECL
-
-/* Called by sp_make_char to output accumulated intercept lists
- * Clips output to sp_globals.xmin, sp_globals.xmax, sp_globals.ymin, sp_globals.ymax boundaries
- */
-{
-register fix15 i;
-register fix15 from, to; /* Start and end of run in pixel units
- relative to left extent of character */
-register fix15 y;
-register fix15 scan_line;
- fix15 first_y, last_y;
-
-#if DEBUG
-printf("\nIntercept lists:\n");
-#endif
-
-#if INCL_CLIPPING
-if ((sp_globals.specs.flags & CLIP_LEFT) != 0)
- clipleft = TRUE;
-else
- clipleft = FALSE;
-if ((sp_globals.specs.flags & CLIP_RIGHT) != 0)
- clipright = TRUE;
-else
- clipright = FALSE;
-if (clipleft || clipright)
- {
- xmax = sp_globals.clip_xmax;
- xmin = sp_globals.clip_xmin;
- }
-if (!clipright)
- xmax = ((sp_globals.set_width.x+32768L) >> 16);
-#endif
-
-if ((first_y = sp_globals.y_band.band_max) >= sp_globals.ymax)
- first_y = sp_globals.ymax - 1; /* Clip to sp_globals.ymax boundary */
-
-if ((last_y = sp_globals.y_band.band_min) < sp_globals.ymin)
- last_y = sp_globals.ymin; /* Clip to sp_globals.ymin boundary */
-
-last_y -= sp_globals.y_band.band_min;
-#if DEBUG
-/* Print out all of the intercept info */
-scan_line = sp_globals.ymax - first_y - 1;
-
-for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++)
- {
- i = y; /* Index head of intercept list */
- while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */
- {
- if ((from = sp_intercepts.car[i] - sp_globals.xmin) < 0)
- from = 0; /* Clip to sp_globals.xmin boundary */
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
- if (i == 0) /* End of list? */
- {
- printf("****** proc_intercepts: odd number of intercepts\n");
- break;
- }
- if ((to = sp_intercepts.car[i]) > sp_globals.xmax)
- to = sp_globals.xmax - sp_globals.xmin; /* Clip to sp_globals.xmax boundary */
- else
- to -= sp_globals.xmin;
- printf(" Y = %2d (scanline %2d): %d %d:\n",
- y + sp_globals.y_band.band_min, scan_line, from, to);
- }
- }
-#endif
-
-/* Draw the image */
-scan_line = sp_globals.ymax - first_y - 1;
-
-for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++)
- {
- i = y; /* Index head of intercept list */
- while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */
- {
- if ((from = sp_intercepts.car[i] - sp_globals.xmin) < 0)
- from = 0; /* Clip to sp_globals.xmin boundary */
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
-
- if ((to = sp_intercepts.car[i]) > sp_globals.xmax)
- to = sp_globals.xmax - sp_globals.xmin; /* Clip to sp_globals.xmax boundary */
- else
- to -= sp_globals.xmin;
- if (from >= to)
- {
- if (from >= sp_globals.xmax - sp_globals.xmin)
- {
- --from ;
- }
- to = from+1;
- }
-#if INCL_CLIPPING
- if (clipleft)
- {
- if (to <= xmin)
- continue;
- if (from < xmin)
- from = xmin;
- }
- if (clipright)
- {
- if (from >= xmax)
- continue;
- if (to > xmax)
- to = xmax;
- }
-#endif
- set_bitmap_bits(scan_line, from, to);
- }
- }
-}
-
-#endif
-
-
-
-
diff --git a/libXfont/src/Speedo/out_outl.c b/libXfont/src/Speedo/out_outl.c
deleted file mode 100644
index 013901092..000000000
--- a/libXfont/src/Speedo/out_outl.c
+++ /dev/null
@@ -1,290 +0,0 @@
-/* $Xorg: out_outl.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-
-
-/**************************** O U T _ 2 _ 1 . C ******************************
- * *
- * This is the standard output module for vector output mode. *
- * *
- ****************************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spdo_prv.h" /* General definitions for Speedo */
-
-
-#define DEBUG 0
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-
-/* the following macro is used to limit points on the outline to the bounding box */
-
-#define RANGECHECK(value,min,max) (((value) >= (min) ? (value) : (min)) < (max) ? (value) : (max))
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/***** EXTERNAL VARIABLES *****/
-
-/***** EXTERNAL FUNCTIONS *****/
-
-/***** STATIC VARIABLES *****/
-
-/***** STATIC FUNCTIONS *****/
-
-
-#if INCL_OUTLINE
-FUNCTION boolean init_outline(specsarg)
-GDECL
-specs_t GLOBALFAR *specsarg;
-/*
- * init_out2() is called by sp_set_specs() to initialize the output module.
- * Returns TRUE if output module can accept requested specifications.
- * Returns FALSE otherwise.
- */
-{
-#if DEBUG
-printf("INIT_OUT_2()\n");
-#endif
-if (specsarg->flags & (CLIP_LEFT + CLIP_RIGHT + CLIP_TOP + CLIP_BOTTOM))
- return FALSE; /* Clipping not supported */
-return (TRUE);
-}
-#endif
-
-#if INCL_OUTLINE
-FUNCTION boolean begin_char_outline(Psw, Pmin, Pmax)
-GDECL
-point_t Psw; /* End of escapement vector (sub-pixels) */
-point_t Pmin; /* Bottom left corner of bounding box */
-point_t Pmax; /* Top right corner of bounding box */
-/*
- * If two or more output modules are included in the configuration, begin_char2()
- * is called by begin_char() to signal the start of character output data.
- * If only one output module is included in the configuration, begin_char() is
- * called by make_simp_char() and make_comp_char().
- */
-{
-fix31 set_width_x;
-fix31 set_width_y;
-fix31 xmin;
-fix31 xmax;
-fix31 ymin;
-fix31 ymax;
-
-#if DEBUG
-printf("BEGIN_CHAR_2(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n",
- (real)Psw.x / (real)onepix, (real)Psw.y / (real)onepix,
- (real)Pmin.x / (real)onepix, (real)Pmin.y / (real)onepix,
- (real)Pmax.x / (real)onepix, (real)Pmax.y / (real)onepix);
-#endif
-sp_globals.poshift = 16 - sp_globals.pixshift;
-set_width_x = (fix31)Psw.x << sp_globals.poshift;
-set_width_y = (fix31)Psw.y << sp_globals.poshift;
-xmin = (fix31)Pmin.x << sp_globals.poshift;
-xmax = (fix31)Pmax.x << sp_globals.poshift;
-ymin = (fix31)Pmin.y << sp_globals.poshift;
-ymax = (fix31)Pmax.y << sp_globals.poshift;
-sp_globals.xmin = Pmin.x;
-sp_globals.xmax = Pmax.x;
-sp_globals.ymin = Pmin.y;
-sp_globals.ymax = Pmax.y;
-open_outline(set_width_x, set_width_y, xmin, xmax, ymin, ymax);
-return TRUE;
-}
-#endif
-
-#if INCL_OUTLINE
-FUNCTION void begin_sub_char_outline(Psw, Pmin, Pmax)
-GDECL
-point_t Psw; /* End of sub-char escapement vector */
-point_t Pmin; /* Bottom left corner of sub-char bounding box */
-point_t Pmax; /* Top right corner of sub-char bounding box */
-/*
- * If two or more output modules are included in the configuration, begin_sub_char2()
- * is called by begin_sub_char() to signal the start of sub-character output data.
- * If only one output module is included in the configuration, begin_sub_char() is
- * called by make_comp_char().
- */
-{
-#if DEBUG
-printf("BEGIN_SUB_CHAR_2(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n",
- (real)Psw.x / (real)onepix, (real)Psw.y / (real)onepix,
- (real)Pmin.x / (real)onepix, (real)Pmin.y / (real)onepix,
- (real)Pmax.x / (real)onepix, (real)Pmax.y / (real)onepix);
-#endif
-start_new_char();
-}
-#endif
-
-
-#if INCL_OUTLINE
-FUNCTION void begin_contour_outline(P1, outside)
-GDECL
-point_t P1; /* Start point of contour */
-boolean outside; /* TRUE if outside (counter-clockwise) contour */
-/*
- * If two or more output modules are included in the configuration, begin_contour2()
- * is called by begin_contour() to define the start point of a new contour
- * and to indicate whether it is an outside (counter-clockwise) contour
- * or an inside (clockwise) contour.
- * If only one output module is included in the configuration, begin_sub_char() is
- * called by proc_outl_data().
- */
-{
-fix15 x,y;
-#if DEBUG
-printf("BEGIN_CONTOUR_2(%3.1f, %3.1f, %s)\n",
- (real)P1.x / (real)onepix, (real)P1.y / (real)onepix, outside? "outside": "inside");
-#endif
-x = RANGECHECK(P1.x,sp_globals.xmin,sp_globals.xmax);
-y = RANGECHECK(P1.y,sp_globals.ymin,sp_globals.ymax);
-
-start_contour((fix31)x << sp_globals.poshift, (fix31)y << sp_globals.poshift, outside);
-}
-#endif
-
-#if INCL_OUTLINE
-FUNCTION void curve_outline(P1, P2, P3,depth)
-GDECL
-point_t P1; /* First control point of Bezier curve */
-point_t P2; /* Second control point of Bezier curve */
-point_t P3; /* End point of Bezier curve */
-fix15 depth;
-/*
- * If two or more output modules are included in the configuration, curve2()
- * is called by curve() to output one curve segment.
- * If only one output module is included in the configuration, curve() is
- * called by proc_outl_data().
- * This function is only called when curve output is enabled.
- */
-{
-fix15 x1,y1,x2,y2,x3,y3;
-#if DEBUG
-printf("CURVE_2(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n",
- (real)P1.x / (real)onepix, (real)P1.y / (real)onepix,
- (real)P2.x / (real)onepix, (real)P2.y / (real)onepix,
- (real)P3.x / (real)onepix, (real)P3.y / (real)onepix);
-#endif
-x1= RANGECHECK(P1.x,sp_globals.xmin,sp_globals.xmax);
-y1= RANGECHECK(P1.y,sp_globals.ymin,sp_globals.ymax);
-
-x2= RANGECHECK(P2.x,sp_globals.xmin,sp_globals.xmax);
-y2= RANGECHECK(P2.y,sp_globals.ymin,sp_globals.ymax);
-
-x3= RANGECHECK(P3.x,sp_globals.xmin,sp_globals.xmax);
-y3= RANGECHECK(P3.y,sp_globals.ymin,sp_globals.ymax);
-
-curve_to((fix31)x1 << sp_globals.poshift, (fix31)y1 << sp_globals.poshift,
- (fix31)x2<< sp_globals.poshift, (fix31)y2 << sp_globals.poshift,
- (fix31)x3 << sp_globals.poshift, (fix31)y3 << sp_globals.poshift);
-}
-#endif
-
-#if INCL_OUTLINE
-FUNCTION void line_outline(P1)
-GDECL
-point_t P1; /* End point of vector */
-/*
- * If two or more output modules are included in the configuration, line2()
- * is called by line() to output one vector.
- * If only one output module is included in the configuration, line() is
- * called by proc_outl_data(). If curve output is enabled, line() is also
- * called by split_curve().
- */
-{
-fix15 x1,y1;
-#if DEBUG
-printf("LINE_2(%3.1f, %3.1f)\n", (real)P1.x / (real)onepix, (real)P1.y / (real)onepix);
-#endif
-x1= RANGECHECK(P1.x,sp_globals.xmin,sp_globals.xmax);
-y1= RANGECHECK(P1.y,sp_globals.ymin,sp_globals.ymax);
-
-line_to((fix31)x1 << sp_globals.poshift, (fix31)y1 << sp_globals.poshift);
-}
-#endif
-
-#if INCL_OUTLINE
-FUNCTION void end_contour_outline()
-GDECL
-/*
- * If two or more output modules are included in the configuration, end_contour2()
- * is called by end_contour() to signal the end of a contour.
- * If only one output module is included in the configuration, end_contour() is
- * called by proc_outl_data().
- */
-{
-#if DEBUG
-printf("END_CONTOUR_2()\n");
-#endif
-close_contour();
-}
-#endif
-
-
-#if INCL_OUTLINE
-FUNCTION void end_sub_char_outline()
-GDECL
-/*
- * If two or more output modules are included in the configuration, end_sub_char2()
- * is called by end_sub_char() to signal the end of sub-character data.
- * If only one output module is included in the configuration, end_sub_char() is
- * called by make_comp_char().
- */
-{
-#if DEBUG
-printf("END_SUB_CHAR_2()\n");
-#endif
-}
-#endif
-
-
-#if INCL_OUTLINE
-FUNCTION boolean end_char_outline()
-GDECL
-/*
- * If two or more output modules are included in the configuration, end_char2()
- * is called by end_char() to signal the end of the character data.
- * If only one output module is included in the configuration, end_char() is
- * called by make_simp_char() and make_comp_char().
- * Returns TRUE if output process is complete
- * Returns FALSE to repeat output of the transformed data beginning
- * with the first contour (of the first sub-char if compound).
- */
-{
-#if DEBUG
-printf("END_CHAR_2()\n");
-#endif
-close_outline();
-return TRUE;
-}
-#endif
-
diff --git a/libXfont/src/Speedo/out_scrn.c b/libXfont/src/Speedo/out_scrn.c
deleted file mode 100644
index 172386ac7..000000000
--- a/libXfont/src/Speedo/out_scrn.c
+++ /dev/null
@@ -1,1090 +0,0 @@
-/* $Xorg: out_scrn.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/out_scrn.c,v 1.4 1999/12/27 00:39:25 robin Exp $ */
-
-
-/*************************** O U T _ S C R N . C *****************************
- * *
- * This is an output module for screen-writer mode. *
- * *
- *****************************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spdo_prv.h" /* General definitions for Speedo */
-
-#define DEBUG 0
-#define LOCAL static
-#define ABS(X) ( (X < 0) ? -X : X)
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-
-
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/***** EXTERNAL VARIABLES *****/
-
-/***** EXTERNAL FUNCTIONS *****/
-
-/***** STATIC VARIABLES *****/
-
-/***** STATIC FUNCTIONS *****/
-
-static void sp_add_intercept_screen(PROTO_DECL2 fix15 y,fix31 x);
-static void sp_proc_intercepts_screen(PROTO_DECL1);
-
-
-#if INCL_SCREEN
-FUNCTION boolean init_screen(
-GDECL
-specs_t FONTFAR *specsarg)
-/*
- * init_out0() is called by sp_set_specs() to initialize the output module.
- * Returns TRUE if output module can accept requested specifications.
- * Returns FALSE otherwise.
- */
-{
-#if DEBUG
-printf("INIT_SCREEN()\n");
-#endif
-return (TRUE);
-}
-#endif
-
-
-#if INCL_SCREEN
-FUNCTION boolean begin_char_screen(
-GDECL
-point_t Psw,
-point_t Pmin,
-point_t Pmax)
-/* Called once at the start of the character generation process
- */
-{
-#if DEBUG
-printf("BEGIN_CHAR_SCREEN(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n",
- (real)Psw.x / (real)sp_globals.onepix, (real)Psw.y / (real)sp_globals.onepix,
- (real)Pmin.x / (real)sp_globals.onepix, (real)Pmin.y / (real)sp_globals.onepix,
- (real)Pmax.x / (real)sp_globals.onepix, (real)Pmax.y / (real)sp_globals.onepix);
-#endif
-if (sp_globals.pixshift > 8)
- sp_intercepts.fracpix = sp_globals.onepix << (8 - sp_globals.pixshift);
-else
- sp_intercepts.fracpix = sp_globals.onepix >> (sp_globals.pixshift - 8);
-
-init_char_out(Psw,Pmin,Pmax);
-
-return TRUE;
-}
-#endif
-
-
-#if INCL_SCREEN
-FUNCTION void begin_contour_screen(
-GDECL
-point_t P1,
-boolean outside)
-/* Called at the start of each contour
- */
-{
-
-#if DEBUG
-printf("BEGIN_CONTOUR_SCREEN(%3.1f, %3.1f, %s)\n",
- (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix, outside? "outside": "inside");
-#endif
-sp_globals.x0_spxl = P1.x;
-sp_globals.y0_spxl = P1.y;
-sp_globals.y_pxl = (sp_globals.y0_spxl + sp_globals.pixrnd) >> sp_globals.pixshift;
-}
-#endif
-
-#if INCL_SCREEN
-
-static FUNCTION void vert_line_screen(
-GDECL
-fix31 x,
-fix15 y1, fix15 y2)
-{
-
-#ifdef DBGCRV
-printf("VERT_LINE_SCREEN(%6.4f, %6.4f, %6.4f)\n",
- (real)(x - 32768) / 65536.0,
- (real)(y1 - 32768) / 65536.0,
- (real)(y2 - 32768) / 65536.0);
-#endif
-
-if (sp_globals.intercept_oflo)
- return;
-
-if (y1 > y2) /* Line goes downwards ? */
- {
- if (y1 > (sp_globals.y_band.band_max + 1)) /* Start point above top of band? */
- y1 = sp_globals.y_band.band_max + 1; /* Adjust start point to top of band */
- if (y2 < sp_globals.y_band.band_min) /* End point below bottom of band? */
- y2 = sp_globals.y_band.band_min; /* Adjust end point bottom of band */
-
- y1 -= sp_globals.y_band.band_min; /* Translate start point to band origin */
- y2 -= sp_globals.y_band.band_min; /* Translate end point to band origin */
-
- while (y2 < y1) /* At least one intercept left? */
- {
- sp_add_intercept_screen(--y1, x); /* Add intercept */
- }
- }
-else if (y2 > y1) /* Line goes upwards ? */
- {
- if (y1 < sp_globals.y_band.band_min) /* Start point below bottom of band? */
- y1 = sp_globals.y_band.band_min; /* Adjust start point to bottom of band */
- if (y2 > (sp_globals.y_band.band_max + 1)) /* End point above top of band? */
- y2 = sp_globals.y_band.band_max + 1; /* Adjust end point to top of band */
-
- y1 -= sp_globals.y_band.band_min; /* Translate start point to band origin */
- y2 -= sp_globals.y_band.band_min; /* Translate end point to band origin */
-
- while (y1 < y2) /* At least one intercept left? */
- {
- sp_add_intercept_screen(y1++, x); /* Add intercept */
- }
- }
-
-
-}
-
-static FUNCTION void scan_curve_screen(
-GDECL
-fix31 X0, fix31 Y0, fix31 X1, fix31 Y1, fix31 X2, fix31 Y2, fix31 X3, fix31 Y3)
-/* Called for each curve in the transformed character if curves out enabled
- */
-{
-fix31 Pmidx;
-fix31 Pmidy;
-fix31 Pctrl1x;
-fix31 Pctrl1y;
-fix31 Pctrl2x;
-fix31 Pctrl2y;
-
-#ifdef DBGCRV
-printf("SCAN_CURVE_SCREEN(%6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f)\n",
- (real)(X0-32768) / 65536.0, (real)(Y0-32768) / 65536.0,
- (real)(X1-32768) / 65536.0, (real)(Y1-32768) / 65536.0,
- (real)(X2-32768) / 65536.0, (real)(Y2-32768) / 65536.0,
- (real)(X3-32768) / 65536.0, (real)(Y3-32768) / 65536.0);
-#endif
-
-if (((Y3 >> 16)) == (Y0 >> 16) || (Y3+1) == Y0 || Y3 == (Y0+1))
- {
- return;
- }
-if ((X3 >> 16) == (X0 >> 16))
- {
- vert_line_screen(X3,(fix15)(Y0>>16),(fix15)(Y3>>16));
- return;
- }
-Pmidx = (X0 + (X1 + X2) * 3 + X3 + 4 ) >> 3;
-Pmidy = (Y0 + (Y1 + Y2) * 3 + Y3 + 4 ) >> 3;
-
-Pctrl1x = (X0 + X1 + 1 ) >> 1;
-Pctrl1y = (Y0 + Y1 + 1) >> 1;
-Pctrl2x = (X0 + (X1 << 1) + X2 + 2 ) >> 2;
-Pctrl2y = (Y0 + (Y1 << 1) + Y2 + 2 ) >> 2;
-scan_curve_screen(X0,Y0, Pctrl1x, Pctrl1y, Pctrl2x,Pctrl2y, Pmidx,Pmidy);
-
-Pctrl1x = (X1 + (X2 << 1) + X3 + 2 ) >> 2;
-Pctrl1y = (Y1 + (Y2 << 1) + Y3 + 2 ) >> 2;
-Pctrl2x = (X2 + X3 + 1 ) >> 1;
-Pctrl2y = (Y2 + Y3 + 1 ) >> 1;
-scan_curve_screen(Pmidx,Pmidy, Pctrl1x,Pctrl1y, Pctrl2x,Pctrl2y, X3,Y3);
-}
-
-FUNCTION void curve_screen(
-GDECL
-point_t P1, point_t P2, point_t P3,
-fix15 depth)
-{
-fix31 X0;
-fix31 Y0;
-fix31 X1;
-fix31 Y1;
-fix31 X2;
-fix31 Y2;
-fix31 X3;
-fix31 Y3;
-#if DEBUG
-printf("CURVE_SCREEN(%6.4f, %6.4f, %6.4f, %6.4f, %6.4f, %6.4f)\n",
- (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix,
- (real)P2.x / (real)sp_globals.onepix, (real)P2.y / (real)sp_globals.onepix,
- (real)P3.x / (real)sp_globals.onepix, (real)P3.y / (real)sp_globals.onepix);
-#endif
-
-
-if (sp_globals.extents_running) /* Accumulate actual character extents if required */
- {
- if (P3.x > sp_globals.bmap_xmax)
- sp_globals.bmap_xmax = P3.x;
- if (P3.x < sp_globals.bmap_xmin)
- sp_globals.bmap_xmin = P3.x;
- if (P3.y > sp_globals.bmap_ymax)
- sp_globals.bmap_ymax = P3.y;
- if (P3.y < sp_globals.bmap_ymin)
- sp_globals.bmap_ymin = P3.y;
- }
-
-X0 = ((fix31)sp_globals.x0_spxl << sp_globals.poshift) + (fix31)32768;
-Y0 = ((fix31)sp_globals.y0_spxl << sp_globals.poshift) + (fix31)32768;
-X1 = ((fix31)P1.x << sp_globals.poshift) + (fix31)32768;
-Y1 = ((fix31)P1.y << sp_globals.poshift) + (fix31)32768;
-X2 = ((fix31)P2.x << sp_globals.poshift) + (fix31)32768;
-Y2 = ((fix31)P2.y << sp_globals.poshift) + (fix31)32768;
-X3 = ((fix31)P3.x << sp_globals.poshift) + (fix31)32768;
-Y3 = ((fix31)P3.y << sp_globals.poshift) + (fix31)32768;
-
-if (((Y0 - Y3) * sp_globals.tcb.mirror) > 0)
- {
- sp_intercepts.leftedge = LEFT_INT;
- }
-else
- {
- sp_intercepts.leftedge = 0;
- }
-
-scan_curve_screen(X0,Y0,X1,Y1,X2,Y2,X3,Y3);
-sp_globals.x0_spxl = P3.x;
-sp_globals.y0_spxl = P3.y;
-sp_globals.y_pxl = (P3.y + sp_globals.pixrnd) >> sp_globals.pixshift; /* calculate new end-scan sp_globals.line */
-}
-#endif
-
-
-#if INCL_SCREEN
-FUNCTION void line_screen(
-GDECL
-point_t P1)
-/* Called for each vector in the transformed character
- */
-{
-register fix15 how_many_y; /* # of intercepts at y = n + 1/2 */
-register fix15 yc; /* Current scan-line */
- fix15 temp1; /* various uses */
- fix15 temp2; /* various uses */
-register fix31 dx_dy; /* slope of line in 16.16 form */
-register fix31 xc; /* high-precision (16.16) x coordinate */
- fix15 x0,y0,x1,y1; /* PIX.FRAC start and endpoints */
-
-x0 = sp_globals.x0_spxl; /* get start of line (== current point) */
-y0 = sp_globals.y0_spxl;
-sp_globals.x0_spxl = x1 = P1.x; /* end of line */
-sp_globals.y0_spxl = y1 = P1.y; /* (also update current point to end of line) */
-
-yc = sp_globals.y_pxl; /* current scan line = end of last line */
-sp_globals.y_pxl = (y1 + sp_globals.pixrnd) >> sp_globals.pixshift; /* calculate new end-scan sp_globals.line */
-
-
-#if DEBUG
-printf("LINE_SCREEN(%3.4f, %3.4f)\n",
- (real)P1.x/(real)sp_globals.onepix,
- (real)P1.y/(real)sp_globals.onepix);
-#endif
-
-if (sp_globals.extents_running)
- {
- if (sp_globals.x0_spxl > sp_globals.bmap_xmax)
- sp_globals.bmap_xmax = sp_globals.x0_spxl;
- if (sp_globals.x0_spxl < sp_globals.bmap_xmin)
- sp_globals.bmap_xmin = sp_globals.x0_spxl;
- if (sp_globals.y0_spxl > sp_globals.bmap_ymax)
- sp_globals.bmap_ymax = sp_globals.y0_spxl;
- if (sp_globals.y0_spxl < sp_globals.bmap_ymin)
- sp_globals.bmap_ymin = sp_globals.y0_spxl;
- }
-
-if (sp_globals.intercept_oflo) return;
-
-if ((how_many_y = sp_globals.y_pxl - yc) == 0) return; /* Don't draw a null line */
-
-xc = (fix31)(x0 + sp_globals.pixrnd) << (16 - sp_globals.pixshift); /* Original x coordinate with built in */
- /* rounding. 16.16 form */
-
-if (how_many_y < 0)
- {
- yc--; /* Predecrment downward lines */
- }
-
-if ((how_many_y * sp_globals.tcb.mirror) < 0)
- {
- sp_intercepts.leftedge = LEFT_INT;
- }
-else
- {
- sp_intercepts.leftedge = 0;
- }
-
-if (yc > sp_globals.y_band.band_max) /* Is start point above band? */
- {
- if (sp_globals.y_pxl > sp_globals.y_band.band_max) return; /* line has to go down! */
- how_many_y = sp_globals.y_pxl - (yc = sp_globals.y_band.band_max) - 1; /* Yes, limit it */
- }
-
-if (yc < sp_globals.y_band.band_min) /* Is start point below band? */
- {
- if (sp_globals.y_pxl < sp_globals.y_band.band_min) return; /* line has to go up! */
- how_many_y = sp_globals.y_pxl - (yc = sp_globals.y_band.band_min); /* Yes, limit it */
- }
-
-if ( (temp1 = (x1 - x0)) == 0) /* check for vertical line */
- {
- dx_dy = 0L; /* Zero slope, leave xc alone */
- goto skip_calc;
- }
-
-/* calculate dx_dy at 16.16 fixed point */
-
-dx_dy = ( (fix31)temp1 << 16 )/(fix31)(y1 - y0);
-
-/* We have to check for a @#$%@# possible multiply overflow */
-/* by doing another @#$*& multiply. In assembly language, */
-/* the program could just check the OVerflow flag or whatever*/
-/* works on the particular processor. This C code is meant */
-/* to be processor independant. */
-
-temp1 = (yc << sp_globals.pixshift) - y0 + sp_globals.pixrnd;
-/* This sees if the sign bits start at bit 15 */
-/* if they do, no overflow has occurred */
-
-temp2 = (fix15)(MULT16(temp1,(fix15)(dx_dy >> 16)) >> 15);
-
-if ( (temp2 != (fix15)-1) &&
- (temp2 != 0x0000) )
- { /* Overflow. Pick point closest to yc + .5 */
- if (ABS(temp1) < ABS((yc << sp_globals.pixshift) - y1 + sp_globals.pixrnd))
- { /* use x1 instead of x0 */
- xc = (fix31)(x1 + sp_globals.pixrnd) << (16 - sp_globals.pixshift);
- }
- goto skip_calc;
- }
-/* calculate new xc at the center of the *current* scan line */
-/* due to banding, yc may be several lines away from y0 */
-/* xc += (yc + .5 - y0) * dx_dy */
-/* This multiply generates a subpixel delta. */
-/* So we shift it to be a 16.16 delta */
-
-xc += ((fix31)temp1 * dx_dy) >> sp_globals.pixshift;
-
-skip_calc:
-
-yc -= sp_globals.y_band.band_min; /* yc is now an offset relative to the band */
-
-if (how_many_y < 0)
- { /* Vector down */
- if ((how_many_y += yc + 1) < 0) how_many_y = 0; /* can't go below 0 */
- while(yc >= how_many_y)
- {
- sp_add_intercept_screen(yc--,xc);
- xc -= dx_dy;
- }
- }
- else
- { /* Vector up */
- /* check to see that line doesn't extend beyond top of band */
- if ((how_many_y += yc) > sp_globals.no_y_lists) how_many_y = sp_globals.no_y_lists;
- while(yc != how_many_y)
- {
- sp_add_intercept_screen(yc++,xc);
- xc += dx_dy;
- }
- }
-}
-#endif
-
-#if INCL_SCREEN
-FUNCTION void end_contour_screen()
-GDECL
-/* Called after the last vector in each contour
- */
-{
-#if DEBUG
-printf("END_CONTOUR_SCREEN()\n");
-#endif
-sp_intercepts.inttype[sp_globals.next_offset-1] |= END_INT;
-}
-#endif
-
-
-
-#if INCL_SCREEN
-FUNCTION boolean end_char_screen()
-GDECL
-/* Called when all character data has been output
- * Return TRUE if output process is complete
- * Return FALSE to repeat output of the transformed data beginning
- * with the first contour
- */
-{
-
-fix31 xorg;
-fix31 yorg;
-
-#if INCL_CLIPPING
-fix31 em_max, em_min, bmap_max, bmap_min;
-#endif
-
-#if DEBUG
-printf("END_CHAR_SCREEN()\n");
-#endif
-
-if (sp_globals.first_pass)
- {
- if (sp_globals.bmap_xmax >= sp_globals.bmap_xmin)
- {
- sp_globals.xmin = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- sp_globals.xmax = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
- }
- else
- {
- sp_globals.xmin = sp_globals.xmax = 0;
- }
- if (sp_globals.bmap_ymax >= sp_globals.bmap_ymin)
- {
-
-#if INCL_CLIPPING
- switch(sp_globals.tcb0.xtype)
- {
- case 1: /* 180 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_ymin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift;
- bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- sp_globals.clip_ymin = -1 * sp_globals.clip_ymin;
- if (bmap_min < sp_globals.clip_ymin)
- sp_globals.ymin = sp_globals.clip_ymin;
- else
- sp_globals.ymin = bmap_min;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_ymax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max < sp_globals.clip_ymax)
- sp_globals.ymax = bmap_max;
- else
- sp_globals.ymax = sp_globals.clip_ymax;
- }
- sp_globals.clip_xmax = -sp_globals.xmin;
- sp_globals.clip_xmin = ((sp_globals.set_width.x+32768L) >> 16) -
- sp_globals.xmin;
- break;
- case 2: /* 90 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_xmin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift;
- sp_globals.clip_xmin = -1 * sp_globals.clip_xmin;
- bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- if (bmap_min > sp_globals.clip_xmin)
- sp_globals.clip_xmin = bmap_min;
-
- /* normalize to x origin */
- sp_globals.clip_xmin -= sp_globals.xmin;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_xmax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max < sp_globals.clip_xmax)
- sp_globals.xmax = bmap_max;
- else
- sp_globals.xmax = sp_globals.clip_xmax;
- sp_globals.clip_ymax = 0;
- if ((sp_globals.specs.flags & CLIP_TOP) &&
- (sp_globals.ymax > sp_globals.clip_ymax))
- sp_globals.ymax = sp_globals.clip_ymax;
- sp_globals.clip_ymin = ((sp_globals.set_width.y+32768L) >> 16);
- if ((sp_globals.specs.flags & CLIP_BOTTOM) &&
- (sp_globals.ymin < sp_globals.clip_ymin))
- sp_globals.ymin = sp_globals.clip_ymin;
- /* normalize to x origin */
- sp_globals.clip_xmax -= sp_globals.xmin;
- }
- break;
- case 3: /* 270 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_xmin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmin = sp_globals.clip_xmin >> sp_globals.multshift;
- sp_globals.clip_xmin = -1 * sp_globals.clip_xmin;
- bmap_min = (sp_globals.bmap_xmin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
-
- /* let the minimum be the larger of these two values */
- if (bmap_min > sp_globals.clip_xmin)
- sp_globals.clip_xmin = bmap_min;
-
- /* normalize the x value to new xorgin */
- sp_globals.clip_xmin -= sp_globals.xmin;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_xmax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_xmax = sp_globals.clip_xmax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_xmax + sp_globals.pixrnd) >> sp_globals.pixshift;
-
- /* let the max be the lesser of these two values */
- if (bmap_max < sp_globals.clip_xmax)
- {
- sp_globals.xmax = bmap_max;
- sp_globals.clip_xmax = bmap_max;
- }
- else
- sp_globals.xmax = sp_globals.clip_xmax;
-
- /* normalize the x value to new x origin */
- sp_globals.clip_xmax -= sp_globals.xmin;
- }
- /* compute y clip values */
- sp_globals.clip_ymax = ((sp_globals.set_width.y+32768L) >> 16);
- if ((sp_globals.specs.flags & CLIP_TOP) &&
- (sp_globals.ymax > sp_globals.clip_ymax))
- sp_globals.ymax = sp_globals.clip_ymax;
- sp_globals.clip_ymin = 0;
- if ((sp_globals.specs.flags & CLIP_BOTTOM) &&
- (sp_globals.ymin < sp_globals.clip_ymin))
- sp_globals.ymin = sp_globals.clip_ymin;
- break;
- default: /* this is for zero degree rotation and arbitrary rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_ymax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift;
- bmap_max = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
- if (bmap_max > sp_globals.clip_ymax)
- sp_globals.ymax = bmap_max;
- else
- sp_globals.ymax = sp_globals.clip_ymax;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_ymin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift;
- sp_globals.clip_ymin = - sp_globals.clip_ymin;
- bmap_min = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- if (bmap_min < sp_globals.clip_ymin)
- sp_globals.ymin = sp_globals.clip_ymin;
- else
- sp_globals.ymin = bmap_min;
- }
- sp_globals.clip_xmin = -sp_globals.xmin;
- sp_globals.clip_xmax = ((sp_globals.set_width.x+32768L) >> 16) -
- sp_globals.xmin;
- break;
- }
-if ( !(sp_globals.specs.flags & CLIP_TOP))
-#endif
- sp_globals.ymax = (sp_globals.bmap_ymax + sp_globals.pixrnd) >> sp_globals.pixshift;
-
-#if INCL_CLIPPING
-if ( !(sp_globals.specs.flags & CLIP_BOTTOM))
-#endif
-
- sp_globals.ymin = (sp_globals.bmap_ymin + sp_globals.pixrnd + 1) >> sp_globals.pixshift;
- }
- else
- {
- sp_globals.ymin = sp_globals.ymax = 0;
- }
-
- /* add in the rounded out part (from xform.) of the left edge */
- if (sp_globals.tcb.xmode == 0) /* for X pix is function of X orus only add the round */
- xorg = (((fix31)sp_globals.xmin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift));
- else
- if (sp_globals.tcb.xmode == 1) /* for X pix is function of -X orus only, subtr. round */
- xorg = (((fix31)sp_globals.xmin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift)) ;
- else
- xorg = (fix31)sp_globals.xmin << 16; /* for other cases don't use round on x */
-
- if (sp_globals.tcb.ymode == 2) /* for Y pix is function of X orus only, add round error */
- yorg = (((fix31)sp_globals.ymin << 16) + (sp_globals.rnd_xmin << sp_globals.poshift));
- else
- if (sp_globals.tcb.ymode == 3) /* for Y pix is function of -X orus only, sub round */
- yorg = (((fix31)sp_globals.ymin << 16) - (sp_globals.rnd_xmin << sp_globals.poshift));
- else /* all other cases have no round error on yorg */
- yorg = (fix31)sp_globals.ymin << 16;
-
- open_bitmap(sp_globals.set_width.x, sp_globals.set_width.y, xorg, yorg,
- sp_globals.xmax - sp_globals.xmin, sp_globals.ymax - sp_globals.ymin);
- if (sp_globals.intercept_oflo)
- {
- sp_globals.y_band.band_min = sp_globals.ymin;
- sp_globals.y_band.band_max = sp_globals.ymax;
- init_intercepts_out();
- sp_globals.first_pass = FALSE;
- sp_globals.extents_running = FALSE;
- return FALSE;
- }
- else
- {
- sp_proc_intercepts_screen();
- close_bitmap();
- return TRUE;
- }
- }
-else
- {
- if (sp_globals.intercept_oflo)
- {
- reduce_band_size_out();
- init_intercepts_out();
- return FALSE;
- }
- else
- {
- sp_proc_intercepts_screen();
- if (next_band_out())
- {
- init_intercepts_out();
- return FALSE;
- }
- close_bitmap();
- return TRUE;
- }
- }
-}
-#endif
-
-#if INCL_SCREEN
-FUNCTION LOCAL void sp_add_intercept_screen(
-GDECL
-fix15 y, /* Y coordinate in relative pixel units */
- /* (0 is lowest sample in band) */
-fix31 x) /* X coordinate of intercept in subpixel units */
-
-/* Called by line() to add an intercept to the intercept list structure
- */
-
-{
-register fix15 from; /* Insertion pointers for the linked list sort */
-register fix15 to;
-register fix15 xloc;
-register fix15 xfrac;
-
-#if DEBUG
-printf(" Add intercept(%2d, %x)\n", y + sp_globals.y_band.band_min, x);
-
-/* Bounds checking IS done in debug mode */
-if (y < 0) /* Y value below bottom of current band? */
- {
- printf(" Intecerpt less than 0!!!\007\n");
- return;
- }
-
-if (y > (sp_globals.no_y_lists - 1)) /* Y value above top of current band? */
- {
- printf(" Intercept too big for band!!!!!\007\n");
- return;
- }
-#endif
-
-/* Store new values */
-
-sp_intercepts.car[sp_globals.next_offset] = xloc = (fix15)(x >> 16);
-sp_intercepts.inttype[sp_globals.next_offset] = sp_intercepts.leftedge | (xfrac = ((x >> 8) & FRACTION));
-
-/* Find slot to insert new element (between from and to) */
-
-from = y; /* Start at list head */
-
-while( (to = sp_intercepts.cdr[from]) != 0) /* Until to == end of list */
- {
- if (xloc < sp_intercepts.car[to]) /* If next item is larger than or same as this one... */
- goto insert_element; /* ... drop out and insert here */
- else if (xloc == sp_intercepts.car[to] && xfrac < (sp_intercepts.inttype[to] & FRACTION))
- goto insert_element; /* ... drop out and insert here */
- from = to; /* move forward in list */
- }
-
-insert_element: /* insert element "sp_globals.next_offset" between elements "from" */
- /* and "to" */
-
-sp_intercepts.cdr[from] = sp_globals.next_offset;
-sp_intercepts.cdr[sp_globals.next_offset] = to;
-
-if (++sp_globals.next_offset >= MAX_INTERCEPTS) /* Intercept buffer full? */
- {
- sp_globals.intercept_oflo = TRUE;
-/* There may be a few more calls to "add_intercept" from the current line */
-/* To avoid problems, we set next_offset to a safe value. We don't care */
-/* if the intercept table gets trashed at this point */
- sp_globals.next_offset = sp_globals.first_offset;
- }
-}
-
-#endif
-
-#if INCL_SCREEN
-FUNCTION LOCAL void sp_proc_intercepts_screen()
-GDECL
-
-/* Called by sp_make_char to output accumulated intercept lists
- * Clips output to sp_globals.xmin, sp_globals.xmax, sp_globals.ymin, sp_globals.ymax boundaries
- */
-{
-register fix15 i,j, jplus1, iminus1;
-fix15 k,nextk, previ;
-register fix15 from, to; /* Start and end of run in pixel units
- relative to left extent of character */
-register fix15 y;
-register fix15 scan_line;
- fix15 first_y, last_y;
- fix15 xsave;
-
-
-fix15 diff;
-
-#if DEBUG
-printf("\nPROC_INTERCEPTS_SCREEN: Intercept lists before:\n");
-#endif
-
-#if INCL_CLIPPING
-if ((sp_globals.specs.flags & CLIP_LEFT) != 0)
- clipleft = TRUE;
-else
- clipleft = FALSE;
-if ((sp_globals.specs.flags & CLIP_RIGHT) != 0)
- clipright = TRUE;
-else
- clipright = FALSE;
-if (clipleft || clipright)
- {
- xmax = sp_globals.clip_xmax + sp_globals.xmin;
- xmin = sp_globals.clip_xmin + sp_globals.xmin;
- }
-if (!clipright)
- xmax = ((sp_globals.set_width.x+32768L) >> 16);
-#endif
-
-if ((first_y = sp_globals.y_band.band_max) >= sp_globals.ymax)
- first_y = sp_globals.ymax - 1; /* Clip to sp_globals.ymax boundary */
-
-if ((last_y = sp_globals.y_band.band_min) < sp_globals.ymin)
- last_y = sp_globals.ymin; /* Clip to sp_globals.ymin boundary */
-
-last_y -= sp_globals.y_band.band_min;
-
-#if DEBUG
-/* Print out all of the intercept info */
-scan_line = sp_globals.ymax - first_y - 1;
-
-for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++)
- {
- i = y; /* Index head of intercept list */
- while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */
- {
- if ((from = sp_intercepts.car[i] - sp_globals.xmin) < 0)
- from = 0; /* Clip to sp_globals.xmin boundary */
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
- if (i == 0) /* End of list? */
- {
- printf("****** proc_intercepts: odd number of intercepts\n");
- break;
- }
- if ((to = sp_intercepts.car[i]) > sp_globals.xmax)
- to = sp_globals.xmax - sp_globals.xmin; /* Clip to sp_globals.xmax boundary */
- else
- to -= sp_globals.xmin;
- printf(" Y = %2d (scanline %2d): %d %d:\n",
- y + sp_globals.y_band.band_min, scan_line, from, to);
- }
- }
-#endif
-
-/* CHECK INTERCEPT LIST FOR DROPOUT AND WINDING, FIX IF NECESSARY */
-
-for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--)
- {
- previ = y;
- i = sp_intercepts.cdr[y]; /* Index head of intercept list */
- while (i != 0) /* Link to next intercept if present */
- {
- j = i;
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
- if (sp_intercepts.inttype[i] & LEFT_INT)
- {
- if (sp_intercepts.inttype[j] & LEFT_INT)
- {
- do { i = sp_intercepts.cdr[i]; } while (sp_intercepts.inttype[i] & LEFT_INT);
- do { i = sp_intercepts.cdr[i]; } while (sp_intercepts.cdr[i] && !(sp_intercepts.inttype[sp_intercepts.cdr[i]] & LEFT_INT));
- sp_intercepts.cdr[j] = i;
- }
- else
- {
- xsave = sp_intercepts.car[j];
- sp_intercepts.car[j] = sp_intercepts.car[i];
- sp_intercepts.car[i] = xsave;
-
- xsave = sp_intercepts.inttype[j];
- sp_intercepts.inttype[j] = sp_intercepts.inttype[i] & FRACTION;
- sp_intercepts.inttype[i] = xsave | LEFT_INT;
-
- sp_intercepts.cdr[previ] = i;
- sp_intercepts.cdr[j] = sp_intercepts.cdr[i];
- sp_intercepts.cdr[i] = j;
- i = j;
- j = sp_intercepts.cdr[previ];
- }
- }
-
- if (sp_intercepts.car[j] < sp_globals.xmin)
- sp_intercepts.car[j] = sp_globals.xmin; /* Clip to sp_globals.xmin boundary */
-
- if (sp_intercepts.car[i] > sp_globals.xmax)
- sp_intercepts.car[i] = sp_globals.xmax;
-
- if (sp_intercepts.car[j] >= sp_intercepts.car[i])
- {
- if ((ufix16)(sp_intercepts.inttype[j] & FRACTION) + (ufix16)(sp_intercepts.inttype[i] & FRACTION) > sp_intercepts.fracpix)
- ++sp_intercepts.car[i];
- else
- --sp_intercepts.car[j];
- }
- if (sp_globals.first_pass)
- {
- if (sp_intercepts.inttype[i-1] & END_INT)
- {
- for (iminus1 = i+1; !(sp_intercepts.inttype[iminus1] & END_INT); iminus1++)
- ;
- }
- else
- iminus1 = i-1;
-
- if (sp_intercepts.inttype[j] & END_INT)
- {
- for (jplus1 = j-1; !(sp_intercepts.inttype[jplus1] & END_INT); jplus1--)
- ;
- jplus1++;
- }
- else
- jplus1 = j+1;
-
- if ((sp_intercepts.inttype[iminus1] & LEFT_INT))
- {
- if ( sp_intercepts.car[jplus1] > sp_intercepts.car[i])
- {
- diff = sp_intercepts.car[jplus1] - sp_intercepts.car[i];
- sp_intercepts.car[i] += diff/2;
- sp_intercepts.car[jplus1] -= diff/2;
- if (diff & 1)
- {
- if ((ufix16)(sp_intercepts.inttype[i] & FRACTION) + (ufix16)(sp_intercepts.inttype[jplus1] & FRACTION) > sp_intercepts.fracpix)
- sp_intercepts.car[i] ++;
- else
- sp_intercepts.car[jplus1]--;
- }
- }
- }
- else if (!(sp_intercepts.inttype[jplus1] & LEFT_INT))
- {
- if (sp_intercepts.car[iminus1] < sp_intercepts.car[j])
- {
- diff = sp_intercepts.car[j] - sp_intercepts.car[iminus1];
- sp_intercepts.car[j] -= diff/2;
- sp_intercepts.car[iminus1] += diff/2;
- if (diff & 1)
- {
- if ((ufix16)(sp_intercepts.inttype[j] & FRACTION) +
- (ufix16)(sp_intercepts.inttype[iminus1] & FRACTION) > sp_intercepts.fracpix)
- sp_intercepts.car[iminus1]++;
- else
- sp_intercepts.car[j]--;
- }
- }
- }
- if (sp_globals.tcb.mirror == -1)
- {
- if (sp_intercepts.inttype[j-1] & END_INT)
- {
- for (jplus1 = j+1; !(sp_intercepts.inttype[jplus1] & END_INT); jplus1++)
- ;
- }
- else
- {
- jplus1 = j-1;
- }
- }
-
- if (!(sp_intercepts.inttype[jplus1] & LEFT_INT) &&
- sp_intercepts.car[j] > sp_intercepts.car[jplus1])
- {
- k = sp_intercepts.cdr[y - 1];
- while (k > 0)
- {
- nextk = sp_intercepts.cdr[k];
- if (!(sp_intercepts.inttype[k] & LEFT_INT) &&
- (sp_intercepts.inttype[nextk] & LEFT_INT) &&
- sp_intercepts.car[nextk] > sp_intercepts.car[jplus1])
- {
- if ((diff=sp_intercepts.car[j] - sp_intercepts.car[k]) > 0)
- {
- if (diff <= (sp_intercepts.car[nextk] - sp_intercepts.car[jplus1]))
- {
- sp_intercepts.car[j] -= diff/2;
- sp_intercepts.car[k] += diff/2;
- if (diff & 1)
- {
- if ((ufix16)(sp_intercepts.inttype[j] & FRACTION) +
- (ufix16)(sp_intercepts.inttype[k] & FRACTION) > sp_intercepts.fracpix)
- sp_intercepts.car[j]--;
- else
- sp_intercepts.car[k]++;
- }
- }
- else
- {
- diff = sp_intercepts.car[nextk] - sp_intercepts.car[jplus1];
- sp_intercepts.car[nextk] -= diff/2;
- sp_intercepts.car[jplus1] += diff/2;
- if (diff & 1)
- {
- if ((ufix16)(sp_intercepts.inttype[jplus1] & FRACTION) +
- (ufix16)(sp_intercepts.inttype[nextk] & FRACTION) > sp_intercepts.fracpix)
- sp_intercepts.car[nextk]--;
- else
- sp_intercepts.car[jplus1]++;
- }
- }
- }
- break;
- }
- k = nextk;
- }
- }
- if (j > 0 && sp_intercepts.car[j-1] > sp_intercepts.car[i] && !(sp_intercepts.inttype[j-1] & END_INT))
- {
- diff = sp_intercepts.car[j-1] - sp_intercepts.car[i];
- sp_intercepts.car[i] += diff/2;
- sp_intercepts.car[j-1] -= diff/2;
- if (diff & 1)
- {
- if ((ufix16)(sp_intercepts.inttype[i] & FRACTION) + (ufix16)(sp_intercepts.inttype[j-1] & FRACTION) > sp_intercepts.fracpix)
- sp_intercepts.car[i]++;
- else
- sp_intercepts.car[j-1]--;
- }
- }
- if (sp_intercepts.car[i+1] < sp_intercepts.car[j] && !(sp_intercepts.inttype[i] & END_INT))
- {
- diff = sp_intercepts.car[j] - sp_intercepts.car[i+1];
- sp_intercepts.car[j] -= diff/2;
- sp_intercepts.car[i+1] += diff/2;
- if (diff & 1)
- {
- if ((ufix16)(sp_intercepts.inttype[j] & FRACTION) + (ufix16)(sp_intercepts.inttype[i+1] & FRACTION) > sp_intercepts.fracpix)
- sp_intercepts.car[i+1]++;
- else
- sp_intercepts.car[j]--;
- }
-
- }
- previ = i;
- }
- i = sp_intercepts.cdr[i];
- }
- }
-
-#if DEBUG
-printf("\nPROC_INTERCEPTS_SCREEN: Intercept lists after:\n");
-/* Print out all of the intercept info */
-scan_line = sp_globals.ymax - first_y - 1;
-
-for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++)
- {
- i = y; /* Index head of intercept list */
- while ((i = sp_intercepts.cdr[i]) != 0) /* Link to next intercept if present */
- {
- if ((from = sp_intercepts.car[i] - sp_globals.xmin) < 0)
- from = 0; /* Clip to sp_globals.xmin boundary */
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
- if (i == 0) /* End of list? */
- {
- printf("****** proc_intercepts: odd number of intercepts\n");
- break;
- }
- if ((to = sp_intercepts.car[i]) > sp_globals.xmax)
- to = sp_globals.xmax - sp_globals.xmin; /* Clip to sp_globals.xmax boundary */
- else
- to -= sp_globals.xmin;
- printf(" Y = %2d (scanline %2d): %d %d:\n",
- y + sp_globals.y_band.band_min, scan_line, from, to);
- }
- }
-#endif
-
-/* INTERCEPTS ALL PATCHED, NOW DRAW THE IMAGE */
-scan_line = sp_globals.ymax - first_y - 1;
-
-for (y = first_y - sp_globals.y_band.band_min; y >= last_y; y--, scan_line++)
- {
- i = sp_intercepts.cdr[y]; /* Index head of intercept list */
- while (i != 0) /* Link to next intercept if present */
- {
- from = sp_intercepts.car[i];
- i = sp_intercepts.cdr[i]; /* Link to next intercept */
- to = sp_intercepts.car[i];
-#if INCL_CLIPPING
- if (clipleft)
- {
- if (to <= xmin)
- {
- i = sp_intercepts.cdr[i];
- continue;
- }
- if (from < xmin)
- from = xmin;
- }
- if (clipright)
- {
- if (from >= xmax)
- {
- i = sp_intercepts.cdr[i];
- continue;
- }
- if (to > xmax)
- to = xmax;
- }
-#endif
- set_bitmap_bits(scan_line, from-sp_globals.xmin, to-sp_globals.xmin);
- i = sp_intercepts.cdr[i];
- }
- }
-}
-
-#endif
diff --git a/libXfont/src/Speedo/out_util.c b/libXfont/src/Speedo/out_util.c
deleted file mode 100644
index baf942747..000000000
--- a/libXfont/src/Speedo/out_util.c
+++ /dev/null
@@ -1,339 +0,0 @@
-/* $Xorg: out_util.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/out_util.c,v 1.2 1999/02/07 06:18:17 dawes Exp $ */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#define DEBUG 0
-
-/*************************** O U T _ U T I L . C *****************************
- * *
- * This is a utility module share by all bitmap output modules *
- * *
- *****************************************************************************/
-
-
-#include "spdo_prv.h" /* General definitions for Speedo */
-/* absolute value function */
-#define ABS(X) ( (X < 0) ? -X : X)
-#if INCL_BLACK || INCL_2D || INCL_SCREEN
-
-static FUNCTION void restart_intercepts_out(void)
-GDECL
-/* Called by sp_make_char when a new sub character is started
- * Freezes current sorted lists
- */
-{
-#if DEBUG
-printf(" Restart intercepts:\n");
-#endif
-sp_globals.first_offset = sp_globals.next_offset;
-}
-
-static FUNCTION void set_first_band_out(
-GDECL
-point_t Pmin,
-point_t Pmax)
-{
-
-sp_globals.ymin = Pmin.y;
-sp_globals.ymax = Pmax.y;
-
-sp_globals.ymin = (sp_globals.ymin - sp_globals.onepix + 1) >> sp_globals.pixshift;
-sp_globals.ymax = (sp_globals.ymax + sp_globals.onepix - 1) >> sp_globals.pixshift;
-
-#if INCL_CLIPPING
- switch(sp_globals.tcb0.xtype)
- {
- case 1: /* 180 degree rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_ymin = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift;
- sp_globals.clip_ymin = -1* sp_globals.clip_ymin;
- if (sp_globals.ymin < sp_globals.clip_ymin)
- sp_globals.ymin = sp_globals.clip_ymin;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_ymax = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift;
- if (sp_globals.ymax > sp_globals.clip_ymax)
- sp_globals.ymax = sp_globals.clip_ymax;
- }
- break;
- case 2: /* 90 degree rotation */
- sp_globals.clip_ymax = 0;
- if ((sp_globals.specs.flags & CLIP_TOP) &&
- (sp_globals.ymax > sp_globals.clip_ymax))
- sp_globals.ymax = sp_globals.clip_ymax;
- sp_globals.clip_ymin = ((sp_globals.set_width.y+32768L) >> 16);
- if ((sp_globals.specs.flags & CLIP_BOTTOM) &&
- (sp_globals.ymin < sp_globals.clip_ymin))
- sp_globals.ymin = sp_globals.clip_ymin;
- break;
- case 3: /* 270 degree rotation */
- sp_globals.clip_ymax = ((sp_globals.set_width.y+32768L) >> 16);
- if ((sp_globals.specs.flags & CLIP_TOP) &&
- (sp_globals.ymax > sp_globals.clip_ymax))
- sp_globals.ymax = sp_globals.clip_ymax;
- sp_globals.clip_ymin = 0;
- if ((sp_globals.specs.flags & CLIP_BOTTOM) &&
- (sp_globals.ymin < sp_globals.clip_ymin))
- sp_globals.ymin = sp_globals.clip_ymin;
- break;
- default: /* this is for zero degree rotation and arbitrary rotation */
- if (sp_globals.specs.flags & CLIP_TOP)
- {
- sp_globals.clip_ymax = (fix31)((fix31)EM_TOP * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymax = sp_globals.clip_ymax >> sp_globals.multshift;
- if (sp_globals.ymax > sp_globals.clip_ymax)
- sp_globals.ymax = sp_globals.clip_ymax;
- }
- if (sp_globals.specs.flags & CLIP_BOTTOM)
- {
- sp_globals.clip_ymin = (fix31)((fix31)(-1 * EM_BOT) * sp_globals.tcb0.yppo + ((1<<sp_globals.multshift)/2));
- sp_globals.clip_ymin = sp_globals.clip_ymin >> sp_globals.multshift;
- sp_globals.clip_ymin = - sp_globals.clip_ymin;
- if (sp_globals.ymin < sp_globals.clip_ymin)
- sp_globals.ymin = sp_globals.clip_ymin;
- }
- break;
- }
-#endif
-sp_globals.y_band.band_min = sp_globals.ymin;
-sp_globals.y_band.band_max = sp_globals.ymax - 1;
-
-sp_globals.xmin = (Pmin.x + sp_globals.pixrnd) >> sp_globals.pixshift;
-sp_globals.xmax = (Pmax.x + sp_globals.pixrnd) >> sp_globals.pixshift;
-
-
-#if INCL_2D
-sp_globals.x_band.band_min = sp_globals.xmin - 1; /* subtract one pixel of "safety margin" */
-sp_globals.x_band.band_max = sp_globals.xmax /* - 1 + 1 */; /* Add one pixel of "safety margin" */
-#endif
-}
-
-FUNCTION void init_char_out(
-GDECL
-point_t Psw, point_t Pmin, point_t Pmax)
-{
-sp_globals.set_width.x = (fix31)Psw.x << sp_globals.poshift;
-sp_globals.set_width.y = (fix31)Psw.y << sp_globals.poshift;
-set_first_band_out(Pmin, Pmax);
-init_intercepts_out();
-if (sp_globals.normal)
- {
- sp_globals.bmap_xmin = Pmin.x;
- sp_globals.bmap_xmax = Pmax.x;
- sp_globals.bmap_ymin = Pmin.y;
- sp_globals.bmap_ymax = Pmax.y;
- sp_globals.extents_running = FALSE;
- }
-else
- {
- sp_globals.bmap_xmin = 32000;
- sp_globals.bmap_xmax = -32000;
- sp_globals.bmap_ymin = 32000;
- sp_globals.bmap_ymax = -32000;
- sp_globals.extents_running = TRUE;
- }
-sp_globals.first_pass = TRUE;
-}
-
-FUNCTION void begin_sub_char_out(
-GDECL
-point_t Psw,
-point_t Pmin,
-point_t Pmax)
-/* Called at the start of each sub-character in a composite character
- */
-{
-#if DEBUG
-printf("BEGIN_SUB_CHAR_out(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f\n",
- (real)Psw.x / (real)sp_globals.onepix, (real)Psw.y / (real)sp_globals.onepix,
- (real)Pmin.x / (real)sp_globals.onepix, (real)Pmin.y / (real)sp_globals.onepix,
- (real)Pmax.x / (real)sp_globals.onepix, (real)Pmax.y / (real)sp_globals.onepix);
-#endif
-restart_intercepts_out();
-if (!sp_globals.extents_running)
- {
- sp_globals.bmap_xmin = 32000;
- sp_globals.bmap_xmax = -32000;
- sp_globals.bmap_ymin = 32000;
- sp_globals.bmap_ymax = -32000;
- sp_globals.extents_running = TRUE;
- }
-}
-
-FUNCTION void curve_out(
-GDECL
-point_t P1, point_t P2, point_t P3,
-fix15 depth)
-/* Called for each curve in the transformed character if curves out enabled
- */
-{
-#if DEBUG
-printf("CURVE_OUT(%3.1f, %3.1f, %3.1f, %3.1f, %3.1f, %3.1f)\n",
- (real)P1.x / (real)sp_globals.onepix, (real)P1.y / (real)sp_globals.onepix,
- (real)P2.x / (real)sp_globals.onepix, (real)P2.y / (real)sp_globals.onepix,
- (real)P3.x / (real)sp_globals.onepix, (real)P3.y / (real)sp_globals.onepix);
-#endif
-}
-
-
-
-FUNCTION void end_contour_out()
-GDECL
-/* Called after the last vector in each contour
- */
-{
-#if DEBUG
-printf("END_CONTOUR_OUT()\n");
-#endif
-}
-
-
-FUNCTION void end_sub_char_out()
-GDECL
-/* Called after the last contour in each sub-character in a compound character
- */
-{
-#if DEBUG
-printf("END_SUB_CHAR_OUT()\n");
-#endif
-}
-
-
-FUNCTION void init_intercepts_out()
-GDECL
-/* Called to initialize intercept storage data structure
- */
-
-{
-fix15 i;
-fix15 no_lists;
-
-#if DEBUG
-printf(" Init intercepts (Y band from %d to %d)\n", sp_globals.y_band.band_min, sp_globals.y_band.band_max);
-if (sp_globals.x_scan_active)
- printf(" (X band from %d to %d)\n", sp_globals.x_band.band_min, sp_globals.x_band.band_max);
-#endif
-
-sp_globals.intercept_oflo = FALSE;
-
-sp_globals.no_y_lists = sp_globals.y_band.band_max - sp_globals.y_band.band_min + 1;
-#if INCL_2D
-if (sp_globals.output_mode == MODE_2D)
- {
- sp_globals.no_x_lists = sp_globals.x_scan_active ?
- sp_globals.x_band.band_max - sp_globals.x_band.band_min + 1 : 0;
- no_lists = sp_globals.no_y_lists + sp_globals.no_x_lists;
- }
-else
-#endif
- no_lists = sp_globals.no_y_lists;
-
-#if INCL_2D
-sp_globals.y_band.band_floor = 0;
-sp_globals.y_band.band_ceiling = sp_globals.no_y_lists;
-#endif
-
-if (no_lists >= MAX_INTERCEPTS) /* Not enough room for list table? */
- {
- no_lists = sp_globals.no_y_lists = MAX_INTERCEPTS;
- sp_globals.intercept_oflo = TRUE;
- sp_globals.y_band.band_min = sp_globals.y_band.band_max - sp_globals.no_y_lists + 1;
-#if INCL_2D
- sp_globals.y_band.band_array_offset = sp_globals.y_band.band_min;
- sp_globals.y_band.band_ceiling = sp_globals.no_y_lists;
- sp_globals.no_x_lists = 0;
- sp_globals.x_scan_active = FALSE;
-#endif
- }
-
-for (i = 0; i < no_lists; i++) /* For each active value... */
- {
-#if INCL_SCREEN
- if (sp_globals.output_mode == MODE_SCREEN)
- sp_intercepts.inttype[i]=0;
-#endif
- sp_intercepts.cdr[i] = 0; /* Mark each intercept list empty */
- }
-
-sp_globals.first_offset = sp_globals.next_offset = no_lists;
-
-#if INCL_2D
-sp_globals.y_band.band_array_offset = sp_globals.y_band.band_min;
-sp_globals.x_band.band_array_offset = sp_globals.x_band.band_min - sp_globals.no_y_lists;
-sp_globals.x_band.band_floor = sp_globals.no_y_lists;
-sp_globals.x_band.band_ceiling = no_lists;
-#endif
-#if INCL_SCREEN
-sp_intercepts.inttype[sp_globals.no_y_lists-1] = END_INT;
-#endif
-
-}
-
-
-
-
-
-
-
-
-
-
-
-FUNCTION void reduce_band_size_out()
-GDECL
-{
-sp_globals.y_band.band_min = sp_globals.y_band.band_max - ((sp_globals.y_band.band_max - sp_globals.y_band.band_min) >> 1);
-#if INCL_2D
-sp_globals.y_band.band_array_offset = sp_globals.y_band.band_min;
-#endif
-}
-
-
-FUNCTION boolean next_band_out()
-GDECL
-{
-fix15 tmpfix15;
-
-if (sp_globals.y_band.band_min <= sp_globals.ymin)
- return FALSE;
-tmpfix15 = sp_globals.y_band.band_max - sp_globals.y_band.band_min;
-sp_globals.y_band.band_max = sp_globals.y_band.band_min - 1;
-sp_globals.y_band.band_min = sp_globals.y_band.band_max - tmpfix15;
-if (sp_globals.y_band.band_min < sp_globals.ymin)
- sp_globals.y_band.band_min = sp_globals.ymin;
-#if INCL_2D
-sp_globals.y_band.band_array_offset = sp_globals.y_band.band_min;
-#endif
-return TRUE;
-}
-#endif
-
diff --git a/libXfont/src/Speedo/reset.c b/libXfont/src/Speedo/reset.c
deleted file mode 100644
index 215349473..000000000
--- a/libXfont/src/Speedo/reset.c
+++ /dev/null
@@ -1,129 +0,0 @@
-/* $Xorg: reset.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/reset.c,v 1.2 1999/02/07 06:18:17 dawes Exp $ */
-
-
-
-/******************************* R E S E T . C *******************************
- * *
- * This module provides initialization functions. *
- * *
- ****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spdo_prv.h" /* General definitions for Speedo */
-#include "keys.h" /* Font decryption keys */
-
-#define DEBUG 0
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/***** EXTERNAL VARIABLES *****/
-
-/***** EXTERNAL FUNCTIONS *****/
-
-/***** STATIC VARIABLES *****/
-
-/***** STATIC FUNCTIONS *****/
-
-
-FUNCTION void reset()
-GDECL
-/*
- * Called by the host software to intialize the Speedo mechanism
- */
-{
-sp_globals.specs_valid = FALSE; /* Flag specs not valid */
-
-/* Reset decryption key */
-sp_globals.key32 = (KEY3 << 8) | KEY2;
-sp_globals.key4 = KEY4;
-sp_globals.key6 = KEY6;
-sp_globals.key7 = KEY7;
-sp_globals.key8 = KEY8;
-
-sp_globals.constr.font_id_valid = FALSE;
-
-#if INCL_MULTIDEV
-#if INCL_BLACK || INCL_SCREEN || INCL_2D
-sp_globals.bitmap_device_set = FALSE;
-#endif
-#if INCL_OUTLINE
-sp_globals.outline_device_set = FALSE;
-#endif
-#endif
-}
-
-#if INCL_KEYS
-FUNCTION void set_key(
-GDECL
-ufix8 key[]) /* Specified decryption key */
-/*
- * Dynamically sets font decryption key.
- */
-{
-sp_globals.key32 = ((ufix16)key[3] << 8) | key[2];
-sp_globals.key4 = key[4];
-sp_globals.key6 = key[6];
-sp_globals.key7 = key[7];
-sp_globals.key8 = key[8];
-}
-#endif
-
-
-
-FUNCTION ufix16 get_cust_no(
-GDECL
-buff_t font_buff)
-/*
- returns customer number from font
-*/
-{
-ufix8 FONTFAR *hdr2_org;
-ufix16 private_off;
-
-private_off = read_word_u(font_buff.org + FH_HEDSZ);
-if (private_off + FH_CUSNR > font_buff.no_bytes)
- {
- report_error(1); /* Insufficient font data loaded */
- return FALSE;
- }
-
-hdr2_org = font_buff.org + private_off;
-
-return (read_word_u(hdr2_org + FH_CUSNR));
-}
-
-
diff --git a/libXfont/src/Speedo/set_spcs.c b/libXfont/src/Speedo/set_spcs.c
deleted file mode 100644
index 8fbdf1fd2..000000000
--- a/libXfont/src/Speedo/set_spcs.c
+++ /dev/null
@@ -1,763 +0,0 @@
-/* $Xorg: set_spcs.c,v 1.3 2000/08/17 19:46:26 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/set_spcs.c,v 1.3 2001/01/17 19:43:17 dawes Exp $ */
-
-
-/*************************** S E T _ S P C S . C *****************************
- * *
- * This module implements all sp_set_specs() functionality. *
- * *
- ****************************************************************************/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#define SET_SPCS
-#include "spdo_prv.h" /* General definitions for Speedo */
-#include "keys.h"
-
-#define DEBUG 0
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/****** EXTERNAL VARIABLES *****/
-
-/***** STATIC VARIABLES *****/
-
-
-/****** STATIC FUNCTIONS *****/
-
-static boolean sp_setup_consts(PROTO_DECL2 fix15 xmin, fix15 xmax,
- fix15 ymin, fix15 ymax);
-static void sp_setup_tcb(PROTO_DECL2 tcb_t GLOBALFAR *ptcb);
-static fix15 sp_setup_mult(PROTO_DECL2 fix31 input_mult);
-static fix31 sp_setup_offset(PROTO_DECL2 fix31 input_offset);
-
-
-
-FUNCTION boolean set_specs(
-GDECL
-specs_t STACKFAR *specsarg) /* Bundle of conversion specifications */
-/*
- * Called by host software to set character generation specifications
- */
-{
-fix31 offcd; /* Offset to start of character directory */
-fix31 ofcns; /* Offset to start of constraint data */
-fix31 cd_size; /* Size of character directory */
-fix31 no_bytes_min; /* Min number of bytes in font buffer */
-ufix16 font_id; /* Font ID */
-ufix16 private_off; /* offset to private header */
-fix15 xmin; /* Minimum X ORU value in font */
-fix15 xmax; /* Maximum X ORU value in font */
-fix15 ymin; /* Minimum Y ORU value in font */
-fix15 ymax; /* Maximum Y ORU value in font */
-
-sp_globals.specs_valid = FALSE; /* Flag specs not valid */
-
-sp_globals.specs = *specsarg; /* copy specs structure into sp_globals */
-sp_globals.pspecs = &sp_globals.specs;
-sp_globals.font = *sp_globals.pspecs->pfont;
-sp_globals.pfont = &sp_globals.font;
-sp_globals.font_org = sp_globals.font.org;
-
-if (read_word_u(sp_globals.font_org + FH_FMVER + 4) != 0x0d0a)
- {
- report_error(4); /* Font format error */
- return FALSE;
- }
-if (read_word_u(sp_globals.font_org + FH_FMVER + 6) != 0x0000)
- {
- report_error(4); /* Font format error */
- return FALSE;
- }
-
-if (get_cust_no(*specsarg->pfont) == 0)
- {
- sp_globals.key32 = 0;
- sp_globals.key4 = 0;
- sp_globals.key6 = 0;
- sp_globals.key7 = 0;
- sp_globals.key8 = 0;
- }
-else
- {
- sp_globals.key32 = (KEY3 << 8) | KEY2;
- sp_globals.key4 = KEY4;
- sp_globals.key6 = KEY6;
- sp_globals.key7 = KEY7;
- sp_globals.key8 = KEY8;
- }
-
-
-sp_globals.no_chars_avail = read_word_u(sp_globals.font_org + FH_NCHRF);
-
-/* Read sp_globals.orus per em from font header */
-sp_globals.orus_per_em = read_word_u(sp_globals.font_org + FH_ORUPM);
-
-/* compute address of private header */
-private_off = read_word_u(sp_globals.font_org + FH_HEDSZ);
-sp_globals.hdr2_org = sp_globals.font_org + private_off;
-
-/* set metric resolution if specified, default to outline res otherwise */
-if (private_off > EXP_FH_METRES)
- {
- sp_globals.metric_resolution = read_word_u(sp_globals.font_org + EXP_FH_METRES);
- }
-else
- {
- sp_globals.metric_resolution = sp_globals.orus_per_em;
- }
-
-#if INCL_METRICS
-sp_globals.kern.tkorg = sp_globals.font_org + read_long(sp_globals.hdr2_org + FH_OFFTK);
-sp_globals.kern.pkorg = sp_globals.font_org + read_long(sp_globals.hdr2_org + FH_OFFPK);
-sp_globals.kern.no_tracks = read_word_u(sp_globals.font_org + FH_NKTKS);
-sp_globals.kern.no_pairs = read_word_u(sp_globals.font_org + FH_NKPRS);
-#endif
-
-offcd = read_long(sp_globals.hdr2_org + FH_OFFCD); /* Read offset to character directory */
-ofcns = read_long(sp_globals.hdr2_org + FH_OFCNS); /* Read offset to constraint data */
-cd_size = ofcns - offcd;
-if ((((sp_globals.no_chars_avail << 1) + 3) != cd_size) &&
- (((sp_globals.no_chars_avail * 3) + 4) != cd_size))
- {
- report_error(4); /* Font format error */
- return FALSE;
- }
-
-#if INCL_LCD /* Dynamic character data load suppoorted? */
-#if INCL_METRICS
-no_bytes_min = read_long(sp_globals.hdr2_org + FH_OCHRD); /* Offset to character data */
-#else /* Dynamic character data load not supported? */
-no_bytes_min = read_long(sp_globals.hdr2_org + FH_OFFTK); /* Offset to track kerning data */
-#endif
-#else /* Dynamic character data load not supported? */
-no_bytes_min = read_long(sp_globals.hdr2_org + FH_NBYTE); /* Offset to EOF + 1 */
-#endif
-
-sp_globals.font_buff_size = sp_globals.pfont->no_bytes;
-if (sp_globals.font_buff_size < no_bytes_min) /* Minimum data not loaded? */
- {
- report_error(1); /* Insufficient font data loaded */
- return FALSE;
- }
-
-sp_globals.pchar_dir = sp_globals.font_org + offcd;
-sp_globals.first_char_idx = read_word_u(sp_globals.font_org + FH_FCHRF);
-
-/* Register font name with sp_globals.constraint mechanism */
-font_id = read_word_u(sp_globals.font_org + FH_FNTID);
-if (!(sp_globals.constr.font_id_valid) || (sp_globals.constr.font_id != font_id))
- {
- sp_globals.constr.font_id = font_id;
- sp_globals.constr.font_id_valid = TRUE;
- sp_globals.constr.data_valid = FALSE;
- }
-sp_globals.constr.org = sp_globals.font_org + ofcns;
-sp_globals.constr.active = ((sp_globals.pspecs->flags & CONSTR_OFF) == 0);
-
-/* Set up sliding point constants */
-/* Set pixel shift to accomodate largest transformed pixel value */
-xmin = read_word_u(sp_globals.font_org + FH_FXMIN);
-xmax = read_word_u(sp_globals.font_org + FH_FXMAX);
-ymin = read_word_u(sp_globals.font_org + FH_FYMIN);
-ymax = read_word_u(sp_globals.font_org + FH_FYMAX);
-
-if (!sp_setup_consts(xmin,xmax,ymin,ymax))
- {
- report_error(3); /* Requested specs out of range */
- return FALSE;
- }
-#if INCL_ISW
-/* save the value of the max x oru that the fixed point constants are based on*/
-sp_globals.isw_xmax = xmax;
-#endif
-
-/* Setup transformation control block */
-sp_setup_tcb(&sp_globals.tcb0);
-
-
-/* Select output module */
-sp_globals.output_mode = sp_globals.pspecs->flags & 0x0007;
-
-#if INCL_USEROUT
-if (!init_userout(sp_globals.pspecs))
-#endif
-
-switch (sp_globals.output_mode)
- {
-#if INCL_BLACK
-case MODE_BLACK: /* Output mode 0 (Black writer) */
- sp_globals.init_out = sp_init_black;
- sp_globals.begin_char = sp_begin_char_black;
- sp_globals.begin_sub_char = sp_begin_sub_char_out;
- sp_globals.begin_contour = sp_begin_contour_black;
- sp_globals.curve = sp_curve_out;
- sp_globals.line = sp_line_black;
- sp_globals.end_contour = sp_end_contour_out;
- sp_globals.end_sub_char = sp_end_sub_char_out;
- sp_globals.end_char = sp_end_char_black;
- break;
-#endif
-
-#if INCL_SCREEN
-case MODE_SCREEN: /* Output mode 1 (Screen writer) */
- sp_globals.init_out = sp_init_screen;
- sp_globals.begin_char = sp_begin_char_screen;
- sp_globals.begin_sub_char = sp_begin_sub_char_out;
- sp_globals.begin_contour = sp_begin_contour_screen;
- sp_globals.curve = sp_curve_screen;
- sp_globals.line = sp_line_screen;
- sp_globals.end_contour = sp_end_contour_screen;
- sp_globals.end_sub_char = sp_end_sub_char_out;
- sp_globals.end_char = sp_end_char_screen;
- break;
-#endif
-
-#if INCL_OUTLINE
-case MODE_OUTLINE: /* Output mode 2 (Vector) */
- sp_globals.init_out = sp_init_outline;
- sp_globals.begin_char = sp_begin_char_outline;
- sp_globals.begin_sub_char = sp_begin_sub_char_outline;
- sp_globals.begin_contour = sp_begin_contour_outline;
- sp_globals.curve = sp_curve_outline;
- sp_globals.line = sp_line_outline;
- sp_globals.end_contour = sp_end_contour_outline;
- sp_globals.end_sub_char = sp_end_sub_char_outline;
- sp_globals.end_char = sp_end_char_outline;
- break;
-#endif
-
-#if INCL_2D
-case MODE_2D: /* Output mode 3 */
- sp_globals.init_out = sp_init_2d;
- sp_globals.begin_char = sp_begin_char_2d;
- sp_globals.begin_sub_char = sp_begin_sub_char_out;
- sp_globals.begin_contour = sp_begin_contour_2d;
- sp_globals.curve = sp_curve_out;
- sp_globals.line = sp_line_2d;
- sp_globals.end_contour = sp_end_contour_out;
- sp_globals.end_sub_char = sp_end_sub_char_out;
- sp_globals.end_char = sp_end_char_2d;
- break;
-#endif
-
-default:
- report_error(8); /* Unsupported mode requested */
- return FALSE;
- }
-
- if (!fn_init_out(sp_globals.pspecs))
- {
- report_error(5);
- return FALSE;
- }
-
-
-sp_globals.curves_out = sp_globals.pspecs->flags & CURVES_OUT;
-
-if (sp_globals.pspecs->flags & BOGUS_MODE) /* Linear transformation requested? */
- {
- sp_globals.tcb0.xtype = sp_globals.tcb0.ytype = 4;
- }
-
-if ((sp_globals.pspecs->flags & SQUEEZE_LEFT) ||
- (sp_globals.pspecs->flags & SQUEEZE_RIGHT) ||
- (sp_globals.pspecs->flags & SQUEEZE_TOP) ||
- (sp_globals.pspecs->flags & SQUEEZE_BOTTOM) )
- {
-#if (INCL_SQUEEZING)
-#else
- report_error(11);
- return FALSE;
-#endif
- }
-
-if ((sp_globals.pspecs->flags & CLIP_LEFT) ||
- (sp_globals.pspecs->flags & CLIP_RIGHT) ||
- (sp_globals.pspecs->flags & CLIP_TOP) ||
- (sp_globals.pspecs->flags & CLIP_BOTTOM) )
- {
-#if (INCL_CLIPPING)
-#else
- report_error(11);
- return FALSE;
-#endif
- }
-
-sp_globals.specs_valid = TRUE;
-return TRUE;
-}
-
-
-
-#if INCL_MULTIDEV
-#if INCL_BLACK || INCL_SCREEN || INCL_2D
-FUNCTION boolean set_bitmap_device(
-GDECL
-bitmap_t *bfuncs,
-ufix16 size)
-{
-
-if (size != sizeof(sp_globals.bitmap_device))
- return FALSE;
-
-sp_globals.bitmap_device = *bfuncs;
-sp_globals.bitmap_device_set = TRUE;
-}
-#endif
-
-#if INCL_OUTLINE
-FUNCTION boolean set_outline_device(
-GDECL
-outline_t *ofuncs,
-ufix16 size)
-{
-
-if (size != sizeof(sp_globals.outline_device))
- return FALSE;
-
-sp_globals.outline_device = *ofuncs;
-sp_globals.outline_device_set = TRUE;
-}
-#endif
-#endif
-
-
-#ifdef old
-FUNCTION boolean sp_setup_consts(
-GDECL
-fix15 xmin, /* Minimum X ORU value in font */
-fix15 xmax, /* Maximum X ORU value in font */
-fix15 ymin, /* Minimum Y ORU value in font */
-fix15 ymax) /* Maximum Y ORU value in font */
-#else
-static FUNCTION boolean sp_setup_consts(
-GDECL
-fix15 xmin, /* Minimum X ORU value in font */
-fix15 xmax, /* Maximum X ORU value in font */
-fix15 ymin, /* Minimum Y ORU value in font */
-fix15 ymax) /* Maximum Y ORU value in font */
-#endif
-/*
- * Sets the following constants used for fixed point arithmetic:
- * sp_globals.multshift multipliers and products; range is 14 to 8
- * sp_globals.pixshift pixels: range is 0 to 8
- * sp_globals.mpshift shift from product to sub-pixels (sp_globals.multshift - sp_globals.pixshift)
- * sp_globals.multrnd rounding for products
- * sp_globals.pixrnd rounding for pixels
- * sp_globals.mprnd rounding for sub-pixels
- * sp_globals.onepix 1 pixel in shifted pixel units
- * sp_globals.pixfix mask to eliminate fractional bits of shifted pixels
- * sp_globals.depth_adj curve splitting depth adjustment
- * Returns FALSE if specs are out of range
- */
-{
-fix31 mult; /* Successive multiplier values */
-ufix32 num; /* Numerator of largest multiplier value */
-ufix32 numcopy; /* Copy of numerator */
-ufix32 denom; /* Denominator of largest multiplier value */
-ufix32 denomcopy; /* Copy of denominator */
-ufix32 pix_max; /* Maximum pixel rounding error */
-fix31 xmult; /* Coefficient of X oru value in transformation */
-fix31 ymult; /* Coefficient of Y oru value in transformation */
-fix31 offset; /* Constant in transformation */
-fix15 i; /* Loop counter */
-fix15 x, y; /* Successive corners of bounding box in ORUs */
-fix31 pixval; /* Successive pixel values multiplied by orus per em */
-fix15 xx = 0, yy = 0;/* Bounding box corner that produces max pixel value */
-
-/* Determine numerator and denominator of largest multiplier value */
-mult = sp_globals.pspecs->xxmult >> 16;
-if (mult < 0)
- mult = -mult;
-num = mult;
-
-mult = sp_globals.pspecs->xymult >> 16;
-if (mult < 0)
- mult = -mult;
-if (mult > num)
- num = mult;
-
-mult = sp_globals.pspecs->yxmult >> 16;
-if (mult < 0)
- mult = -mult;
-if (mult > num)
- num = mult;
-
-mult = sp_globals.pspecs->yymult >> 16;
-if (mult < 0)
- mult = -mult;
-if (mult > num)
- num = mult;
-num++; /* Max absolute pixels per em (rounded up) */
-denom = (ufix32)sp_globals.orus_per_em;
-
-/* Set curve splitting depth adjustment to accomodate largest multiplier value */
-sp_globals.depth_adj = 0; /* 0 = 0.5 pel, 1 = 0.13 pel, 2 = 0.04 pel accuracy */
-denomcopy = denom;
-/* The following two occurances of a strange method of shifting twice by 1
- are intentional and should not be changed to a single shift by 2.
- It prevents MicroSoft C 5.1 from generating functions calls to do the shift.
- Worse, using the REENTRANT_ALLOC option in conjunction with the /AC compiler
- option, the function appears to be called incorrectly, causing depth_adj to always
- be set to -7, causing very angular characters. */
-
-while ((num > denomcopy) && (sp_globals.depth_adj < 5)) /* > 1, 4, 16, ... pixels per oru? */
- {
- denomcopy <<= 1;
- denomcopy <<= 1;
- sp_globals.depth_adj++; /* Add 1, 2, 3, ... to depth adjustment */
- }
-numcopy = num << 2;
-while ((numcopy <= denom) && (sp_globals.depth_adj > -4)) /* <= 1/4, 1/16, 1/64 pix per oru? */
- {
- numcopy <<= 1;
- numcopy <<= 1;
- sp_globals.depth_adj--; /* Subtract 1, 2, 3, ... from depth adjustment */
- }
-SHOW(sp_globals.depth_adj);
-
-/* Set multiplier shift to accomodate largest multiplier value */
-sp_globals.multshift = 14;
-numcopy = num;
-while (numcopy >= denom) /* More than 1, 2, 4, ... pix per oru? */
- {
- numcopy >>= 1;
- sp_globals.multshift--; /* sp_globals.multshift is 13, 12, 11, ... */
- }
-
-sp_globals.multrnd = ((fix31)1 << sp_globals.multshift) >> 1;
-SHOW(sp_globals.multshift);
-
-
-pix_max = (ufix32)( 0xffff & read_word_u(sp_globals.hdr2_org + FH_PIXMX));
-
-num = 0;
-xmult = ((sp_globals.pspecs->xxmult >> 16) + 1) >> 1;
-ymult = ((sp_globals.pspecs->xymult >> 16) + 1) >> 1;
-offset = ((sp_globals.pspecs->xoffset >> 16) + 1) >> 1;
-for (i = 0; i < 8; i++)
- {
- if (i == 4)
- {
- xmult = ((sp_globals.pspecs->yxmult >> 16) + 1) >> 1;
- ymult = ((sp_globals.pspecs->yymult >> 16) + 1) >> 1;
- offset = ((sp_globals.pspecs->yoffset >> 16) + 1) >> 1;
- }
- x = (i & BIT1)? xmin: xmax;
- y = (i & BIT0)? ymin: ymax;
- pixval = (fix31)x * xmult + (fix31)y * ymult + offset * denom;
- if (pixval < 0)
- pixval = -pixval;
- if (pixval > num)
- {
- num = pixval;
- xx = x;
- yy = y;
- }
- }
-if (xx < 0)
- xx = -xx;
-if (yy < 0)
- yy = -yy;
-num += xx + yy + ((pix_max + 2) * denom);
- /* Allow (with 2:1 safety margin) for 1 pixel rounding errors in */
- /* xmult, ymult and offset values, pix_max pixel expansion */
- /* due to intelligent scaling, and */
- /* 1 pixel rounding of overall character position */
-denom = denom << 14; /* Note num is in units of half pixels times orus per em */
-
-sp_globals.pixshift = -1;
-while ((num <= denom) && (sp_globals.pixshift < 8)) /* Max pixels <= 32768, 16384, 8192, ... pixels? */
- {
- num <<= 1;
- sp_globals.pixshift++; /* sp_globals.pixshift = 0, 1, 2, ... */
- }
-if (sp_globals.pixshift < 0)
- return FALSE;
-
-SHOW(sp_globals.pixshift);
-sp_globals.poshift = 16 - sp_globals.pixshift;
-
-sp_globals.onepix = (fix15)1 << sp_globals.pixshift;
-sp_globals.pixrnd = sp_globals.onepix >> 1;
-sp_globals.pixfix = ~0 << sp_globals.pixshift;
-
-sp_globals.mpshift = sp_globals.multshift - sp_globals.pixshift;
-if (sp_globals.mpshift < 0)
- return FALSE;
-sp_globals.mprnd = ((fix31)1 << sp_globals.mpshift) >> 1;
-
-return TRUE;
-}
-
-#ifdef old
-FUNCTION void sp_setup_tcb(
-GDECL
-tcb_t GLOBALFAR *ptcb) /* Pointer to transformation control bloxk */
-#else
-static FUNCTION void sp_setup_tcb(
-GDECL
-tcb_t GLOBALFAR *ptcb) /* Pointer to transformation control bloxk */
-#endif
-/*
- * Convert transformation coeffs to internal form
- */
-{
-
-ptcb->xxmult = sp_setup_mult(sp_globals.pspecs->xxmult);
-ptcb->xymult = sp_setup_mult(sp_globals.pspecs->xymult);
-ptcb->xoffset = sp_setup_offset(sp_globals.pspecs->xoffset);
-ptcb->yxmult = sp_setup_mult(sp_globals.pspecs->yxmult);
-ptcb->yymult = sp_setup_mult(sp_globals.pspecs->yymult);
-ptcb->yoffset = sp_setup_offset(sp_globals.pspecs->yoffset);
-
-SHOW(ptcb->xxmult);
-SHOW(ptcb->xymult);
-SHOW(ptcb->xoffset);
-SHOW(ptcb->yxmult);
-SHOW(ptcb->yymult);
-SHOW(ptcb->yoffset);
-
-type_tcb(ptcb); /* Classify transformation type */
-}
-
-FUNCTION static fix15 sp_setup_mult(
-GDECL
-fix31 input_mult) /* Multiplier in input format */
-/*
- * Called by sp_setup_tcb() to convert multiplier in transformation
- * matrix from external to internal form.
- */
-{
-fix15 imshift; /* Right shift to internal format */
-fix31 imdenom; /* Divisor to internal format */
-fix31 imrnd; /* Rounding for division operation */
-
-imshift = 15 - sp_globals.multshift;
-imdenom = (fix31)sp_globals.orus_per_em << imshift;
-imrnd = imdenom >> 1;
-
-input_mult >>= 1;
-if (input_mult >= 0)
- return (fix15)((input_mult + imrnd) / imdenom);
-else
- return -(fix15)((-input_mult + imrnd) / imdenom);
-}
-
-FUNCTION static fix31 sp_setup_offset(
-GDECL
-fix31 input_offset) /* Multiplier in input format */
-/*
- * Called by sp_setup_tcb() to convert offset in transformation
- * matrix from external to internal form.
- */
-{
-fix15 imshift; /* Right shift to internal format */
-fix31 imrnd; /* Rounding for right shift operation */
-
-imshift = 15 - sp_globals.multshift;
-imrnd = ((fix31)1 << imshift) >> 1;
-
-return (((input_offset >> 1) + imrnd) >> imshift) + sp_globals.mprnd;
-}
-
-FUNCTION void type_tcb(
-GDECL
-tcb_t GLOBALFAR *ptcb) /* Pointer to transformation control bloxk */
-{
-fix15 x_trans_type;
-fix15 y_trans_type;
-fix15 xx_mult;
-fix15 xy_mult;
-fix15 yx_mult;
-fix15 yy_mult;
-fix15 h_pos;
-fix15 v_pos;
-fix15 x_ppo;
-fix15 y_ppo;
-fix15 x_pos;
-fix15 y_pos;
-
-/* check for mirror image transformations */
-xx_mult = ptcb->xxmult;
-xy_mult = ptcb->xymult;
-yx_mult = ptcb->yxmult;
-yy_mult = ptcb->yymult;
-
-ptcb->mirror = ((((fix31)xx_mult*(fix31)yy_mult)-
- ((fix31)xy_mult*(fix31)yx_mult)) < 0) ? -1 : 1;
-
-if (sp_globals.pspecs->flags & BOGUS_MODE) /* Linear transformation requested? */
- {
- ptcb->xtype = 4;
- ptcb->ytype = 4;
-
- ptcb->xppo = 0;
- ptcb->yppo = 0;
- ptcb->xpos = 0;
- ptcb->ypos = 0;
- }
-else /* Intelligent tranformation requested? */
- {
- h_pos = ((ptcb->xoffset >> sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix;
- v_pos = ((ptcb->yoffset >> sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix;
-
- x_trans_type = 4;
- x_ppo = 0;
- x_pos = 0;
-
- y_trans_type = 4;
- y_ppo = 0;
- y_pos = 0;
-
- if (xy_mult == 0)
- {
- if (xx_mult >= 0)
- {
- x_trans_type = 0; /* X pix is function of X orus only */
- x_ppo = xx_mult;
- x_pos = h_pos;
- }
- else
- {
- x_trans_type = 1; /* X pix is function of -X orus only */
- x_ppo = -xx_mult;
- x_pos = -h_pos;
- }
- }
-
- else if (xx_mult == 0)
- {
- if (xy_mult >= 0)
- {
- x_trans_type = 2; /* X pix is function of Y orus only */
- y_ppo = xy_mult;
- y_pos = h_pos;
- }
- else
- {
- x_trans_type = 3; /* X pix is function of -Y orus only */
- y_ppo = -xy_mult;
- y_pos = -h_pos;
- }
- }
-
- if (yx_mult == 0)
- {
- if (yy_mult >= 0)
- {
- y_trans_type = 0; /* Y pix is function of Y orus only */
- y_ppo = yy_mult;
- y_pos = v_pos;
- }
- else
- {
- y_trans_type = 1; /* Y pix is function of -Y orus only */
- y_ppo = -yy_mult;
- y_pos = -v_pos;
- }
- }
- else if (yy_mult == 0)
- {
- if (yx_mult >= 0)
- {
- y_trans_type = 2; /* Y pix is function of X orus only */
- x_ppo = yx_mult;
- x_pos = v_pos;
- }
- else
- {
- y_trans_type = 3; /* Y pix is function of -X orus only */
- x_ppo = -yx_mult;
- x_pos = -v_pos;
- }
- }
-
- ptcb->xtype = x_trans_type;
- ptcb->ytype = y_trans_type;
-
- ptcb->xppo = x_ppo;
- ptcb->yppo = y_ppo;
- ptcb->xpos = x_pos;
- ptcb->ypos = y_pos;
- }
-
-sp_globals.normal = (ptcb->xtype != 4) && (ptcb->ytype != 4);
-
-ptcb->xmode = 4;
-ptcb->ymode = 4;
-
-SHOW(ptcb->xtype);
-SHOW(ptcb->ytype);
-SHOW(ptcb->xppo);
-SHOW(ptcb->yppo);
-SHOW(ptcb->xpos);
-SHOW(ptcb->ypos);
-}
-
-FUNCTION fix31 read_long(
-GDECL
-ufix8 FONTFAR *pointer) /* Pointer to first byte of encrypted 3-byte integer */
-/*
- * Reads a 3-byte encrypted integer from the byte string starting at
- * the specified point.
- * Returns the decrypted value read as a signed integer.
- */
-{
-fix31 tmpfix31;
-
-tmpfix31 = (fix31)((*pointer++) ^ sp_globals.key4) << 8; /* Read middle byte */
-tmpfix31 += (fix31)(*pointer++) << 16; /* Read most significant byte */
-tmpfix31 += (fix31)((*pointer) ^ sp_globals.key6); /* Read least significant byte */
-return tmpfix31;
-}
-
-FUNCTION fix15 read_word_u(
-GDECL
-ufix8 FONTFAR *pointer) /* Pointer to first byte of unencrypted 2-byte integer */
-/*
- * Reads a 2-byte unencrypted integer from the byte string starting at
- * the specified point.
- * Returns the decrypted value read as a signed integer.
- */
-{
-fix15 tmpfix15;
-
-tmpfix15 = (fix15)(*pointer++) << 8; /* Read most significant byte */
-tmpfix15 += (fix15)(*pointer); /* Add least significant byte */
-return tmpfix15;
-}
-
-
diff --git a/libXfont/src/Speedo/set_trns.c b/libXfont/src/Speedo/set_trns.c
deleted file mode 100644
index 35c2e33cf..000000000
--- a/libXfont/src/Speedo/set_trns.c
+++ /dev/null
@@ -1,1214 +0,0 @@
-/* $Xorg: set_trns.c,v 1.3 2000/08/17 19:46:27 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/set_trns.c,v 1.5tsi Exp $ */
-
-
-
-/*************************** S E T _ T R N S . C *****************************
- * *
- * This module is called from do_char.c to set up the intelligent *
- * transformation for one character (or sub-character of a composite *
- * character.
- * *
- ****************************************************************************/
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spdo_prv.h" /* General definitions for Speedo */
-
-#define DEBUG 0
-
-#if DEBUG
-#include <stdio.h>
-#define SHOW(X) printf("X = %d\n", X)
-#else
-#define SHOW(X)
-#endif
-/***** LOCAL MACROS *****/
-
-#define SQUEEZE_X_ORU(A,B,C) ((((fix31)A * (fix31)B) + C) >> 16)
-#define ABS(A) ((A < 0)? -A:A) /* absolute value */
-#define IMPORT_FACTOR \
- shift = 16;\
- while (*x_factor > (0x7fffffffL / (isw_scale >> (16 - shift))))\
- shift--;\
- *x_factor = (*x_factor * (isw_scale>>(16-shift))) >> shift;
-
-/***** GLOBAL VARIABLES *****/
-
-/***** GLOBAL FUNCTIONS *****/
-
-/***** EXTERNAL VARIABLES *****/
-
-/***** EXTERNAL FUNCTIONS *****/
-
-/***** STATIC VARIABLES *****/
-
-/***** STATIC FUNCTIONS *****/
-
-static void sp_constr_update(PROTO_DECL1);
-static ufix8 FONTFAR *sp_setup_pix_table(PROTO_DECL2 ufix8 FONTFAR *pointer,boolean short_form,fix15 no_X_ctrl_zones,fix15 no_Y_ctrl_zones);
-static ufix8 FONTFAR *sp_setup_int_table(PROTO_DECL2 ufix8 FONTFAR *pointer,fix15 no_X_int_zones,fix15 no_Y_int_zones);
-
-
-FUNCTION void init_tcb()
-GDECL
-/*
- * Called by sp_make_char() and make_comp_char() to initialize the current
- * transformation control block to the top level transformation.
- */
-{
-sp_globals.tcb = sp_globals.tcb0;
-}
-
-FUNCTION void scale_tcb(
-GDECL
-tcb_t GLOBALFAR *ptcb, /* Transformation control block */
-fix15 x_pos, /* X position (outline res units) */
-fix15 y_pos, /* Y position (outline res units) */
-fix15 x_scale, /* X scale factor * ONE_SCALE */
-fix15 y_scale) /* Y scale factor * ONE_SCALE */
-/*
- * Called by make_comp_char() to apply position and scale for each of the
- * components of a compound character.
- */
-{
-fix15 xx_mult = ptcb->xxmult;
-fix15 xy_mult = ptcb->xymult;
-fix31 x_offset = ptcb->xoffset;
-fix15 yx_mult = ptcb->yxmult;
-fix15 yy_mult = ptcb->yymult;
-fix31 y_offset = ptcb->yoffset;
-
-ptcb->xxmult = TRANS(xx_mult, x_scale, (fix31)SCALE_RND, SCALE_SHIFT);
-ptcb->xymult = TRANS(xy_mult, y_scale, (fix31)SCALE_RND, SCALE_SHIFT);
-ptcb->xoffset = MULT16(xx_mult, x_pos) + MULT16(xy_mult, y_pos) + x_offset;
-ptcb->yxmult = TRANS(yx_mult, x_scale, (fix31)SCALE_RND, SCALE_SHIFT);
-ptcb->yymult = TRANS(yy_mult, y_scale, (fix31)SCALE_RND, SCALE_SHIFT);
-ptcb->yoffset = MULT16(yx_mult, x_pos) + MULT16(yy_mult, y_pos) + y_offset;
-
-type_tcb(ptcb); /* Reclassify transformation types */
-}
-
-
-static FUNCTION ufix8 FONTFAR *read_oru_table(
-GDECL
-ufix8 FONTFAR *pointer) /* Pointer to first byte in controlled coord table */
-/*
- * Called by plaid_tcb() to read the controlled coordinate table from the
- * character data in the font.
- * Updates the pointer to the byte following the controlled coordinate
- * data.
- */
-{
-fix15 i, j, k, n;
-boolean zero_not_in;
-boolean zero_added;
-fix15 oru;
-
-fix15 pos;
-
-i = 0;
-n = sp_globals.no_X_orus;
-pos = sp_globals.tcb.xpos;
-for (j = 0; ; j++)
- {
- zero_not_in = TRUE;
- zero_added = FALSE;
- for (k = 0; k < n; k++)
- {
- oru = NEXT_WORD(pointer);
- if (zero_not_in && (oru >= 0)) /* First positive oru value? */
- {
- sp_plaid.pix[i] = pos; /* Insert position in pix array */
- if (oru != 0) /* Zero oru value omitted? */
- {
- sp_plaid.orus[i++] = 0; /* Insert zero value in oru array */
- zero_added = TRUE; /* Remember to increment size of array */
- }
- zero_not_in = FALSE; /* Inhibit further testing for zero ins */
- }
- sp_plaid.orus[i++] = oru; /* Add specified oru value to array */
- }
- if (zero_not_in) /* All specified oru values negative? */
- {
- sp_plaid.pix[i] = pos; /* Insert position in pix array */
- sp_plaid.orus[i++] = 0; /* Add zero oru value */
- zero_added = TRUE; /* Remember to increment size of array */
- }
- if (j) /* Both X and Y orus read? */
- break;
- if (zero_added)
- sp_globals.no_X_orus++; /* Increment X array size */
- n = sp_globals.no_Y_orus; /* Prepare to read Y oru values */
- pos = sp_globals.tcb.ypos;
- }
-if (zero_added) /* Zero Y oru value added to array? */
- sp_globals.no_Y_orus++; /* Increment Y array size */
-
-#if DEBUG
-printf("\nX ORUS\n");
-n = sp_globals.no_X_orus;
-for (i = 0; i < n; i++)
- {
- printf("%2d %4d\n", i, sp_plaid.orus[i]);
- }
-printf("\nY ORUS\n");
-n = sp_globals.no_Y_orus;
-for (i = 0; i < n; i++)
- {
- printf("%2d %4d\n", i, sp_plaid.orus[i + sp_globals.no_X_orus]);
- }
-#endif
-
-return pointer; /* Update pointer */
-}
-
-FUNCTION ufix8 FONTFAR *plaid_tcb(
-GDECL
-ufix8 FONTFAR *pointer, /* Pointer to next byte in char data */
-ufix8 format) /* Character format byte */
-/*
- * Called by make_simp_char() and make_comp_char() to set up the controlled
- * coordinate table and process all intelligent scaling rules embedded
- * in the character data.
- * Updates pointer to first byte after plaid data.
- * This is used only if intelligent scaling is enabled in the
- * configuration definitions.
- */
-{
-fix15 no_X_ctrl_zones;
-fix15 no_Y_ctrl_zones;
-fix15 no_X_int_zones;
-fix15 no_Y_int_zones;
-
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-begin_plaid_data();
-#endif
-
-sp_constr_update(); /* Update constraint table if required */
-
-sp_globals.no_X_orus = (format & BIT2)?
- (fix15)NEXT_BYTE(pointer):
- 0;
-sp_globals.no_Y_orus = (format & BIT3)?
- (fix15)NEXT_BYTE(pointer):
- 0;
-pointer = read_oru_table(pointer); /* Updates no_X/Y/orus to include zero values */
-sp_globals.Y_edge_org = sp_globals.no_X_orus;
-if (sp_globals.no_X_orus > 1) /* 2 or more controlled X coordinates? */
- sp_globals.tcb.xmode = sp_globals.tcb.xtype; /* Enable intelligent scaling in X */
-
-if (sp_globals.no_Y_orus > 1) /* 2 or more controlled Y coordinates? */
- sp_globals.tcb.ymode = sp_globals.tcb.ytype; /* Enable intelligent scaling in Y */
-
-no_X_ctrl_zones = sp_globals.no_X_orus - 1;
-no_Y_ctrl_zones = sp_globals.no_Y_orus - 1;
-pointer = sp_setup_pix_table(pointer, (boolean)(format & BIT4),
- no_X_ctrl_zones, no_Y_ctrl_zones);
-
-no_X_int_zones = (format & BIT6)?
- (fix15)NEXT_BYTE(pointer):
- 0;
-no_Y_int_zones = (format & BIT7)?
- (fix15)NEXT_BYTE(pointer):
- 0;
-sp_globals.Y_int_org = no_X_int_zones;
-pointer = sp_setup_int_table(pointer, no_X_int_zones, no_Y_int_zones);
-
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-end_plaid_data();
-#endif
-
-return pointer;
-}
-
-FUNCTION static void sp_constr_update()
-GDECL
-/*
- * Called by plaid_tcb() to update the constraint table for the current
- * transformation.
- * This is always carried out whenever a character is generated following
- * a change of font or scale factor or after initialization.
- */
-{
-fix31 ppo;
-fix15 xppo;
-fix15 yppo;
-ufix8 FONTFAR *pointer;
-fix15 no_X_constr;
-fix15 no_Y_constr;
-fix15 i, j, k, l, n;
-fix15 ppm;
-ufix8 format;
-ufix8 format1;
-fix15 limit;
-ufix16 constr_org;
-fix15 constr_nr;
-fix15 size;
-fix31 off;
-fix15 min;
-fix15 orus;
-fix15 pix;
-ufix16 tmpufix16; /* in extended mode, macro uses secnd term */
-
-if (sp_globals.constr.data_valid && /* Constr table already done and ... */
- (sp_globals.tcb.xppo == sp_globals.constr.xppo) && /* ... X pix per oru unchanged and ... */
- (sp_globals.tcb.yppo == sp_globals.constr.yppo)) /* ... Y pix per oru unchanged? */
- {
- return; /* No need to update constraint table */
- }
-
-sp_globals.constr.xppo = xppo = sp_globals.tcb.xppo; /* Update X pixels per oru indicator */
-sp_globals.constr.yppo = yppo = sp_globals.tcb.yppo; /* Update Y pixels per oru indicator */
-sp_globals.constr.data_valid = TRUE; /* Mark constraint table valid */
-
-pointer = sp_globals.constr.org; /* Point to first byte of constraint data */
-no_X_constr = NEXT_BYTES(pointer, tmpufix16); /* Read nmbr of X constraints */
-no_Y_constr = NEXT_BYTES(pointer, tmpufix16); /* Read nmbr of Y constraints */
-
-i = 0;
-constr_org = 0;
-n = no_X_constr;
-ppo = xppo;
-for (j = 0; ; j++)
- {
- sp_globals.c_act[i] = FALSE; /* Flag constraint 0 not active */
- sp_globals.c_pix[i++] = 0; /* Constraint 0 implies no minimum */
- sp_globals.c_act[i] = FALSE; /* Flag constraint 1 not active */
- sp_globals.c_pix[i++] = sp_globals.onepix; /* Constraint 1 implies min 1 pixel*/
- ppm = (ppo * (fix31)sp_globals.orus_per_em) >> sp_globals.multshift;
- for (k = 0; k < n; k++)
- {
- format = NEXT_BYTE(pointer); /* Read format byte */
- limit = (fix15)NEXT_BYTE(pointer); /* Read limit field */
- sp_globals.c_act[i] =
- ((ppm < limit) || (limit == 255)) &&
- sp_globals.constr.active;
- if (sp_globals.c_act[i]) /* Constraint active? */
- {
- if ((format & BIT1) && /* Constraint specified and ... */
- (constr_nr = constr_org +
- ((format & BIT0)? /* Read unsigned constraint value */
- NEXT_WORD(pointer):
- (fix15)NEXT_BYTE(pointer)),
- sp_globals.c_act[constr_nr])) /* ... and specified constraint active? */
- {
- pix = sp_globals.c_pix[constr_nr]; /* Use constrained pixel value */
- format1 = format;
- for (l = 2; l > 0; l--) /* Skip 2 arguments */
- {
- format1 >>= 2;
- if ((size = format1 & 0x03))
- pointer += size - 1;
- }
- }
- else /* Constraint absent or inactive? */
- {
- orus = (format & BIT2)? /* Read unsigned oru value */
- NEXT_WORD(pointer):
- (fix15)NEXT_BYTE(pointer);
-
- if (format & BIT5) /* Specified offset value? */
- {
- off = (fix31)((format & BIT4)? /* Read offset value */
- NEXT_WORD(pointer):
- (fix7)NEXT_BYTE(pointer));
- off = (off << (sp_globals.multshift - 6)) + sp_globals.multrnd;
- }
- else /* Unspecified (zero) offset value? */
- {
- off = sp_globals.multrnd;
- }
-
- pix = (fix15)(((fix31)orus * ppo + off) / (1 << sp_globals.mpshift)) & sp_globals.pixfix;
- }
- }
- else /* Constraint inactive? */
- {
- format1 = format;
- for (l = 3; l > 0; l--) /* Skip over 3 arguments */
- {
- if ((size = format1 & 0x03))
- pointer += size - 1;
- format1 >>= 2;
- }
- pix = 0;
- }
-
- if (format & 0xc0) /* Specified minimum value? */
- {
- min = (format & BIT7)? /* Read unsigned minimum value */
- (fix15)NEXT_BYTE(pointer) << sp_globals.pixshift:
- sp_globals.onepix;
- }
- else /* Unspecified (zero) minimum value? */
- {
- min = 0;
- }
-
- sp_globals.c_pix[i] = (pix < min)? min: pix;
- i++;
- }
- if (j) break; /* Finished if second time around loop */
- constr_org = sp_globals.Y_constr_org = i;
- n = no_Y_constr;
- ppo = yppo;
- }
-
-#if DEBUG
-printf("\nCONSTRAINT TABLE\n");
-n = no_X_constr + 2;
-for (i = 0; i < n; i++)
- {
- printf("%3d ", i);
- if (sp_globals.c_act[i])
- {
- printf("T ");
- }
- else
- {
- printf("F ");
- }
- printf("%5.1f\n", ((real)sp_globals.c_pix[i] / (real)sp_globals.onepix));
- }
-printf("--------------\n");
-n = no_Y_constr + 2;
-for (i = 0; i < n; i++)
- {
- j = i + sp_globals.Y_constr_org;
- printf("%3d ", i);
- if (sp_globals.c_act[j])
- {
- printf("T ");
- }
- else
- {
- printf("F ");
- }
- printf("%5.1f\n", ((real)sp_globals.c_pix[j] / (real)sp_globals.onepix));
- }
-#endif
-
-}
-
-#if INCL_SQUEEZING || INCL_ISW
-FUNCTION static void calculate_x_pix(
-GDECL
-ufix8 start_edge, ufix8 end_edge,
-ufix16 constr_nr,
-fix31 x_scale,
-fix31 x_offset,
-fix31 ppo,
-fix15 setwidth_pix)
-/*
- * Called by sp_setup_pix_table() when X squeezing is necessary
- * to insert the correct edge in the global pix array
- */
-{
-fix15 zone_pix;
-fix15 start_oru, end_oru;
-
-/* compute scaled oru coordinates */
-start_oru= (fix15)(SQUEEZE_X_ORU(sp_plaid.orus[start_edge], x_scale, x_offset));
-end_oru = (fix15)(SQUEEZE_X_ORU(sp_plaid.orus[end_edge], x_scale, x_offset));
-
-if (!sp_globals.c_act[constr_nr]) /* constraint inactive */
- {
- /* calculate zone width */
- zone_pix = (fix15)(((((fix31)end_oru - (fix31)start_oru) * ppo) /
- (1<<sp_globals.mpshift)) + sp_globals.pixrnd) & sp_globals.pixfix;
- /* check for overflow */
- if (((end_oru-start_oru) > 0) && (zone_pix < 0))
- zone_pix = 0x7ffff;
- /* check for minimum */
- if ((ABS(zone_pix)) >= sp_globals.c_pix[constr_nr])
- goto Lx;
- }
-/* use the zone size from the constr table - scale it */
-zone_pix = (fix15)(((SQUEEZE_MULT(x_scale,sp_globals.c_pix[constr_nr]))
- + sp_globals.pixrnd) & sp_globals.pixfix);
-
-/* look for overflow */
-if ((sp_globals.c_pix[constr_nr] > 0) && (zone_pix < 0))
- zone_pix = 0x7fff;
-
-if (start_edge > end_edge)
- {
- zone_pix = -zone_pix;
- }
-Lx:
-/* assign pixel value to global pix array */
-sp_plaid.pix[end_edge]=sp_plaid.pix[start_edge] + zone_pix;
-
-/* check for overflow */
-if (((sp_plaid.pix[start_edge] >0) && (zone_pix >0)) &&
- (sp_plaid.pix[end_edge] < 0))
- sp_plaid.pix[end_edge] = 0x7fff; /* set it to the max */
-
-/* be sure to be in the setwidth !*/
-#if INCL_ISW
-if (!sp_globals.import_setwidth_act) /* only check left edge if not isw only */
-#endif
-if ((sp_globals.pspecs->flags & SQUEEZE_LEFT) && (sp_plaid.pix[end_edge] < 0))
- sp_plaid.pix[end_edge] = 0;
-if ((sp_globals.pspecs->flags & SQUEEZE_RIGHT) &&
- (sp_plaid.pix[end_edge] > setwidth_pix))
- sp_plaid.pix[end_edge] = setwidth_pix;
-
-}
-#endif
-
-#if INCL_SQUEEZING
-FUNCTION static void calculate_y_pix(
-GDECL
-ufix8 start_edge, ufix8 end_edge,
-ufix16 constr_nr,
-fix31 top_scale, fix31 bottom_scale,
-fix31 ppo,
-fix15 em_top_pix, fix15 em_bot_pix)
-
-/*
- * Called by sp_setup_pix_table() when Y squeezing is necessary
- * to insert the correct edge in the global pix array
- */
-{
-fix15 zone_pix;
-fix15 start_oru, end_oru;
-fix31 zone_width, above_base, below_base;
-
-/* check whether edge is above or below the baseline */
-/* and apply appropriate scale factor to get scaled oru coordinates */
-if (sp_plaid.orus[start_edge] < 0)
- start_oru =(fix15)(SQUEEZE_MULT(sp_plaid.orus[start_edge], bottom_scale));
-else
- start_oru =(fix15)(SQUEEZE_MULT(sp_plaid.orus[start_edge], top_scale));
-
-if (sp_plaid.orus[end_edge] < 0)
- end_oru =(fix15)(SQUEEZE_MULT(sp_plaid.orus[end_edge], bottom_scale));
-else
- end_oru =(fix15)(SQUEEZE_MULT(sp_plaid.orus[end_edge], top_scale));
-
-if (!sp_globals.c_act[constr_nr]) /* Constraint inactive? */
- {
- /* calculate zone width */
- zone_pix = (fix15)(((((fix31)end_oru - (fix31)start_oru) * ppo)
- >> sp_globals.mpshift)+ sp_globals.pixrnd) & sp_globals.pixfix;
- /* check minimum */
- if ((ABS(zone_pix)) >= sp_globals.c_pix[constr_nr])
- goto Ly;
- }
-
-/* Use zone size from constr table */
-if ((end_oru >= 0) && (start_oru >=0))
- /* all above baseline */
- zone_pix = (fix15)(SQUEEZE_MULT(top_scale, sp_globals.c_pix[constr_nr]));
-else if ((end_oru <= 0) && (start_oru <=0))
- /* all below baseline */
- zone_pix = (fix15)(SQUEEZE_MULT(bottom_scale, sp_globals.c_pix[constr_nr]));
-else
- {
- /* mixture */
- if (start_oru > 0)
- {
- zone_width = start_oru - end_oru;
- /* get % above baseline in 16.16 fixed point */
- above_base = (((fix31)start_oru) << 16) /
- ((fix31)zone_width) ;
- /* get % below baseline in 16.16 fixed point */
- below_base = (((fix31)-end_oru) << 16) /
- ((fix31)zone_width) ;
- }
- else
- {
- zone_width = end_oru - start_oru;
- /* get % above baseline in 16.16 fixed point */
- above_base = (((fix31)-start_oru) << 16) /
- ((fix31)zone_width) ;
- /* get % below baseline in 16.16 fixed point */
- below_base = (((fix31)end_oru) << 16) /
- ((fix31)zone_width) ;
- }
- /* % above baseline * total zone * top_scale + */
- /* % below baseline * total zone * bottom_scale */
- zone_pix = ((((above_base * (fix31)sp_globals.c_pix[constr_nr]) >> 16) *
- top_scale) +
- (((below_base * (fix31)sp_globals.c_pix[constr_nr]) >> 16) *
- bottom_scale)) >> 16;
- }
-
-/* make this zone pix fall on a pixel boundary */
-zone_pix = (zone_pix + sp_globals.pixrnd) & sp_globals.pixfix;
-
-/* if minimum is in effect make the zone one pixel */
-if ((sp_globals.c_pix[constr_nr] != 0) && (zone_pix < sp_globals.onepix))
- zone_pix = sp_globals.onepix;
-
-if (start_edge > end_edge)
- {
- zone_pix = -zone_pix; /* Use negatve zone size */
- }
-Ly:
-/* assign global pix value */
-sp_plaid.pix[end_edge] = sp_plaid.pix[start_edge] + zone_pix; /* Insert end pixels */
-
-/* make sure it is in the EM !*/
-if ((sp_globals.pspecs->flags & SQUEEZE_TOP) &&
- (sp_plaid.pix[end_edge] > em_top_pix))
- sp_plaid.pix[end_edge] = em_top_pix;
-if ((sp_globals.pspecs->flags & SQUEEZE_BOTTOM) &&
- (sp_plaid.pix[end_edge] < em_bot_pix))
- sp_plaid.pix[end_edge] = em_bot_pix;
-}
-
-FUNCTION boolean calculate_x_scale(x_factor, x_offset, no_X_ctrl_zones)
-GDECL
-fix31 *x_factor,
-fix31 *x_offset,
-fix15 no_X_ctrl_zones) /* Number of X control zones */
-/*
- * Called by sp_setup_pix_table() when squeezing is included
- * to determine whether X scaling is necessary. If it is, the
- * scale factor and offset are computed. This function returns
- * a boolean value TRUE = X squeezind is necessary, FALSE = no
- * X squeezing is necessary.
- */
-{
-boolean squeeze_left, squeeze_right;
-boolean out_on_right, out_on_left;
-fix15 bbox_width,set_width;
-fix15 bbox_xmin, bbox_xmax;
-fix15 x_offset_pix;
-fix15 i;
-#if INCL_ISW
-fix31 isw_scale;
-fix15 shift;
-#endif
-
-
-/* set up some flags and common calculations */
-squeeze_left = (sp_globals.pspecs->flags & SQUEEZE_LEFT)? TRUE:FALSE;
-squeeze_right = (sp_globals.pspecs->flags & SQUEEZE_RIGHT)? TRUE:FALSE;
-bbox_xmin = sp_globals.bbox_xmin_orus;
-bbox_xmax = sp_globals.bbox_xmax_orus;
-set_width = sp_globals.setwidth_orus;
-
-if (bbox_xmax > set_width)
- out_on_right = TRUE;
-else
- out_on_right = FALSE;
-if (bbox_xmin < 0)
- out_on_left = TRUE;
-else
- out_on_left = FALSE;
-bbox_width =bbox_xmax - bbox_xmin;
-
-/*
- * don't need X squeezing if:
- * - X squeezing not enabled
- * - bbox doesn't violate on left or right
- * - left squeezing only is enabled and char isn't out on left
- * - right squeezing only is enabled and char isn't out on right
- */
-
-if ((!squeeze_left && !squeeze_right) ||
- (!out_on_right && !out_on_left) ||
- (squeeze_left && !squeeze_right && !out_on_left) ||
- (squeeze_right && !squeeze_left && !out_on_right))
- return FALSE;
-
-#if INCL_ISW
-if (sp_globals.import_setwidth_act)
- {
- /* if both isw and squeezing is going on - let the imported */
- /* setwidth factor be factored in with the squeeze */
- isw_scale = compute_isw_scale();
- /*sp_globals.setwidth_orus = sp_globals.imported_width;*/
- }
-else
- isw_scale = 0x10000L; /* 1 in 16.16 notation */
-#endif
-
-/* squeezing on left and right ? */
-if (squeeze_left && squeeze_right)
- {
- /* calculate scale factor */
- if (bbox_width < set_width)
- *x_factor = 0x10000L; /* 1 in 16.16 notation */
- else
- *x_factor = ((fix31)set_width<<16)/(fix31)bbox_width;
-#if INCL_ISW
- IMPORT_FACTOR
-#endif
- /* calculate offset */
- if (out_on_left) /* fall out on left ? */
- *x_offset = -(fix31)*x_factor * (fix31)bbox_xmin;
- /* fall out on right and I am shifting only ? */
- else if (out_on_right && (*x_factor == 0x10000L))
- *x_offset = -(fix31)*x_factor * (fix31)(bbox_xmax - set_width);
- else
- *x_offset = 0x0L; /* 0 in 16.16 notation */
- }
-/* squeezing on left only and violates left */
-else if (squeeze_left)
- {
- if (bbox_width < set_width) /* will it fit if I shift it ? */
- *x_factor = 0x10000L; /* 1 in 16.16 notation */
- else if (out_on_right)
- *x_factor = ((fix31)set_width<<16)/(fix31)bbox_width;
- else
- *x_factor = ((fix31)set_width<<16)/
- (fix31)(bbox_width - (bbox_xmax-set_width));
-#if INCL_ISW
- IMPORT_FACTOR
-#endif
- *x_offset = (fix31)-*x_factor * (fix31)bbox_xmin;
- }
-
-/* I must be squeezing on right, and violates right */
-else
- {
- if (bbox_width < set_width) /* will it fit if I shift it ? */
- { /* just shift it left - it will fit in the bbox */
- *x_factor = 0x10000L; /* 1 in 16.16 notation */
-#if INCL_ISW
- IMPORT_FACTOR
-#endif
- *x_offset = (fix31)-*x_factor * (fix31)bbox_xmin;
- }
- else if (out_on_left)
- {
- *x_factor = ((fix31)set_width<<16)/(fix31)bbox_width;
-#if INCL_ISW
- IMPORT_FACTOR
-#endif
- *x_offset = 0x0L; /* 0 in 16.16 notation */
- }
- else
- {
- *x_factor = ((fix31)set_width<<16)/(fix31)bbox_xmax;
-#if INCL_ISW
- IMPORT_FACTOR
-#endif
- *x_offset = 0x0L; /* 0 in 16.16 notation */
- }
- }
-
-x_offset_pix = (fix15)(((*x_offset >> 16) * sp_globals.tcb0.xppo)
- / (1<<sp_globals.mpshift));
-
-if ((x_offset_pix >0) && (x_offset_pix < sp_globals.onepix))
- x_offset_pix = sp_globals.onepix;
-
-/* look for the first non-negative oru value, scale and add the offset */
-/* to the corresponding pixel value - note that the pixel value */
-/* is set in read_oru_table. */
-
-/* look at all the X edges */
-for (i=0; i < (no_X_ctrl_zones+1); i++)
- if (sp_plaid.orus[i] >= 0)
- {
- sp_plaid.pix[i] = (SQUEEZE_MULT(sp_plaid.pix[i], *x_factor)
- +sp_globals.pixrnd + x_offset_pix) & sp_globals.pixfix;
- break;
- }
-
-return TRUE;
-}
-
-FUNCTION boolean calculate_y_scale(
-GDECL
-fix31 *top_scale, fix31 *bottom_scale,
-fix15 first_Y_zone,
-fix15 no_Y_ctrl_zones)
-/*
- * Called by sp_setup_pix_table() when squeezing is included
- * to determine whether Y scaling is necessary. If it is,
- * two scale factors are computed, one for above the baseline,
- * and one for below the basline.
- * This function returns a boolean value TRUE = Y squeezind is necessary,
- * FALSE = no Y squeezing is necessary.
- */
-{
-boolean squeeze_top, squeeze_bottom;
-boolean out_on_top, out_on_bottom;
-fix15 bbox_top, bbox_bottom;
-fix15 bbox_height;
-fix15 i;
-
-/* set up some flags and common calculations */
-squeeze_top = (sp_globals.pspecs->flags & SQUEEZE_TOP)? TRUE:FALSE;
-squeeze_bottom = (sp_globals.pspecs->flags & SQUEEZE_BOTTOM)? TRUE:FALSE;
-bbox_top = sp_globals.bbox_ymax_orus;
-bbox_bottom = sp_globals.bbox_ymin_orus;
-bbox_height = bbox_top - bbox_bottom;
-
-if (bbox_top > EM_TOP)
- out_on_top = TRUE;
-else
- out_on_top = FALSE;
-
-if (bbox_bottom < EM_BOT)
- out_on_bottom = TRUE;
-else
- out_on_bottom = FALSE;
-
-/*
- * don't need Y squeezing if:
- * - Y squeezing not enabled
- * - bbox doesn't violate on top or bottom
- * - top squeezing only is enabled and char isn't out on top
- * - bottom squeezing only is enabled and char isn't out on bottom
- */
-if ((!squeeze_top && !squeeze_bottom) ||
- (!out_on_top && !out_on_bottom) ||
- (squeeze_top && !squeeze_bottom && !out_on_top) ||
- (squeeze_bottom && !squeeze_top && !out_on_bottom))
- return FALSE;
-
-if (squeeze_top && (bbox_top > EM_TOP))
- *top_scale = ((fix31)EM_TOP << 16)/(fix31)(bbox_top);
-else
- *top_scale = 0x10000L; /* 1 in 16.16 fixed point */
-
-if (squeeze_bottom && (bbox_bottom < EM_BOT))
- *bottom_scale = ((fix31)-(EM_BOT) << 16)/(fix31)-bbox_bottom;
-else
- *bottom_scale = 0x10000L;
-
-if (sp_globals.squeezing_compound)
- {
- for (i=first_Y_zone; i < (first_Y_zone + no_Y_ctrl_zones + 1); i++)
- {
- if (sp_plaid.orus[i] >= 0)
- sp_plaid.pix[i] = (SQUEEZE_MULT(sp_plaid.pix[i], *top_scale)
- +sp_globals.pixrnd) & sp_globals.pixfix;
- else
- sp_plaid.pix[i] = (SQUEEZE_MULT(sp_plaid.pix[i], *bottom_scale)
- +sp_globals.pixrnd) & sp_globals.pixfix;
- }
- }
-return TRUE;
-}
-#endif
-
-FUNCTION static ufix8 FONTFAR *sp_setup_pix_table(
-GDECL
-ufix8 FONTFAR *pointer, /* Pointer to first byte in control zone table */
-boolean short_form, /* TRUE if 1 byte from/to specification */
-fix15 no_X_ctrl_zones, /* Number of X control zones */
-fix15 no_Y_ctrl_zones) /* Number of Y control zones */
-/*
- * Called by plaid_tcb() to read the control zone table from the
- * character data in the font.
- * Sets up a table of pixel values for all controlled coordinates.
- * Updates the pointer to the byte following the control zone
- * data.
- */
-{
-fix15 i, j, n;
-fix31 ppo;
-#if INCL_SQUEEZING || INCL_ISW
-fix31 xppo0; /* top level pixels per oru */
-fix31 yppo0; /* top level pixels per oru */
-#endif
-ufix8 edge_org;
-ufix8 edge;
-ufix8 start_edge;
-ufix8 end_edge;
-ufix16 constr_org;
-fix15 constr_nr;
-fix15 zone_pix;
-fix31 whole_zone; /* non-transformed value of the first X zone */
-ufix16 tmpufix16; /* in extended mode, macro uses secnd term */
-#if INCL_SQUEEZING
-fix31 x_scale;
-fix31 y_top_scale, y_bottom_scale;
-fix31 x_offset;
-boolean squeezed_y;
-fix15 setwidth_pix, em_top_pix, em_bot_pix;
-#endif
-
-#if INCL_ISW
-boolean imported_width;
-fix31 isw_scale;
-fix15 isw_setwidth_pix;
-#endif
-
-#if INCL_ISW || INCL_SQUEEZING
-boolean squeezed_x;
-#endif
-
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-begin_ctrl_zones(no_X_ctrl_zones, no_Y_ctrl_zones);
-#endif
-
-
-edge_org = 0;
-constr_org = 0;
-sp_globals.rnd_xmin = 0; /* initialize the error for chars with no zone */
-n = no_X_ctrl_zones;
-ppo = sp_globals.tcb.xppo;
-#if INCL_SQUEEZING || INCL_ISW
-xppo0 = sp_globals.tcb0.xppo;
-yppo0 = sp_globals.tcb0.yppo;
-squeezed_x = FALSE;
-#endif
-
-#if INCL_SQUEEZING
-squeezed_x = calculate_x_scale (&x_scale, &x_offset, no_X_ctrl_zones);
-squeezed_y = calculate_y_scale(&y_top_scale,&y_bottom_scale,(n+1),
- no_Y_ctrl_zones);
-#if INCL_ISW
-if (sp_globals.import_setwidth_act == TRUE)
-setwidth_pix = ((fix15)(((fix31)sp_globals.imported_width * xppo0) >>
- sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix;
-
-else
-#endif
-setwidth_pix = ((fix15)(((fix31)sp_globals.setwidth_orus * xppo0) >>
- sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix;
-/* check for overflow */
-if (setwidth_pix < 0)
- setwidth_pix = 0x7fff; /* set to maximum */
-em_bot_pix = ((fix15)(((fix31)EM_BOT * yppo0) >>
- sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix;
-em_top_pix = ((fix15)(((fix31)EM_TOP * yppo0) >>
- sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix;
-#endif
-
-#if INCL_ISW
-/* convert to pixels */
-isw_setwidth_pix = ((fix15)(((fix31)sp_globals.imported_width * xppo0) >>
- sp_globals.mpshift) + sp_globals.pixrnd) & sp_globals.pixfix;
-/* check for overflow */
-if (isw_setwidth_pix < 0)
- isw_setwidth_pix = 0x7fff; /* set to maximum */
-if (!squeezed_x && ((imported_width = sp_globals.import_setwidth_act) == TRUE))
- {
- isw_scale = compute_isw_scale();
-
- /* look for the first non-negative oru value, scale and add the offset */
- /* to the corresponding pixel value - note that the pixel value */
- /* is set in read_oru_table. */
-
- /* look at all the X edges */
- for (i=0; i < (no_X_ctrl_zones+1); i++)
- if (sp_plaid.orus[i] >= 0)
- {
- sp_plaid.pix[i] = (SQUEEZE_MULT(sp_plaid.pix[i], isw_scale)
- +sp_globals.pixrnd) & sp_globals.pixfix;
- break;
- }
-
- }
-#endif
-
-for (i = 0; ; i++) /* For X and Y control zones... */
- {
- for (j = 0; j < n; j++) /* For each zone in X or Y... */
- {
- if (short_form) /* 1 byte from/to specification? */
- {
- edge = NEXT_BYTE(pointer); /* Read packed from/to spec */
- start_edge = edge_org + (edge & 0x0f); /* Extract start edge */
- end_edge = edge_org + (edge >> 4); /* Extract end edge */
- }
- else /* 2 byte from/to specification? */
- {
- start_edge = edge_org + NEXT_BYTE(pointer); /* Read start edge */
- end_edge = edge_org + NEXT_BYTE(pointer); /* read end edge */
- }
- constr_nr = constr_org +
- NEXT_BYTES(pointer, tmpufix16); /* Read constraint number */
-#if INCL_SQUEEZING
- if (i == 0 && squeezed_x)
- calculate_x_pix(start_edge, end_edge, constr_nr,
- x_scale, x_offset, ppo, setwidth_pix);
- else if (i == 1 && squeezed_y)
- calculate_y_pix(start_edge, end_edge,constr_nr,
- y_top_scale, y_bottom_scale, ppo, em_top_pix, em_bot_pix);
- else
- {
-#endif
-#if INCL_ISW
- if (i==0 && imported_width)
- calculate_x_pix(start_edge, end_edge, constr_nr,
- isw_scale, 0, ppo, isw_setwidth_pix);
- else
- {
-#endif
- if (!sp_globals.c_act[constr_nr]) /* Constraint inactive? */
- {
- zone_pix = ((fix15)((((fix31)sp_plaid.orus[end_edge] -
- (fix31)sp_plaid.orus[start_edge]) * ppo) /
- (1<<sp_globals.mpshift)) + sp_globals.pixrnd) &
- sp_globals.pixfix;
- if ((ABS(zone_pix)) >= sp_globals.c_pix[constr_nr])
- goto L1;
- }
- zone_pix = sp_globals.c_pix[constr_nr]; /* Use zone size from constr table */
- if (start_edge > end_edge) /* sp_plaid.orus[start_edge] > sp_plaid.orus[end_edge]? */
- {
- zone_pix = -zone_pix; /* Use negatve zone size */
- }
- L1:
- /* inter-character spacing fix */
- if ((j == 0) && (i == 0)) /* if this is the 1st X zone, save rounding error */
- { /* get the non-xformed - xformed zone, in right direction */
- whole_zone = (((fix31)sp_plaid.orus[end_edge] -
- (fix31)sp_plaid.orus[start_edge]) *
- ppo) / (1<<sp_globals.mpshift);
- sp_globals.rnd_xmin = whole_zone - zone_pix;
- }
- sp_plaid.pix[end_edge] = sp_plaid.pix[start_edge] + zone_pix; /* Insert end pixels */
-#if INCL_SQUEEZING
- if (i == 0) /* in the x direction */
- { /* brute force squeeze */
- if ((sp_globals.pspecs->flags & SQUEEZE_LEFT) &&
- (sp_plaid.pix[end_edge] < 0))
- sp_plaid.pix[end_edge] = 0;
- if ((sp_globals.pspecs->flags & SQUEEZE_RIGHT) &&
- (sp_plaid.pix[end_edge] > setwidth_pix))
- sp_plaid.pix[end_edge] = setwidth_pix;
- }
- if (i == 1) /* in the y direction */
- { /* brute force squeeze */
- if ((sp_globals.pspecs->flags & SQUEEZE_TOP) &&
- (sp_plaid.pix[end_edge] > em_top_pix))
- sp_plaid.pix[end_edge] = em_top_pix;
- if ((sp_globals.pspecs->flags & SQUEEZE_BOTTOM) &&
- (sp_plaid.pix[end_edge] < em_bot_pix))
- sp_plaid.pix[end_edge] = em_bot_pix;
- }
-#endif
-#if INCL_SQUEEZING
- }
-#endif
-#if INCL_ISW
- }
-#endif
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
- record_ctrl_zone(
- (fix31)sp_plaid.pix[start_edge] << (16 - sp_globals.pixshift),
- (fix31)sp_plaid.pix[end_edge] << (16 - sp_globals.pixshift),
- (fix15)(constr_nr - constr_org));
-#endif
- }
- if (i) /* Y pixels done? */
- break;
- edge_org = sp_globals.Y_edge_org; /* Prepare to process Y ctrl zones */
- constr_org = sp_globals.Y_constr_org;
- n = no_Y_ctrl_zones;
- ppo = sp_globals.tcb.yppo;
- }
-
-#if DEBUG
-printf("\nX PIX TABLE\n");
-n = no_X_ctrl_zones + 1;
-for (i = 0; i < n; i++)
- printf("%2d %6.1f\n", i, (real)sp_plaid.pix[i] / (real)sp_globals.onepix);
-printf("\nY PIX TABLE\n");
-n = no_Y_ctrl_zones + 1;
-for (i = 0; i < n; i++)
- {
- j = i + no_X_ctrl_zones + 1;
- printf("%2d %6.1f\n", i, (real)sp_plaid.pix[j] / (real)sp_globals.onepix);
- }
-#endif
-
-return pointer;
-}
-
-
-FUNCTION static ufix8 FONTFAR *sp_setup_int_table(
-GDECL
-ufix8 FONTFAR *pointer, /* Pointer to first byte in interpolation zone table */
-fix15 no_X_int_zones, /* Number of X interpolation zones */
-fix15 no_Y_int_zones) /* Number of X interpolation zones */
-/*
- * Called by plaid_tcb() to read the interpolation zone table from the
- * character data in the font.
- * Sets up a table of interpolation coefficients with one entry for
- * every X or Y interpolation zone.
- * Updates the pointer to the byte following the interpolation zone
- * data.
- */
-{
-fix15 i, j, k, l, n;
-ufix8 format;
-ufix8 format_copy;
-ufix8 tmpufix8;
-fix15 start_orus = 0;
-ufix8 edge_org;
-ufix8 edge;
-ufix16 adj_factor;
-fix15 adj_orus;
-fix15 end_orus = 0;
-fix31 zone_orus;
-fix15 start_pix = 0;
-fix15 end_pix = 0;
-
-
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-begin_int_zones(no_X_int_zones, no_Y_int_zones);
-#endif
-
-i = 0;
-edge_org = 0;
-n = no_X_int_zones;
-for (j = 0; ; j++)
- {
- for (k = 0; k < n; k++)
- {
- format = NEXT_BYTE(pointer);
- if (format & BIT7) /* Short start/end point spec? */
- {
- tmpufix8 = NEXT_BYTE(pointer);
- edge = edge_org + (tmpufix8 & 0xf);
- start_orus = sp_plaid.orus[edge];
- start_pix = sp_plaid.pix[edge];
- edge = edge_org + (tmpufix8 >> 4);
- end_orus = sp_plaid.orus[edge];
- end_pix = sp_plaid.pix[edge];
- }
- else /* Standard start and end point spec? */
- {
- format_copy = format;
- for (l = 0; ; l++) /* Loop for start and end point */
- {
- switch (format_copy & 0x7) /* Decode start/end point format */
- {
-
- case 0: /* Index to control edge */
- edge = edge_org + NEXT_BYTE(pointer);
- end_orus = sp_plaid.orus[edge];
- end_pix = sp_plaid.pix[edge];
- break;
-
- case 1: /* 1 byte fractional distance to next edge */
- adj_factor = 0xffff & NEXT_BYTE(pointer) << 8;
- goto L1;
-
-
- case 2: /* 2 byte fractional distance to next edge */
- adj_factor = 0xffff & NEXT_WORD(pointer);
- L1: edge = edge_org + NEXT_BYTE(pointer);
- end_orus = sp_plaid.orus[edge] +
- ((((fix31)sp_plaid.orus[edge + 1] - (fix31)sp_plaid.orus[edge]) *
- (ufix32)adj_factor + (fix31)32768) >> 16);
- end_pix = sp_plaid.pix[edge] +
- ((((fix31)sp_plaid.pix[edge + 1] - (fix31)sp_plaid.pix[edge]) *
- (ufix32)adj_factor + (fix31)32768) >> 16);
- break;
-
- case 3: /* 1 byte delta orus before first edge */
- adj_orus = -(fix15)NEXT_BYTE(pointer);
- goto L2;
-
- case 4: /* 2 byte delta orus before first edge */
- adj_orus = -NEXT_WORD(pointer);
- L2: edge = edge_org;
- goto L4;
-
- case 5: /* 1 byte delta orus after last edge */
- adj_orus = (fix15)NEXT_BYTE(pointer);
- goto L3;
-
- case 6: /* 2 byte delta orus after last edge */
- adj_orus = NEXT_WORD(pointer);
- L3: edge = j? sp_globals.Y_edge_org + sp_globals.no_Y_orus - 1: sp_globals.no_X_orus - 1;
- L4: end_orus = sp_plaid.orus[edge] + adj_orus;
- end_pix = sp_plaid.pix[edge] +
- (((fix31)adj_orus * (fix31)(j? sp_globals.tcb.yppo: sp_globals.tcb.xppo) +
- sp_globals.mprnd) / (1<<sp_globals.mpshift));
- break;
-
- }
-
- if (l) /* Second time round loop? */
- break;
- format_copy >>= 3; /* Adj format to decode end point format */
- start_orus = end_orus; /* Save start point oru value */
- start_pix = end_pix; /* Save start point pixel value */
- }
- }
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
- record_int_zone(
- (fix31)start_pix << (16 - sp_globals.pixshift),
- (fix31)end_pix << (16 - sp_globals.pixshift));
-#endif
- zone_orus = (fix31)end_orus - (fix31)start_orus;
- sp_plaid.mult[i] = ((((fix31)end_pix - (fix31)start_pix) << sp_globals.mpshift) +
- (zone_orus / 2)) / zone_orus;
- sp_plaid.offset[i] =
- (((((fix31)start_pix + (fix31)end_pix) << sp_globals.mpshift) -
- ((fix31)sp_plaid.mult[i] * ((fix31)start_orus + (fix31)end_orus))) / 2) +
- sp_globals.mprnd;
- i++;
- }
- if (j) /* Finished? */
- break;
- edge_org = sp_globals.Y_edge_org; /* Prepare to process Y ctrl zones */
- n = no_Y_int_zones;
- }
-
-#if DEBUG
-printf("\nX INT TABLE\n");
-n = no_X_int_zones;
-for (i = 0; i < n; i++)
- {
- printf("%2d %7.4f %7.4f\n", i,
- (real)sp_plaid.mult[i] / (real)(1 << sp_globals.multshift),
- (real)sp_plaid.offset[i] / (real)(1 << sp_globals.multshift));
- }
-printf("\nY INT TABLE\n");
-n = no_Y_int_zones;
-for (i = 0; i < n; i++)
- {
- j = i + no_X_int_zones;
- printf("%2d %7.4f %7.4f\n", i,
- (real)sp_plaid.mult[j] / (real)(1 << sp_globals.multshift),
- (real)sp_plaid.offset[j] / (real)(1 << sp_globals.multshift));
- }
-#endif
-
-return pointer;
-}
-#if INCL_ISW
-FUNCTION fix31 compute_isw_scale()
-GDECL
-{
-fix31 isw_scale;
-
-if (sp_globals.setwidth_orus == 0)
- isw_scale = 0x00010000;
-else
- isw_scale = ((fix31)sp_globals.imported_width << 16)/
- (fix31)sp_globals.setwidth_orus;
-return isw_scale;
-}
-#endif
diff --git a/libXfont/src/Speedo/spdo_prv.h b/libXfont/src/Speedo/spdo_prv.h
deleted file mode 100644
index 2b3882c22..000000000
--- a/libXfont/src/Speedo/spdo_prv.h
+++ /dev/null
@@ -1,262 +0,0 @@
-/* $Xorg: spdo_prv.h,v 1.3 2000/08/17 19:46:27 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/spdo_prv.h,v 1.4 1999/03/14 03:21:17 dawes Exp $ */
-
-
-
-/***************************** S P D O _ P R V . H *******************************/
-
-#include "speedo.h" /* include public definitions */
-
-/***** CONFIGURATION DEFINITIONS *****/
-
-
-/***** PRIVATE FONT HEADER OFFSET CONSTANTS *****/
-#define FH_ORUMX 0 /* U Max ORU value 2 bytes */
-#define FH_PIXMX 2 /* U Max Pixel value 2 bytes */
-#define FH_CUSNR 4 /* U Customer Number 2 bytes */
-#define FH_OFFCD 6 /* E Offset to Char Directory 3 bytes */
-#define FH_OFCNS 9 /* E Offset to Constraint Data 3 bytes */
-#define FH_OFFTK 12 /* E Offset to Track Kerning 3 bytes */
-#define FH_OFFPK 15 /* E Offset to Pair Kerning 3 bytes */
-#define FH_OCHRD 18 /* E Offset to Character Data 3 bytes */
-#define FH_NBYTE 21 /* E Number of Bytes in File 3 bytes */
-
-
-/***** MODE FLAGS CONSTANTS *****/
-#define CURVES_OUT 0X0008 /* Output module accepts curves */
-#define BOGUS_MODE 0X0010 /* Linear scaling mode */
-#define CONSTR_OFF 0X0020 /* Inhibit constraint table */
-#define IMPORT_WIDTHS 0X0040 /* Imported width mode */
-#define SQUEEZE_LEFT 0X0100 /* Squeeze left mode */
-#define SQUEEZE_RIGHT 0X0200 /* Squeeze right mode */
-#define SQUEEZE_TOP 0X0400 /* Squeeze top mode */
-#define SQUEEZE_BOTTOM 0X0800 /* Squeeze bottom mode */
-#define CLIP_LEFT 0X1000 /* Clip left mode */
-#define CLIP_RIGHT 0X2000 /* Clip right mode */
-#define CLIP_TOP 0X4000 /* Clip top mode */
-#define CLIP_BOTTOM 0X8000 /* Clip bottom mode */
-
-
-/***** MACRO DEFINITIONS *****/
-
-#define SQUEEZE_MULT(A,B) (((fix31)A * (fix31)B) / (1 << 16))
-
-#define NEXT_BYTE(A) (*(A)++)
-
-#define NEXT_WORD(A) \
- ((fix15)(sp_globals.key32 ^ ((A) += 2, \
- ((fix15)((A)[-1]) << 8) | (fix15)((A)[-2]) | \
- ((A)[-1] & 0x80? ~0xFFFF : 0))))
-
-#if INCL_EXT /* Extended fonts supported? */
-
-#define NEXT_BYTES(A, B) \
- (((B = (ufix16)(*(A)++) ^ sp_globals.key7) >= 248)? \
- ((ufix16)(B & 0x07) << 8) + ((*(A)++) ^ sp_globals.key8) + 248: \
- B)
-
-#else /* Compact fonts only supported? */
-
-#define NEXT_BYTES(A, B) ((*(A)++) ^ sp_globals.key7)
-
-#endif
-
-
-#define NEXT_BYTE_U(A) (*(A)++)
-
-#define NEXT_WORD_U(A, B) \
- (fix15)(B = (*(A)++) << 8, (fix15)(*(A)++) + B)
-
-#define NEXT_CHNDX(A, B) \
- ((B)? (ufix16)NEXT_WORD(A): (ufix16)NEXT_BYTE(A))
-
-/* Multiply (fix15)X by (fix15)Y to produce (fix31)product */
-#define MULT16(X, Y) \
- ((fix31)X * (fix31)Y)
-
-/* Multiply (fix15)X by (fix15)MULT, add (fix31)OFFSET,
- * shift right SHIFT bits to produce (fix15)result */
-#define TRANS(X, MULT, OFFSET, SHIFT) \
- ((fix15)((((fix31)X * (fix31)MULT) + OFFSET) / (1 << SHIFT)))
-
-/******************************************************************************
- *
- * the following block of definitions redefines every function
- * reference to be prefixed with an "sp_". In addition, if this
- * is a reentrant version, the parameter sp_globals will be added
- * as the first parameter.
- *
- *****************************************************************************/
-
-#define GDECL
-
-#define get_char_id(char_index) sp_get_char_id(char_index)
-#define get_char_width(char_index) sp_get_char_width(char_index)
-#define get_track_kern(track,point_size) sp_get_track_kern(track,point_size)
-#define get_pair_kern(char_index1,char_index2) sp_get_pair_kern(char_index1,char_index2)
-#define get_char_bbox(char_index,bbox) sp_get_char_bbox(char_index,bbox)
-#define make_char(char_index) sp_make_char(char_index)
-#if INCL_ISW
-#define compute_isw_scale() sp_compute_isw_scale()
-#define do_make_char(char_index) sp_do_make_char(char_index)
-#define make_char_isw(char_index,imported_width) sp_make_char_isw(char_index,imported_width)
-#define reset_xmax(xmax) sp_reset_xmax(xmax)
-#endif
-#if INCL_ISW || INCL_SQUEEZING
-#define preview_bounding_box(pointer,format) sp_preview_bounding_box(pointer,format)
-#endif
-#define make_simp_char(pointer,format) sp_make_simp_char(pointer,format)
-#define make_comp_char(pointer) sp_make_comp_char(pointer)
-#define get_char_org(char_index,top_level) sp_get_char_org(char_index,top_level)
-#define get_posn_arg(ppointer,format) sp_get_posn_arg(ppointer,format)
-#define get_scale_arg(ppointer,format) sp_get_scale_arg(ppointer,format)
-#define read_bbox(ppointer,pPmin,pPmax,set_flag) sp_read_bbox(ppointer,pPmin,pPmax,set_flag)
-#define proc_outl_data(pointer) sp_proc_outl_data(pointer)
-#define split_curve(P1,P2,P3,depth) sp_split_curve(P1,P2,P3,depth)
-#define get_args(ppointer,format,pP) sp_get_args(ppointer,format,pP)
-
-#define init_black(specsarg) sp_init_black(specsarg)
-#define begin_char_black(Psw,Pmin,Pmax) sp_begin_char_black(Psw,Pmin,Pmax)
-#define begin_contour_black(P1,outside) sp_begin_contour_black(P1,outside)
-#define line_black(P1) sp_line_black(P1)
-#define end_char_black() sp_end_char_black()
-#define add_intercept_black(y,x) sp_add_intercept_black(y,x)
-#define proc_intercepts_black() sp_proc_intercepts_black()
-
-#define init_screen(specsarg) sp_init_screen(specsarg)
-#define begin_char_screen(Psw,Pmin,Pmax) sp_begin_char_screen(Psw,Pmin,Pmax)
-#define begin_contour_screen(P1,outside) sp_begin_contour_screen(P1,outside)
-#define curve_screen(P1,P2,P3,depth) sp_curve_screen(P1,P2,P3,depth)
-#define scan_curve_screen(X0,Y0,X1,Y1,X2,Y2,X3,Y3) sp_scan_curve_screen(X0,Y0,X1,Y1,X2,Y2,X3,Y3)
-#define vert_line_screen(x,y1,y2) sp_vert_line_screen(x,y1,y2)
-#define line_screen(P1) sp_line_screen(P1)
-#define end_contour_screen() sp_end_contour_screen()
-#define end_char_screen() sp_end_char_screen()
-#define add_intercept_screen(y,x) sp_add_intercept_screen(y,x)
-#define proc_intercepts_screen() sp_proc_intercepts_screen()
-
-#define init_outline(specsarg) sp_init_outline(specsarg)
-#define begin_char_outline(Psw,Pmin,Pmax) sp_begin_char_outline(Psw,Pmin,Pmax)
-#define begin_sub_char_outline(Psw,Pmin,Pmax) sp_begin_sub_char_outline(Psw,Pmin,Pmax)
-#define begin_contour_outline(P1,outside) sp_begin_contour_outline(P1,outside)
-#define curve_outline(P1,P2,P3,depth) sp_curve_outline(P1,P2,P3,depth)
-#define line_outline(P1) sp_line_outline(P1)
-#define end_contour_outline() sp_end_contour_outline()
-#define end_sub_char_outline() sp_end_sub_char_outline()
-#define end_char_outline() sp_end_char_outline()
-
-#define init_2d(specsarg) sp_init_2d(specsarg)
-#define begin_char_2d(Psw, Pmin, Pmax) sp_begin_char_2d(Psw, Pmin, Pmax)
-#define begin_contour_2d(P1, outside) sp_begin_contour_2d(P1, outside)
-#define line_2d(P1) sp_line_2d(P1)
-#define end_char_2d() sp_end_char_2d()
-#define add_intercept_2d(y, x) sp_add_intercept_2d(y, x)
-#define proc_intercepts_2d() sp_proc_intercepts_2d()
-#define draw_vector_to_2d(x0, y0, x1, y1, band) sp_draw_vector_to_2d(x0, y0, x1, y1, band)
-
-#define init_char_out(Psw,Pmin,Pmax) sp_init_char_out(Psw,Pmin,Pmax)
-#define begin_sub_char_out(Psw,Pmin,Pmax) sp_begin_sub_char_out(Psw,Pmin,Pmax)
-#define curve_out(P1,P2,P3,depth) sp_curve_out(P1,P2,P3,depth)
-#define end_contour_out() sp_end_contour_out()
-#define end_sub_char_out() sp_end_sub_char_out()
-#define init_intercepts_out() sp_init_intercepts_out()
-#define restart_intercepts_out sp_restart_intercepts_out
-#define set_first_band_out(Pmin,Pmax) sp_set_first_band_out(Pmin,Pmax)
-#define reduce_band_size_out() sp_reduce_band_size_out()
-#define next_band_out() sp_next_band_out()
-
-#define init_userout(specsarg) sp_init_userout(specsarg)
-
-#define reset() sp_reset()
-#define set_key(key) sp_set_key(key)
-#define get_cust_no(font_buff) sp_get_cust_no(font_buff)
-#define set_specs(specsarg) sp_set_specs(specsarg)
-#define setup_consts(xmin,xmax,ymin,ymax) sp_setup_consts(xmin,xmax,ymin,ymax)
-#define setup_tcb(ptcb) sp_setup_tcb(ptcb)
-#define setup_mult(input_mult) sp_setup_mult(input_mult)
-#define setup_offset(input_offset) sp_setup_offset(input_offset)
-#define type_tcb(ptcb) sp_type_tcb(ptcb)
-#define read_long(pointer) sp_read_long(pointer)
-#define read_word_u(pointer) sp_read_word_u(pointer)
-#define init_tcb() sp_init_tcb()
-#define scale_tcb(ptcb,x_pos,y_pos,x_scale,y_scale) sp_scale_tcb(ptcb,x_pos,y_pos,x_scale,y_scale)
-#define plaid_tcb(ppointer,format) sp_plaid_tcb(ppointer,format)
-#define skip_orus(ppointer,short_form,no_ctrl_zones) sp_skip_orus(ppointer,short_form,no_ctrl_zones)
-#define skip_interpolation_table(ppointer,format) sp_skip_interpolation_table(ppointer,format)
-#define skip_control_zone(ppointer,format) sp_skip_control_zone(ppointer,format)
-#define constr_update() sp_constr_update()
-#define read_oru_table(ppointer) sp_read_oru_table(ppointer)
-#define calculate_x_pix(start_edge,end_edge,constr_nr,x_scale,x_offset,ppo,setwidth_pix) sp_calculate_x_pix(start_edge,end_edge,constr_nr,x_scale,x_offset,ppo,setwidth_pix)
-#define calculate_y_pix(start_edge,end_edge,constr_nr,top_scale,bottom_scale,ppo,emtop_pix,embot_pix) sp_calculate_y_pix(start_edge,end_edge,constr_nr,top_scale,bottom_scale,ppo,emtop_pix,embot_pix)
-#define calculate_x_scale(x_factor,x_offset,no_x_ctrl_zones) sp_calculate_x_scale(x_factor,x_offset,no_x_ctrl_zones)
-#define calculate_y_scale(top_scale,bottom_scale,first_y_zone,no_Y_ctrl_zones) sp_calculate_y_scale(top_scale,bottom_scale,first_y_zone,no_Y_ctrl_zones)
-#define setup_pix_table(ppointer,short_form,no_X_ctrl_zones,no_Y_ctrl_zones) sp_setup_pix_table(ppointer,short_form,no_X_ctrl_zones,no_Y_ctrl_zones)
-#define setup_int_table(ppointer,no_X_int_zones, no_Y_int_zones) sp_setup_int_table(ppointer,no_X_int_zones, no_Y_int_zones)
-
-#define fn_init_out(specsarg) (*sp_globals.init_out)(specsarg)
-#define fn_begin_char(Psw,Pmin,Pmax) (*sp_globals.begin_char)(Psw,Pmin,Pmax)
-#define fn_begin_sub_char(Psw,Pmin,Pmax) (*sp_globals.begin_sub_char)(Psw,Pmin,Pmax)
-#define fn_end_sub_char() (*sp_globals.end_sub_char)()
-#define fn_end_char() (*sp_globals.end_char)()
-#define fn_line(P1) (*sp_globals.line)(P1)
-#define fn_end_contour() (*sp_globals.end_contour)()
-#define fn_begin_contour(P0,fmt) (*sp_globals.begin_contour)(P0,fmt)
-#define fn_curve(P1,P2,P3,depth) (*sp_globals.curve)(P1,P2,P3,depth)
-
-#define load_char_data(offset, no_bytes, buff_off) sp_load_char_data(offset, no_bytes, buff_off)
-#define report_error(n) sp_report_error(n)
-
-#if INCL_MULTIDEV
-
-#define set_bitmap_device(bfuncs,size) sp_set_bitmap_device(bfuncs,size)
-#define set_outline_device(ofuncs,size) sp_set_outline_device(ofuncs,size)
-
-#define open_bitmap(x_set_width, y_set_width, xmin, xmax, ymin, ymax) (*sp_globals.bitmap_device.p_open_bitmap)(x_set_width, y_set_width, xmin, xmax, ymin, ymax)
-#define set_bitmap_bits(y, xbit1, xbit2) (*sp_globals.bitmap_device.p_set_bits)(y, xbit1, xbit2)
-#define close_bitmap() (*sp_globals.bitmap_device.p_close_bitmap)()
-
-#define open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax) (*sp_globals.outline_device.p_open_outline)(x_set_width, y_set_width, xmin, xmax, ymin, ymax)
-#define start_new_char() (*sp_globals.outline_device.p_start_char)()
-#define start_contour(x,y,outside) (*sp_globals.outline_device.p_start_contour)(x,y,outside)
-#define curve_to(x1,y1,x2,y2,x3,y3) (*sp_globals.outline_device.p_curve)(x1,y1,x2,y2,x3,y3)
-#define line_to(x,y) (*sp_globals.outline_device.p_line)(x,y)
-#define close_contour() (*sp_globals.outline_device.p_close_contour)()
-#define close_outline() (*sp_globals.outline_device.p_close_outline)()
-
-#else
-
-#define open_bitmap(x_set_width, y_set_width, xmin, xmax, ymin, ymax) sp_open_bitmap(x_set_width, y_set_width, xmin, xmax, ymin, ymax)
-#define set_bitmap_bits(y, xbit1, xbit2) sp_set_bitmap_bits(y, xbit1, xbit2)
-#define close_bitmap() sp_close_bitmap()
-
-#define open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax) sp_open_outline(x_set_width, y_set_width, xmin, xmax, ymin, ymax)
-#define start_new_char() sp_start_new_char()
-#define start_contour(x,y,outside) sp_start_contour(x,y,outside)
-#define curve_to(x1,y1,x2,y2,x3,y3) sp_curve_to(x1,y1,x2,y2,x3,y3)
-#define line_to(x,y) sp_line_to(x,y)
-#define close_contour() sp_close_contour()
-#define close_outline() sp_close_outline()
-
-#endif
diff --git a/libXfont/src/Speedo/speedo.h b/libXfont/src/Speedo/speedo.h
deleted file mode 100644
index a5ba3a06a..000000000
--- a/libXfont/src/Speedo/speedo.h
+++ /dev/null
@@ -1,874 +0,0 @@
-/* $Xorg: speedo.h,v 1.3 2000/08/17 19:46:27 cpqbld Exp $ */
-
-/*
-
-Copyright 1989-1991, Bitstream Inc., Cambridge, MA.
-You are hereby granted permission under all Bitstream propriety rights to
-use, copy, modify, sublicense, sell, and redistribute the Bitstream Speedo
-software and the Bitstream Charter outline font for any purpose and without
-restrictions; provided, that this notice is left intact on all copies of such
-software or font and that Bitstream's trademark is acknowledged as shown below
-on all unmodified copies of such font.
-
-BITSTREAM CHARTER is a registered trademark of Bitstream Inc.
-
-
-BITSTREAM INC. DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
-WITHOUT LIMITATION THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. BITSTREAM SHALL NOT BE LIABLE FOR ANY DIRECT OR INDIRECT
-DAMAGES, INCLUDING BUT NOT LIMITED TO LOST PROFITS, LOST DATA, OR ANY OTHER
-INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF OR IN ANY WAY CONNECTED
-WITH THE SPEEDO SOFTWARE OR THE BITSTREAM CHARTER OUTLINE FONT.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/speedo.h,v 3.5 2001/01/17 19:43:18 dawes Exp $ */
-
-#ifndef _SPEEDO_H_
-#define _SPEEDO_H_
-
-#include <X11/Xmd.h>
-
-/***************************** S P E E D O . H *******************************
- ****************************************************************************/
-
-/***** USER OPTIONS OVERRIDE DEFAULTS ******/
-#include "useropt.h"
-
-/***** CONFIGURATION DEFINITIONS *****/
-
-#ifndef INCL_CLIPPING
-#define INCL_CLIPPING 0 /* 0 indicates CLIPPING code is not compiled in*/
-#endif
-
-#ifndef INCL_SQUEEZING
-#define INCL_SQUEEZING 0 /* 0 indicates SQUEEZE code is not compiled in*/
-#endif
-
-#ifndef INCL_EXT
-#define INCL_EXT 1 /* 1 to include extended font support */
-#endif /* 0 to omit extended font support */
-
-#ifndef INCL_RULES
-#define INCL_RULES 1 /* 1 to include intelligent scaling support */
-#endif /* 0 to omit intelligent scaling support */
-
-#ifndef INCL_BLACK
-#define INCL_BLACK 1 /* 1 to include blackwriter output support */
-#endif /* 0 to omit output mode 0 support */
-
-#ifndef INCL_SCREEN
-#define INCL_SCREEN 0 /* 1 to include screen writeroutput support */
-#endif /* 0 to omit support */
-
-#ifndef INCL_OUTLINE
-#define INCL_OUTLINE 0 /* 1 to include outline output support */
-#endif /* 0 to omit output mode 2 support */
-
-#ifndef INCL_2D
-#define INCL_2D 0 /* 1 to include 2d blackwriter output support */
-#endif /* 0 to omit output mode 3 support */
-
-#ifndef INCL_USEROUT
-#define INCL_USEROUT 0 /* 1 to include user defined output module support */
-#endif /* 0 to omit user defined output module support */
-
-#ifndef INCL_LCD
-#define INCL_LCD 1 /* 1 to include load char data support*/
-#endif /* 0 to omit load char data support */
-#ifndef INCL_ISW
-#define INCL_ISW 0 /* 1 to include imported width support */
-#endif /* 0 to omit imported width support */
-
-#ifndef INCL_METRICS
-#define INCL_METRICS 1 /* 1 to include metrics support */
-#endif /* 0 to omit metrics support */
-
-#ifndef INCL_KEYS
-#define INCL_KEYS 0 /* 1 to include multi key support */
-#endif /* 0 to omit multi key support */
-
-#ifndef INCL_MULTIDEV
-#define INCL_MULTIDEV 0 /* 1 to include multiple output device support */
-#endif /* 0 to omit multi device support */
-
-#ifndef SHORT_LISTS
-#define SHORT_LISTS 1 /* 1 to allocate small intercept lists */
-#endif
-
-#ifndef INCL_PLAID_OUT
-#define INCL_PLAID_OUT 0 /* 1 to include plaid data monitoring */
-#endif /* 0 to omit plaid data monitoring */
-
-#ifndef FONTFAR /* if Intel mixed memory model implementation */
-#define FONTFAR /* pointer type modifier for font buffer */
-#endif
-
-#ifndef STACKFAR /* if Intel mixed memory model implementation */
-#define STACKFAR /* pointer type modifier for font buffer */
-#endif
-
-#ifndef GLOBALFAR
-#define GLOBALFAR
-#endif
-
-#define MODE_BLACK 0
-#define MODE_SCREEN MODE_BLACK + INCL_BLACK
-#define MODE_OUTLINE MODE_SCREEN + INCL_SCREEN
-#define MODE_2D MODE_OUTLINE + INCL_OUTLINE
-
-#ifdef DYNAMIC_ALLOC
-#if DYNAMIC_ALLOC
-#define STATIC_ALLOC 0
-#endif
-#endif
-
-#ifdef REENTRANT_ALLOC
-#if REENTRANT_ALLOC
-#define STATIC_ALLOC 0
-#endif
-#endif
-
-#ifndef STATIC_ALLOC
-#define STATIC_ALLOC 1
-#endif
-
-#ifndef DYNAMIC_ALLOC
-#define DYNAMIC_ALLOC 0
-#endif
-
-#ifndef REENTRANT_ALLOC
-#define REENTRANT_ALLOC 0
-#endif
-
-/***** TYPE DEFINITIONS *****/
-
-#ifndef STDEF
-#ifndef SPD_BMAP
-
-typedef INT8 fix7;
-
-typedef double real;
-
-typedef CARD8 ufix8;
-#ifndef VFONT
-typedef CARD8 boolean;
-#endif
-#endif
-
-typedef INT16 fix15;
-
-typedef CARD16 ufix16;
-
-typedef INT32 fix31;
-
-typedef CARD32 ufix32;
-#endif
-
-/***** GENERAL CONSTANTS *****/
-
-#ifndef FALSE
-#define FALSE 0
-#define TRUE 1
-#endif
-
-#ifndef NULL
-#include <stddef.h>
-#endif
-
-#define FUNCTION
-
-#define BIT0 0x01
-#define BIT1 0x02
-#define BIT2 0x04
-#define BIT3 0x08
-#define BIT4 0x10
-#define BIT5 0x20
-#define BIT6 0x40
-#define BIT7 0x80
-
-#if INCL_EXT /* Extended fonts supported? */
-
-#define MAX_CONSTR 750 /* Max constraints (incl 4 dummies) */
-#define MAX_CTRL_ZONES 256 /* Max number of controlled orus */
-#define MAX_INT_ZONES 256 /* Max number of interpolation zones */
-
-#else /* Compact fonts only supported */
-
-#define MAX_CONSTR 512 /* Max constraints (incl 4 dummies) */
-#define MAX_CTRL_ZONES 64 /* Max number of controlled orus */
-#define MAX_INT_ZONES 64 /* Max number of interpolation zones */
-
-#endif
-
-#define SCALE_SHIFT 12 /* Binary point positiion for scale values */
-#define SCALE_RND 2048 /* Rounding bit for scaling transformation */
-#define ONE_SCALE 4096 /* Unity scale value */
-
-#ifdef INCL_SCREEN /* constants used by Screenwriter module */
-#define LEFT_INT 1 /* left intercept */
-#define END_INT 2 /* last intercept */
-#define FRACTION 0xFC /* fractional portion of intercept type list */
-#endif
-
-#if INCL_SQUEEZING || INCL_CLIPPING /* constants used by SQUEEZEing code */
-#define EM_TOP 764
-#define EM_BOT -236
-#endif
-
-/***** STRUCTURE DEFINITIONS *****/
-#if REENTRANT_ALLOC
-#define PROTO_DECL1 struct speedo_global_data GLOBALFAR *sp_global_ptr
-#define PROTO_DECL2 PROTO_DECL1 ,
-#else
-#define PROTO_DECL1 void
-#define PROTO_DECL2
-#endif
-
-typedef
-struct buff_tag
- {
- ufix8 FONTFAR *org; /* Pointer to start of buffer */
- ufix32 no_bytes; /* Size of buffer in bytes */
- }
-buff_t; /* Buffer descriptor */
-
-typedef struct constr_tag
- {
- ufix8 FONTFAR *org; /* Pointer to first byte in constr data */
- ufix16 font_id; /* Font id for calculated data */
- fix15 xppo; /* X pixels per oru for calculated data */
- fix15 yppo; /* Y pixels per oru for calculated data */
- boolean font_id_valid; /* TRUE if font id valid */
- boolean data_valid; /* TRUE if calculated data valid */
- boolean active; /* TRUE if constraints enabled */
- }
-constr_t; /* Constraint data state */
-
-typedef struct kern_tag
- {
- ufix8 FONTFAR *tkorg; /* First byte of track kerning data */
- ufix8 FONTFAR *pkorg; /* First byte of pair kerning data */
- fix15 no_tracks; /* Number of kerning tracks */
- fix15 no_pairs; /* Number of kerning pairs */
- }
-kern_t; /* Kerning control block */
-
-typedef struct specs_tag
- {
- buff_t STACKFAR *pfont; /* Pointer to font data */
- fix31 xxmult; /* Coeff of X orus to compute X pix */
- fix31 xymult; /* Coeff of Y orus to compute X pix */
- fix31 xoffset; /* Constant to compute X pix */
- fix31 yxmult; /* Coeff of X orus to compute Y pix */
- fix31 yymult; /* Coeff of Y orus to compute Y pix */
- fix31 yoffset; /* Constant to compute Y pix */
- ufix32 flags; /* Mode flags: */
- /* Bit 0 - 2: Output module selector: */
- /* Bit 3: Send curves to output module*/
- /* Bit 4: Use linear scaling if set */
- /* Bit 5: Inhibit constraint table */
- /* Bit 6: Import set width if set */
- /* Bit 7: not used */
- /* Bit 8: Squeeze left if set */
- /* Bit 9: Squeeze right if set */
- /* Bit 10: Squeeze top if set */
- /* Bit 11: Squeeze bottom if set */
- /* Bit 12: Clip left if set */
- /* Bit 13: Clip right if set */
- /* Bit 14: Clip top if set */
- /* Bit 15: Clip bottom if set */
- /* Bits 16-31 not used */
- void *out_info; /* information for output module */
- }
-specs_t; /* Specs structure for fw_set_specs */
-
-typedef struct tcb_tag
- {
- fix15 xxmult; /* Linear coeff of Xorus to compute Xpix */
- fix15 xymult; /* Linear coeff of Yorus to compute Xpix */
- fix31 xoffset; /* Linear constant to compute Xpix */
- fix15 yxmult; /* Linear coeff of Xorus to compute Ypix */
- fix15 yymult; /* Linear coeff of Yorus to compute Ypix */
- fix31 yoffset; /* Linear constant to compute Ypix */
- fix15 xppo; /* Pixels per oru in X dimension of char */
- fix15 yppo; /* Pixels per oru in Y dimension of char */
- fix15 xpos; /* Origin in X dimension of character */
- fix15 ypos; /* Origin in Y dimension of character */
- ufix16 xtype; /* Transformation type for X oru coords */
- ufix16 ytype; /* Transformation type for Y oru coords */
- ufix16 xmode; /* Transformation mode for X oru coords */
- ufix16 ymode; /* Transformation mode for Y oru coords */
- fix15 mirror; /* Transformation creates mirror image */
- }
-tcb_t; /* Transformation control block */
-
-typedef struct point_tag
- {
- fix15 x; /* X coord of point (shifted pixels) */
- fix15 y; /* Y coord of point (shifted pixels) */
- }
-point_t; /* Point in device space */
-
-typedef struct band_tag
- {
- fix15 band_max;
- fix15 band_min;
- fix15 band_array_offset;
- fix15 band_floor;
- fix15 band_ceiling;
- } band_t;
-
-typedef struct bbox_tag
- {
- fix31 xmin;
- fix31 xmax;
- fix31 ymin;
- fix31 ymax;
- } bbox_t;
-
-#if SHORT_LISTS
-#define MAX_INTERCEPTS 256 /* Max storage for intercepts */
-typedef ufix8 cdr_t; /* 8 bit links in intercept chains */
-#else
-#define MAX_INTERCEPTS 1000 /* Max storage for intercepts */
-typedef ufix16 cdr_t; /* 16 bit links in intercept chains */
-#endif
-
-#if REENTRANT_ALLOC
-
-typedef struct intercepts_tag
- {
- fix15 car[MAX_INTERCEPTS];
- fix15 cdr[MAX_INTERCEPTS];
-#if INCL_SCREEN
- ufix8 inttype[MAX_INTERCEPTS];
- ufix8 leftedge;
- ufix16 fracpix;
-#endif
- } intercepts_t;
-
-typedef struct plaid_tag
- {
- fix15 orus[MAX_CTRL_ZONES]; /* Controlled coordinate table (orus) */
- fix15 pix[MAX_CTRL_ZONES]; /* Controlled coordinate table (sub-pixels) */
- fix15 mult[MAX_INT_ZONES]; /* Interpolation multiplier table */
- fix31 offset[MAX_INT_ZONES]; /* Interpolation offset table */
- } plaid_t;
-#endif
-
-#if INCL_MULTIDEV
-typedef struct bitmap_tag
- {
- void (*p_open_bitmap)(PROTO_DECL2 fix31 x_set_width, fix31 y_set_width, fix31 xorg, fix31 yorg, fix15 xsize,fix15 ysize);
- void (*p_set_bits)(PROTO_DECL2 fix15 y, fix15 xbit1, fix15 xbit2);
- void (*p_close_bitmap)(PROTO_DECL1);
- } bitmap_t;
-
-typedef struct outline_tag
- {
- void (*p_open_outline)(PROTO_DECL2 fix31 x_set_width, fix31 y_set_width, fix31 xmin, fix31 xmax, fix31 ymin,fix31 ymax);
- void (*p_start_char)(PROTO_DECL1);
- void (*p_start_contour)(PROTO_DECL2 fix31 x,fix31 y,boolean outside);
- void (*p_curve)(PROTO_DECL2 fix31 x1, fix31 y1, fix31 x2, fix31 y2, fix31 x3, fix31 y3);
- void (*p_line)(PROTO_DECL2 fix31 x, fix31 y);
- void (*p_close_contour)(PROTO_DECL1);
- void (*p_close_outline)(PROTO_DECL1);
- } outline_t;
-#endif
-
-/* ---------------------------------------------------*/
-/**** MAIN GLOBAL DATA STRUCTURE, SPEEDO_GLOBALS *****/
-
-typedef struct speedo_global_data
- {
-/* do_char.c data definitions */
-#if INCL_METRICS /* Metrics functions supported? */
- kern_t kern; /* Kerning control block */
-#endif /* endif incl_metrics */
- point_t Psw; /* End of escapement vector (1/65536 pixel units) */
-
-#if INCL_LCD /* Dynamic load character data supported? */
- fix15 cb_offset; /* Offset to sub-char data in char buffer */
-#endif /* endif incl_lcd */
-
-/* do_trns.c data definitions */
- point_t P0; /* Current point (sub-pixels) */
- fix15 x_orus; /* Current X argument (orus) */
- fix15 y_orus; /* Current Y argument (orus) */
- fix15 x_pix; /* Current X argument (sub-pixels) */
- fix15 y_pix; /* Current Y argument (sub-pixels) */
- ufix8 x_int; /* Current X interpolation zone */
- ufix8 y_int; /* Current Y interpolation zone */
-
-#if INCL_MULTIDEV && INCL_OUTLINE
- outline_t outline_device;
- boolean outline_device_set;
-#endif
-
-#if INCL_BLACK || INCL_SCREEN || INCL_2D
-#if INCL_MULTIDEV
- bitmap_t bitmap_device;
- boolean bitmap_device_set;
-#endif
- band_t y_band; /* Y current band(whole pixels) */
-
- struct set_width_tag
- {
- fix31 x;
- fix31 y;
- } set_width; /* Character escapement vector */
-
- boolean first_pass; /* TRUE during first pass thru outline data */
- boolean extents_running; /* T if extent accumulation for each vector */
- fix15 x0_spxl; /* X coord of current point (sub pixels) */
- fix15 y0_spxl; /* Y coord of current point (sub pixels) */
- fix15 y_pxl; /* Y coord of current point (whole pixels) */
-#if REENTRANT_ALLOC
- intercepts_t STACKFAR *intercepts;
-#else /* else if not reentrant */
- fix15 car[MAX_INTERCEPTS]; /* Data field of intercept storage */
- cdr_t cdr[MAX_INTERCEPTS]; /* Link field of intercept storage */
-#if INCL_SCREEN
- ufix8 inttype[MAX_INTERCEPTS];
- ufix8 leftedge;
- ufix16 fracpix;
-#endif /* endif incl_screen */
-#endif /* endif reentrant */
- fix15 bmap_xmin; /* Min X value (sub-pixel units) */
- fix15 bmap_xmax; /* Max X value (sub-pixel units) */
- fix15 bmap_ymin; /* Min Y value (sub-pixel units) */
- fix15 bmap_ymax; /* Max Y value (sub-pixel units) */
- fix15 no_y_lists; /* Number of active intercept lists */
- fix15 first_offset; /* Index of first active list cell */
- fix15 next_offset; /* Index of next free list cell */
- boolean intercept_oflo; /* TRUE if intercepts data lost */
-#endif /* endif incl_black, incl_screen, incl_2d */
-
-/* bounding box now used by all output modules, including outline */
- fix15 xmin; /* Min X value in whole character */
- fix15 xmax; /* Max X value in whole character */
- fix15 ymin; /* Min Y value in whole character */
- fix15 ymax; /* Max Y value in whole character */
-
-#if INCL_2D
- fix15 no_x_lists; /* Number of active x intercept lists */
- band_t x_band; /* X current band(whole pixels) */
- boolean x_scan_active; /* X scan flag during scan conversion */
-#endif
-
-/* reset.c data definitions */
- ufix16 key32; /* Decryption keys 3,2 combined */
- ufix8 key4; /* Decryption key 4 */
- ufix8 key6; /* Decryption key 6 */
- ufix8 key7; /* Decryption key 7 */
- ufix8 key8; /* Decryption key 8 */
-
-/* set_spcs.c data definitions */
- buff_t font;
- buff_t GLOBALFAR *pfont; /* Pointer to font buffer structure */
- fix31 font_buff_size; /* Number of bytes loaded in font buffer */
- ufix8 FONTFAR *pchar_dir; /* Pointer to character directory */
- fix15 first_char_idx; /* Index to first character in font */
- fix15 no_chars_avail; /* Total characters in font layout */
- fix15 orus_per_em; /* Outline resolution */
- fix15 metric_resolution; /* metric resolution for setwidths, kerning pairs
- (defaults to orus_per_em) */
- tcb_t tcb0; /* Top level transformation control block */
-
- boolean specs_valid; /* TRUE if fw_set_specs() successful */
-
- fix15 depth_adj; /* Curve splitting depth adjustment */
- boolean curves_out; /* Allow curves to output module */
- fix15 output_mode; /* Output module selector */
- fix15 thresh; /* Scan conversion threshold (sub-pixels) */
- boolean normal; /* TRUE if 0 obl and mult of 90 deg rot */
-
- fix15 multshift; /* Fixed point shift for multipliers */
- fix15 pixshift; /* Fixed point shift for sub-pixels */
- fix15 poshift; /* Left shift from pixel to output format */
- fix15 mpshift; /* Fixed point shift for mult to sub-pixels */
- fix31 multrnd; /* 0.5 in multiplier units */
- fix15 pixrnd; /* 0.5 in sub-pixel units */
- fix31 mprnd; /* 0.5 sub-pixels in multiplier units */
- fix15 pixfix; /* Mask to remove fractional pixels */
- fix15 onepix; /* 1.0 pixels in sub-pixel units */
-
- boolean (*init_out)(PROTO_DECL2 specs_t GLOBALFAR *specsarg);
- boolean (*begin_char)(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax);
- void (*begin_sub_char)(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax);
- void (*begin_contour)(PROTO_DECL2 point_t P1,boolean outside);
- void (*curve)(PROTO_DECL2 point_t P1, point_t P2, point_t P3, fix15 depth);
- void (*line)(PROTO_DECL2 point_t P1);
- void (*end_contour)(PROTO_DECL1);
- void (*end_sub_char)(PROTO_DECL1);
- boolean (*end_char)(PROTO_DECL1);
- specs_t GLOBALFAR *pspecs; /* Pointer to specifications bundle */
- specs_t specs; /* copy specs onto stack */
- ufix8 FONTFAR *font_org; /* Pointer to start of font data */
- ufix8 FONTFAR *hdr2_org; /* Pointer to start of private header data */
-
-/* set_trns.c data definitions */
- tcb_t tcb; /* Current transformation control block */
- ufix8 Y_edge_org; /* Index to first Y controlled coordinate */
- ufix8 Y_int_org; /* Index to first Y interpolation zone */
- fix31 rnd_xmin; /* rounded out value of xmin for int-char spac. fix */
-
-#if REENTRANT_ALLOC
- plaid_t STACKFAR *plaid;
-#else /* if not reentrant */
- fix15 orus[MAX_CTRL_ZONES]; /* Controlled coordinate table (orus) */
- fix15 pix[MAX_CTRL_ZONES]; /* Controlled coordinate table (sub-pixels) */
- fix15 mult[MAX_INT_ZONES]; /* Interpolation multiplier table */
- fix31 offset[MAX_INT_ZONES]; /* Interpolation offset table */
-#endif /* endif not reentrant */
-
- fix15 no_X_orus; /* Number of X controlled coordinates */
- fix15 no_Y_orus; /* Number of Y controlled coordinates */
- ufix16 Y_constr_org; /* Origin of constraint table in font data */
-
- constr_t constr; /* Constraint data state */
- boolean c_act[MAX_CONSTR]; /* TRUE if constraint currently active */
- fix15 c_pix[MAX_CONSTR]; /* Size of constrained zone if active */
-#if INCL_ISW
- boolean import_setwidth_act; /* boolean to indicate imported setwidth */
- boolean isw_modified_constants;
- ufix32 imported_width; /* value of imported setwidth */
- fix15 isw_xmax; /* maximum oru value for constants*/
-#endif
-#if INCL_SQUEEZING || INCL_ISW
- fix15 setwidth_orus; /* setwidth value in orus */
- /* bounding box in orus for squeezing */
- fix15 bbox_xmin_orus; /* X minimum in orus */
- fix15 bbox_xmax_orus; /* X maximum in orus */
- fix15 bbox_ymin_orus; /* Y minimum in orus */
- fix15 bbox_ymax_orus; /* Y maximum in orus */
-#endif
-#ifdef INCL_SQUEEZING
- boolean squeezing_compound; /* flag to indicate a compound character*/
-#endif
-#ifdef INCL_CLIPPING
- fix31 clip_xmax;
- fix31 clip_ymax;
- fix31 clip_xmin;
- fix31 clip_ymin;
-#endif
- } SPEEDO_GLOBALS;
-
-/***********************************************************************************
- *
- * Speedo global data structure allocation
- *
- ***********************************************************************************/
-
-#ifdef SET_SPCS
-#define EXTERN
-#else
-#define EXTERN extern
-#endif
-#if STATIC_ALLOC
-EXTERN SPEEDO_GLOBALS GLOBALFAR sp_globals;
-#define sp_intercepts sp_globals
-#define sp_plaid sp_globals
-#else
-#if DYNAMIC_ALLOC
-EXTERN SPEEDO_GLOBALS GLOBALFAR *sp_global_ptr;
-#define sp_globals (*sp_global_ptr)
-#define sp_intercepts (*sp_global_ptr)
-#define sp_plaid (*sp_global_ptr)
-#else
-#if REENTRANT_ALLOC
-#define sp_globals (*sp_global_ptr)
-#define sp_intercepts (*(*sp_global_ptr).intercepts)
-#define sp_plaid (*(*sp_global_ptr).plaid)
-#endif
-#endif
-#endif
-#ifdef EXTERN
-#undef EXTERN
-#endif
-
-
-/***** PUBLIC FONT HEADER OFFSET CONSTANTS *****/
-#define FH_FMVER 0 /* U D4.0 CR LF NULL NULL 8 bytes */
-#define FH_FNTSZ 8 /* U Font size (bytes) 4 bytes */
-#define FH_FBFSZ 12 /* U Min font buffer size (bytes) 4 bytes */
-#define FH_CBFSZ 16 /* U Min char buffer size (bytes) 2 bytes */
-#define FH_HEDSZ 18 /* U Header size (bytes) 2 bytes */
-#define FH_FNTID 20 /* U Source Font ID 2 bytes */
-#define FH_SFVNR 22 /* U Source Font Version Number 2 bytes */
-#define FH_FNTNM 24 /* U Source Font Name 70 bytes */
-#define FH_MDATE 94 /* U Manufacturing Date 10 bytes */
-#define FH_LAYNM 104 /* U Layout Name 70 bytes */
-#define FH_CPYRT 174 /* U Copyright Notice 78 bytes */
-#define FH_NCHRL 252 /* U Number of Chars in Layout 2 bytes */
-#define FH_NCHRF 254 /* U Total Number of Chars in Font 2 bytes */
-#define FH_FCHRF 256 /* U Index of first char in Font 2 bytes */
-#define FH_NKTKS 258 /* U Number of kerning tracks in font 2 bytes */
-#define FH_NKPRS 260 /* U Number of kerning pairs in font 2 bytes */
-#define FH_FLAGS 262 /* U Font flags 1 byte: */
- /* Bit 0: Extended font */
- /* Bit 1: not used */
- /* Bit 2: not used */
- /* Bit 3: not used */
- /* Bit 4: not used */
- /* Bit 5: not used */
- /* Bit 6: not used */
- /* Bit 7: not used */
-#define FH_CLFGS 263 /* U Classification flags 1 byte: */
- /* Bit 0: Italic */
- /* Bit 1: Monospace */
- /* Bit 2: Serif */
- /* Bit 3: Display */
- /* Bit 4: not used */
- /* Bit 5: not used */
- /* Bit 6: not used */
- /* Bit 7: not used */
-#define FH_FAMCL 264 /* U Family Classification 1 byte: */
- /* 0: Don't care */
- /* 1: Serif */
- /* 2: Sans serif */
- /* 3: Monospace */
- /* 4: Script or calligraphic */
- /* 5: Decorative */
- /* 6-255: not used */
-#define FH_FRMCL 265 /* U Font form Classification 1 byte: */
- /* Bits 0-3 (width type): */
- /* 0-3: not used */
- /* 4: Condensed */
- /* 5: not used */
- /* 6: Semi-condensed */
- /* 7: not used */
- /* 8: Normal */
- /* 9: not used */
- /* 10: Semi-expanded */
- /* 11: not used */
- /* 12: Expanded */
- /* 13-15: not used */
- /* Bits 4-7 (Weight): */
- /* 0: not used */
- /* 1: Thin */
- /* 2: Ultralight */
- /* 3: Extralight */
- /* 4: Light */
- /* 5: Book */
- /* 6: Normal */
- /* 7: Medium */
- /* 8: Semibold */
- /* 9: Demibold */
- /* 10: Bold */
- /* 11: Extrabold */
- /* 12: Ultrabold */
- /* 13: Heavy */
- /* 14: Black */
- /* 15-16: not used */
-#define FH_SFNTN 266 /* U Short Font Name 32 bytes */
-#define FH_SFACN 298 /* U Short Face Name 16 bytes */
-#define FH_FNTFM 314 /* U Font form 14 bytes */
-#define FH_ITANG 328 /* U Italic angle 2 bytes (1/256th deg) */
-#define FH_ORUPM 330 /* U Number of ORUs per em 2 bytes */
-#define FH_WDWTH 332 /* U Width of Wordspace 2 bytes */
-#define FH_EMWTH 334 /* U Width of Emspace 2 bytes */
-#define FH_ENWTH 336 /* U Width of Enspace 2 bytes */
-#define FH_TNWTH 338 /* U Width of Thinspace 2 bytes */
-#define FH_FGWTH 340 /* U Width of Figspace 2 bytes */
-#define FH_FXMIN 342 /* U Font-wide min X value 2 bytes */
-#define FH_FYMIN 344 /* U Font-wide min Y value 2 bytes */
-#define FH_FXMAX 346 /* U Font-wide max X value 2 bytes */
-#define FH_FYMAX 348 /* U Font-wide max Y value 2 bytes */
-#define FH_ULPOS 350 /* U Underline position 2 bytes */
-#define FH_ULTHK 352 /* U Underline thickness 2 bytes */
-#define FH_SMCTR 354 /* U Small caps transformation 6 bytes */
-#define FH_DPSTR 360 /* U Display sups transformation 6 bytes */
-#define FH_FNSTR 366 /* U Footnote sups transformation 6 bytes */
-#define FH_ALSTR 372 /* U Alpha sups transformation 6 bytes */
-#define FH_CMITR 378 /* U Chemical infs transformation 6 bytes */
-#define FH_SNMTR 384 /* U Small nums transformation 6 bytes */
-#define FH_SDNTR 390 /* U Small denoms transformation 6 bytes */
-#define FH_MNMTR 396 /* U Medium nums transformation 6 bytes */
-#define FH_MDNTR 402 /* U Medium denoms transformation 6 bytes */
-#define FH_LNMTR 408 /* U Large nums transformation 6 bytes */
-#define FH_LDNTR 414 /* U Large denoms transformation 6 bytes */
- /* Transformation data format: */
- /* Y position 2 bytes */
- /* X scale 2 bytes (1/4096ths) */
- /* Y scale 2 bytes (1/4096ths) */
-#define SIZE_FW FH_LDNTR + 6 /* size of nominal font header */
-#define EXP_FH_METRES SIZE_FW /* offset to expansion field metric resolution (optional) */
-
-
-
-/***** MODE FLAGS CONSTANTS *****/
-#define CURVES_OUT 0X0008 /* Output module accepts curves */
-#define BOGUS_MODE 0X0010 /* Linear scaling mode */
-#define CONSTR_OFF 0X0020 /* Inhibit constraint table */
-#define IMPORT_WIDTHS 0X0040 /* Imported width mode */
-#define SQUEEZE_LEFT 0X0100 /* Squeeze left mode */
-#define SQUEEZE_RIGHT 0X0200 /* Squeeze right mode */
-#define SQUEEZE_TOP 0X0400 /* Squeeze top mode */
-#define SQUEEZE_BOTTOM 0X0800 /* Squeeze bottom mode */
-#define CLIP_LEFT 0X1000 /* Clip left mode */
-#define CLIP_RIGHT 0X2000 /* Clip right mode */
-#define CLIP_TOP 0X4000 /* Clip top mode */
-#define CLIP_BOTTOM 0X8000 /* Clip bottom mode */
-
-/***********************************************************************************
- *
- * Speedo function declarations - use prototypes if available
- *
- ***********************************************************************************/
-
-/* do_char.c functions */
-boolean sp_make_char(PROTO_DECL2 ufix16 char_index);
-#if INCL_ISW
-fix31 sp_compute_isw_scale(PROTO_DECL2);
-static boolean sp_do_make_char(PROTO_DECL2 ufix16 char_index);
-boolean sp_make_char_isw(PROTO_DECL2 ufix16 char_index, ufix32 imported_width);
-static boolean sp_reset_xmax(PROTO_DECL2 fix31 xmax);
-#endif
-#if INCL_ISW || INCL_SQUEEZING
-static void sp_preview_bounding_box(PROTO_DECL2 ufix8 FONTFAR *pointer,ufix8 format);
-#endif
-
-#if INCL_METRICS /* Metrics functions supported? */
-fix31 sp_get_char_width(PROTO_DECL2 ufix16 char_index);
-boolean sp_get_char_bbox(PROTO_DECL2 ufix16 char_index, bbox_t *bbox);
-#endif
-
-/* do_trns.c functions */
-ufix8 FONTFAR *sp_read_bbox(PROTO_DECL2 ufix8 FONTFAR *pointer,point_t STACKFAR *pPmin,point_t STACKFAR *pPmax,boolean set_flag);
-void sp_proc_outl_data(PROTO_DECL2 ufix8 FONTFAR *pointer);
-
-/* out_blk.c functions */
-#if INCL_BLACK
-boolean sp_init_black(PROTO_DECL2 specs_t GLOBALFAR *specsarg);
-boolean sp_begin_char_black(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax);
-void sp_begin_contour_black(PROTO_DECL2 point_t P1,boolean outside);
-void sp_line_black(PROTO_DECL2 point_t P1);
-boolean sp_end_char_black(PROTO_DECL1);
-#endif
-
-/* out_scrn.c functions */
-#if INCL_SCREEN
-boolean sp_init_screen(PROTO_DECL2 specs_t GLOBALFAR *specsarg);
-boolean sp_begin_char_screen(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax);
-void sp_begin_contour_screen(PROTO_DECL2 point_t P1,boolean outside);
-void sp_curve_screen(PROTO_DECL2 point_t P1,point_t P2,point_t P3, fix15 depth);
-void sp_line_screen(PROTO_DECL2 point_t P1);
-void sp_end_contour_screen(PROTO_DECL1);
-boolean sp_end_char_screen(PROTO_DECL1);
-#endif
-
-/* out_outl.c functions */
-#if INCL_OUTLINE
-#if INCL_MULTIDEV
-boolean sp_set_outline_device(PROTO_DECL2 outline_t *ofuncs, ufix16 size);
-#endif
-
-
-boolean sp_init_outline(PROTO_DECL2 specs_t GLOBALFAR *specsarg);
-boolean sp_begin_char_outline(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax);
-void sp_begin_sub_char_outline(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax);
-void sp_begin_contour_outline(PROTO_DECL2 point_t P1,boolean outside);
-void sp_curve_outline(PROTO_DECL2 point_t P1,point_t P2,point_t P3, fix15 depth);
-void sp_line_outline(PROTO_DECL2 point_t P1);
-void sp_end_contour_outline(PROTO_DECL1);
-void sp_end_sub_char_outline(PROTO_DECL1);
-boolean sp_end_char_outline(PROTO_DECL1);
-#endif
-
-/* out_bl2d.c functions */
-#if INCL_2D
-boolean sp_init_2d(PROTO_DECL2 specs_t GLOBALFAR *specsarg);
-boolean sp_begin_char_2d(PROTO_DECL2 point_t Psw,point_t Pmin,point_t Pmax);
-void sp_begin_contour_2d(PROTO_DECL2 point_t P1,boolean outside);
-void sp_line_2d(PROTO_DECL2 point_t P1);
-boolean sp_end_char_2d(PROTO_DECL1);
-#endif
-
-/* out_util.c functions */
-#if INCL_BLACK || INCL_SCREEN || INCL_2D
-
-#if INCL_MULTIDEV
-boolean sp_set_bitmap_device(PROTO_DECL2 bitmap_t *bfuncs, ufix16 size);
-#endif
-
-void sp_init_char_out(PROTO_DECL2 point_t Psw, point_t Pmin, point_t Pmax);
-void sp_begin_sub_char_out(PROTO_DECL2 point_t Psw, point_t Pmin, point_t Pmax);
-void sp_curve_out(PROTO_DECL2 point_t P1, point_t P2, point_t P3, fix15 depth);
-void sp_end_contour_out(PROTO_DECL1);
-void sp_end_sub_char_out(PROTO_DECL1);
-void sp_init_intercepts_out(PROTO_DECL1);
-void sp_reduce_band_size_out(PROTO_DECL1);
-boolean sp_next_band_out(PROTO_DECL1);
-#endif
-
-#if INCL_USEROUT
-boolean sp_init_userout(specs_t *specsarg);
-#endif
-
-
-/* reset.c functions */
-void sp_reset(PROTO_DECL1);
-#if INCL_KEYS
-void sp_set_key(PROTO_DECL2 ufix8 key[]);
-#endif
-ufix16 sp_get_cust_no(PROTO_DECL2 buff_t font_buff);
-
-/* set_spcs.c functions */
-boolean sp_set_specs(PROTO_DECL2 specs_t STACKFAR *specsarg);
-void sp_type_tcb(PROTO_DECL2 tcb_t GLOBALFAR *ptcb);
-
-fix31 sp_read_long(PROTO_DECL2 ufix8 FONTFAR *pointer);
-fix15 sp_read_word_u(PROTO_DECL2 ufix8 FONTFAR *pointer);
-
-/* set_trns.c functions */
-void sp_init_tcb(PROTO_DECL1);
-void sp_scale_tcb(PROTO_DECL2 tcb_t GLOBALFAR *ptcb,fix15 x_pos,fix15 y_pos,fix15 x_scale,fix15 y_scale);
-ufix8 FONTFAR *sp_plaid_tcb(PROTO_DECL2 ufix8 FONTFAR *pointer,ufix8 format);
-
-#if INCL_SQUEEZING || INCL_ISW
-static void sp_calculate_x_pix(PROTO_DECL2 ufix8 start_edge,ufix8 end_edge,ufix16 constr_nr,fix31 x_scale,fix31 x_offset,fix31 ppo,fix15 setwidth_pix);
-#endif
-#if INCL_SQUEEZING
-static void sp_calculate_y_pix(PROTO_DECL2 ufix8 start_edge,ufix8 end_edge,ufix16 constr_nr,fix31 top_scale,fix31 bottom_scale,fix31 ppo,fix15 emtop_pix,fix15 embot_pix);
-boolean sp_calculate_x_scale(PROTO_DECL2 fix31 *x_factor,fix31 *x_offset,fix15 no_x_ctrl_zones);
-boolean sp_calculate_y_scale(PROTO_DECL2 fix31 *top_scale,fix31 *bottom_scale,fix15 first_y_zone, fix15 no_Y_ctrl_zones);
-#endif
-
-
-/* user defined functions */
-
-void sp_report_error(PROTO_DECL2 fix15 n);
-
-#if INCL_BLACK || INCL_SCREEN || INCL_2D
-void sp_open_bitmap(PROTO_DECL2 fix31 x_set_width, fix31 y_set_width, fix31 xorg, fix31 yorg, fix15 xsize,fix15 ysize);
-void sp_set_bitmap_bits(PROTO_DECL2 fix15 y, fix15 xbit1, fix15 xbit2);
-void sp_close_bitmap(PROTO_DECL1);
-#endif
-
-#if INCL_OUTLINE
-void sp_open_outline(PROTO_DECL2 fix31 x_set_width, fix31 y_set_width, fix31 xmin, fix31 xmax, fix31 ymin,fix31 ymax);
-void sp_start_new_char(PROTO_DECL1);
-void sp_start_contour(PROTO_DECL2 fix31 x,fix31 y,boolean outside);
-void sp_curve_to(PROTO_DECL2 fix31 x1, fix31 y1, fix31 x2, fix31 y2, fix31 x3, fix31 y3);
-void sp_line_to(PROTO_DECL2 fix31 x, fix31 y);
-void sp_close_contour(PROTO_DECL1);
-void sp_close_outline(PROTO_DECL1);
-#endif
-
-#if INCL_LCD /* Dynamic load character data supported? */
-buff_t *sp_load_char_data(PROTO_DECL2 fix31 file_offset,fix15 no_bytes,fix15 cb_offset); /* Load character data from font file */
-#endif
-
-#if INCL_PLAID_OUT /* Plaid data monitoring included? */
-void sp_record_xint(PROTO_DECL2 fix15 int_num); /* Record xint data */
-void sp_record_yint(PROTO_DECL2 fix15 int_num); /* Record yint data */
-void sp_begin_plaid_data(PROTO_DECL1); /* Signal start of plaid data */
-void sp_begin_ctrl_zones(PROTO_DECL2 fix15, no_X_zones, fix15 no_Y_zones); /* Signal start of control zones */
-void sp_record_ctrl_zone(PROTO_DECL2 fix31 start, fix31 end, fix15 constr); /* Record control zone data */
-void sp_begin_int_zones(PROTO_DECL2 fix15 no_X_int_zones, fix15 no_Y_int_zones); /* Signal start of interpolation zones */
-void sp_record_int_zone(PROTO_DECL2 fix31 start, fix31 end); /* Record interpolation zone data */
-void sp_end_plaid_data(PROTO_DECL1); /* Signal end of plaid data */
-#endif
-
-#endif /* _SPEEDO_H_ */
diff --git a/libXfont/src/Speedo/spencode.c b/libXfont/src/Speedo/spencode.c
deleted file mode 100644
index 96a13504a..000000000
--- a/libXfont/src/Speedo/spencode.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $Xorg: spencode.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices or Digital
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
- */
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/spencode.c,v 1.6 2001/01/17 19:43:18 dawes Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spint.h"
-
-/* No longer needed with new encoding code */
-/* #include "bics-iso.h"
-
-int sp_bics_map_size = (sizeof(sp_bics_map) / (sizeof(int) * 2));*/
-
-#ifdef EXTRAFONTS
-#include "adobe-iso.h"
-
-int adobe_map_size = (sizeof(adobe_map) / (sizeof(int) * 2));
-
-#endif /* EXTRAFONTS */
diff --git a/libXfont/src/Speedo/sperr.c b/libXfont/src/Speedo/sperr.c
deleted file mode 100644
index 36ce51125..000000000
--- a/libXfont/src/Speedo/sperr.c
+++ /dev/null
@@ -1,127 +0,0 @@
-/* $Xorg: sperr.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of M.I.T., Network Computing Devices,
- * or Digital not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. Network Computing Devices, or Digital
- * make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NETWORK COMPUTING DEVICES, DIGITAL AND MIT DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES, DIGITAL OR MIT 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.
- *
- */
-
-/*
-
-Copyright 1994, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/sperr.c,v 1.6 2001/12/14 19:56:41 dawes Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "spint.h"
-
-#ifndef FONTMODULE
-#include <stdarg.h>
-#endif
-
-extern void ErrorF(const char* f, ...);
-
-void
-SpeedoErr(char *str, ...)
-{
- va_list v;
- int a1;
-
- va_start(v, str);
- ErrorF("Speedo: ");
- a1 = va_arg(v, int);
- ErrorF(str, a1);
- va_end(v);
-}
-
-/*
- * Called by Speedo character generator to report an error.
- *
- * Since character data not available is one of those errors
- * that happens many times, don't report it to user
- */
-void
-sp_report_error(fix15 n)
-{
- switch (n) {
- case 1:
- SpeedoErr("Insufficient font data loaded\n");
- break;
- case 3:
- SpeedoErr("Transformation matrix out of range\n");
- break;
- case 4:
- SpeedoErr("Font format error\n");
- break;
- case 5:
- SpeedoErr("Requested specs not compatible with output module\n");
- break;
- case 7:
- SpeedoErr("Intelligent transformation requested but not supported\n");
- break;
- case 8:
- SpeedoErr("Unsupported output mode requested\n");
- break;
- case 9:
- SpeedoErr("Extended font loaded but only compact fonts supported\n");
- break;
- case 10:
- SpeedoErr("Font specs not set prior to use of font\n");
- break;
- case 12:
- break;
- case 13:
- SpeedoErr("Track kerning data not available()\n");
- break;
- case 14:
- SpeedoErr("Pair kerning data not available()\n");
- break;
- default:
- SpeedoErr("report_error(%d)\n", n);
- break;
- }
-}
diff --git a/libXfont/src/Speedo/spfile.c b/libXfont/src/Speedo/spfile.c
deleted file mode 100644
index c58c0e471..000000000
--- a/libXfont/src/Speedo/spfile.c
+++ /dev/null
@@ -1,460 +0,0 @@
-/* $Xorg: spfile.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices or Digital
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL
- * 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.
- *
- * Author: Dave Lemke, Network Computing Devices Inc
- */
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/spfile.c,v 1.13 2001/08/13 21:46:47 dawes Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/fontenc.h>
-#ifndef FONTMODULE
-#include <stdio.h>
-#else
-#include "xf86_ansic.h"
-#endif
-
-#include "spint.h"
-#include "bics-unicode.h"
-
-SpeedoFontPtr sp_fp_cur = (SpeedoFontPtr) 0;
-
-#ifdef EXTRAFONTS
-#include "ncdkeys.h"
-#endif
-
-#include "keys.h"
-
-#ifdef EXTRAFONTS
-static ufix8 skey[] =
-{
- SKEY0,
- SKEY1,
- SKEY2,
- SKEY3,
- SKEY4,
- SKEY5,
- SKEY6,
- SKEY7,
- SKEY8
-}; /* Sample Font decryption key */
-
-static ufix8 rkey[] =
-{
- RKEY0,
- RKEY1,
- RKEY2,
- RKEY3,
- RKEY4,
- RKEY5,
- RKEY6,
- RKEY7,
- RKEY8
-}; /* Retail Font decryption key */
-
-#endif /* EXTRAFONTS */
-
-#ifdef XSAMPLEFONTS
-static ufix8 xkey[] =
-{
- XKEY0,
- XKEY1,
- XKEY2,
- XKEY3,
- XKEY4,
- XKEY5,
- XKEY6,
- XKEY7,
- XKEY8
-}; /* Sample Font decryption key */
-#endif
-
-static ufix8 mkey[] =
-{
- KEY0,
- KEY1,
- KEY2,
- KEY3,
- KEY4,
- KEY5,
- KEY6,
- KEY7,
- KEY8
-}; /* Font decryption key */
-
-
-static fix15
-read_2b(ufix8 *ptr)
-{
- fix15 tmp;
-
- tmp = *ptr++;
- tmp = (tmp << 8) + *ptr;
- return tmp;
-}
-
-static fix31
-read_4b(ufix8 *ptr)
-{
- fix31 tmp;
-
- tmp = *ptr++;
- tmp = (tmp << 8) + *ptr++;
- tmp = (tmp << 8) + *ptr++;
- tmp = (tmp << 8) + *ptr;
- return tmp;
-}
-
-/*
- * loads the specified char's data
- */
-buff_t *
-sp_load_char_data(fix31 file_offset, fix15 num, fix15 cb_offset)
-{
- SpeedoMasterFontPtr master = sp_fp_cur->master;
-
- if (fseek(master->fp, (long) file_offset, (int) 0)) {
- SpeedoErr("can't seek to char\n");
- }
- if ((num + cb_offset) > master->mincharsize) {
- SpeedoErr("char buf overflow\n");
- }
- if (fread((master->c_buffer + cb_offset), sizeof(ufix8), num,
- master->fp) != num) {
- SpeedoErr("can't get char data\n");
- }
- master->char_data.org = (ufix8 *) master->c_buffer + cb_offset;
- master->char_data.no_bytes = num;
-
- return &master->char_data;
-}
-
-struct speedo_encoding {
- char *name;
- int *enc;
- int enc_size;
-};
-
-/* Takes care of caching encodings already referenced */
-static int
-find_encoding(const char *fontname, const char *filename,
- int **enc, int *enc_size)
-{
- static struct speedo_encoding *known_encodings=0;
- static int number_known_encodings=0;
- static int known_encodings_size=0;
-
- char *encoding_name;
- int iso8859_1;
- FontMapPtr mapping;
- int i, j, k, size;
- struct speedo_encoding *temp;
- int *new_enc;
- char *new_name;
-
- iso8859_1 = 0;
-
- encoding_name = FontEncFromXLFD(fontname, strlen(fontname));
- if(!encoding_name) {
- encoding_name="iso8859-1";
- iso8859_1=1;
- }
- /* We don't go through the font library if asked for Latin-1 */
- iso8859_1 = iso8859_1 || !strcmp(encoding_name, "iso8859-1");
-
- for(i=0; i<number_known_encodings; i++) {
- if(!strcmp(encoding_name, known_encodings[i].name)) {
- *enc=known_encodings[i].enc;
- *enc_size=known_encodings[i].enc_size;
- return Successful;
- }
- }
-
- /* it hasn't been cached yet, need to compute it */
-
- /* ensure we've got enough storage first */
-
- if(known_encodings==0) {
- if((known_encodings=
- (struct speedo_encoding*)xalloc(2*sizeof(struct speedo_encoding)))
- ==0)
- return AllocError;
- number_known_encodings=0;
- known_encodings_size=2;
- }
-
- if(number_known_encodings >= known_encodings_size) {
- if((temp=
- (struct speedo_encoding*)xrealloc(known_encodings,
- 2*sizeof(struct speedo_encoding)*
- known_encodings_size))==0)
- return AllocError;
- known_encodings=temp;
- known_encodings_size*=2;
- }
-
- mapping=0;
- if(!iso8859_1) {
- mapping = FontEncMapFind(encoding_name,
- FONT_ENCODING_UNICODE, -1, -1,
- filename);
- }
-#define SPEEDO_RECODE(c) \
- (mapping? \
- unicode_to_bics(FontEncRecode(c, mapping)): \
- unicode_to_bics(c))
-
- if((new_name = (char*)xalloc(strlen(encoding_name)))==0)
- return AllocError;
- strcpy(new_name, encoding_name);
-
- /* For now, we limit ourselves to 256 glyphs */
- size=0;
- for(i=0; i < (mapping?mapping->encoding->size:256) && i < 256; i++)
- if(SPEEDO_RECODE(i)>=0)
- size++;
- new_enc = (int*)xalloc(2*size*sizeof(int));
- if(!new_enc) {
- xfree(new_name);
- return AllocError;
- }
- for(i=j=0; i < (mapping?mapping->encoding->size:256) && i < 256; i++)
- if((k = SPEEDO_RECODE(i))>=0) {
- new_enc[2*j] = i;
- new_enc[2*j+1] = k;
- j++;
- }
- known_encodings[number_known_encodings].name = new_name;
- known_encodings[number_known_encodings].enc = new_enc;
- known_encodings[number_known_encodings].enc_size = size;
- number_known_encodings++;
-
- *enc = new_enc;
- *enc_size = size;
- return Successful;
-#undef SPEEDO_RECODE
-}
-
-int
-sp_open_master(const char *fontname, const char *filename,
- SpeedoMasterFontPtr *master)
-{
- SpeedoMasterFontPtr spmf;
- ufix8 tmp[16];
- ufix16 cust_no;
- FILE *fp;
- ufix32 minbufsize;
- ufix16 mincharsize;
- ufix8 *f_buffer;
- ufix8 *c_buffer;
- int ret;
- ufix8 *key;
-
- spmf = (SpeedoMasterFontPtr) xalloc(sizeof(SpeedoMasterFontRec));
- if (!spmf)
- return AllocError;
- bzero(spmf, sizeof(SpeedoMasterFontRec));
- spmf->entry = NULL;
- spmf->f_buffer = NULL;
- spmf->c_buffer = NULL;
-
- /* open font */
- spmf->fname = (char *) xalloc(strlen(filename) + 1);
- if (!spmf->fname)
- return AllocError;
- fp = fopen(filename, "r");
- if (!fp) {
- ret = BadFontName;
- goto cleanup;
- }
- strcpy(spmf->fname, filename);
- spmf->fp = fp;
- spmf->state |= MasterFileOpen;
-
- if (fread(tmp, sizeof(ufix8), 16, fp) != 16) {
- ret = BadFontName;
- goto cleanup;
- }
- minbufsize = (ufix32) read_4b(tmp + FH_FBFSZ);
- f_buffer = (ufix8 *) xalloc(minbufsize);
- if (!f_buffer) {
- ret = AllocError;
- goto cleanup;
- }
- spmf->f_buffer = f_buffer;
-
- fseek(fp, (ufix32) 0, 0);
-
- /* read in the font */
- if (fread(f_buffer, sizeof(ufix8), (ufix16) minbufsize, fp) != minbufsize) {
- ret = BadFontName;
- goto cleanup;
- }
- spmf->copyright = (char *) (f_buffer + FH_CPYRT);
- spmf->mincharsize = mincharsize = read_2b(f_buffer + FH_CBFSZ);
-
- c_buffer = (ufix8 *) xalloc(mincharsize);
- if (!c_buffer) {
- ret = AllocError;
- goto cleanup;
- }
- spmf->c_buffer = c_buffer;
-
- spmf->font.org = spmf->f_buffer;
- spmf->font.no_bytes = minbufsize;
-
- cust_no = sp_get_cust_no(spmf->font);
-
- /* XXX add custom encryption stuff here */
-
-#ifdef EXTRAFONTS
- if (cust_no == SCUS0) {
- key = skey;
- } else if (cust_no == RCUS0) {
- key = rkey;
- } else
-#endif
-
-#ifdef XSAMPLEFONTS
- if (cust_no == XCUS0) {
- key = xkey;
- } else
-#endif
-
- if (cust_no == CUS0) {
- key = mkey;
- } else {
- SpeedoErr("Non - standard encryption for \"%s\"\n", filename);
- ret = BadFontName;
- goto cleanup;
- }
- spmf->key = key;
- sp_set_key(key);
-
- spmf->first_char_id = read_2b(f_buffer + FH_FCHRF);
- spmf->num_chars = read_2b(f_buffer + FH_NCHRL);
-
-
- spmf->enc = 0;
- spmf->enc_size = 0;
-
-#ifdef EXTRAFONTS
- { /* choose the proper encoding */
- char *f;
-
- f = strrchr(filename, '/');
- if (f) {
- f++;
- if (strncmp(f, "bx113", 5) == 0) {
- spmf->enc = adobe_map;
- spmf->enc_size = adobe_map_size;
- }
- }
- }
-#endif
-
- if(!spmf->enc)
- if((ret=find_encoding(fontname, filename, &spmf->enc, &spmf->enc_size))
- !=Successful)
- goto cleanup;
-
- spmf->first_char_id = spmf->enc[0];
- /* size of extents array */
- spmf->max_id = spmf->enc[(spmf->enc_size - 1) * 2];
- spmf->num_chars = spmf->enc_size;
-
- *master = spmf;
-
- return Successful;
-
-cleanup:
- *master = (SpeedoMasterFontPtr) 0;
- sp_close_master_font(spmf);
- return ret;
-}
-
-void
-sp_close_master_font(SpeedoMasterFontPtr spmf)
-{
- if (!spmf)
- return;
- if (spmf->state & MasterFileOpen)
- fclose(spmf->fp);
- if (spmf->entry)
- spmf->entry->u.scalable.extra->private = NULL;
- xfree(spmf->fname);
- xfree(spmf->f_buffer);
- xfree(spmf->c_buffer);
- xfree(spmf);
-}
-
-void
-sp_close_master_file(SpeedoMasterFontPtr spmf)
-{
- (void) fclose(spmf->fp);
- spmf->state &= ~MasterFileOpen;
-}
-
-
-/*
- * reset the encryption key, and make sure the file is opened
- */
-void
-sp_reset_master(SpeedoMasterFontPtr spmf)
-{
- sp_set_key(spmf->key);
- if (!(spmf->state & MasterFileOpen)) {
- spmf->fp = fopen(spmf->fname, "r");
- /* XXX -- what to do if we can't open the file? */
- spmf->state |= MasterFileOpen;
- }
- fseek(spmf->fp, 0, 0);
-}
diff --git a/libXfont/src/Speedo/spfont.c b/libXfont/src/Speedo/spfont.c
deleted file mode 100644
index c209d5a51..000000000
--- a/libXfont/src/Speedo/spfont.c
+++ /dev/null
@@ -1,453 +0,0 @@
-/* $Xorg: spfont.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices or Digital
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
- *
- * Author: Dave Lemke, Network Computing Devices Inc
- */
-/* $XFree86: xc/lib/font/Speedo/spfont.c,v 3.12tsi Exp $ */
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-/*
- * Speedo font loading
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/fonts/FSproto.h>
-#include "spint.h"
-#include <X11/fonts/fontutil.h>
-#ifndef FONTMODULE
-#ifdef _XOPEN_SOURCE
-#include <math.h>
-#else
-#define _XOPEN_SOURCE /* to get prototype for hypot on some systems */
-#include <math.h>
-#undef _XOPEN_SOURCE
-#endif
-#else
-#include "servermd.h"
-#include "xf86_ansic.h"
-#endif
-
-#ifndef M_PI
-#define M_PI 3.14159
-#endif /* M_PI */
-#ifndef DEFAULT_BIT_ORDER
-
-#ifdef BITMAP_BIT_ORDER
-#define DEFAULT_BIT_ORDER BITMAP_BIT_ORDER
-#else
-#define DEFAULT_BIT_ORDER UNKNOWN_BIT_ORDER
-#endif
-
-#endif
-
-static void SpeedoCloseFont(FontPtr pfont);
-
-static int
-sp_get_glyphs(
- FontPtr pFont,
- unsigned long count,
- register unsigned char *chars,
- FontEncoding charEncoding,
- unsigned long *glyphCount, /* RETURN */
- CharInfoPtr *glyphs) /* RETURN */
-{
- SpeedoFontPtr spf;
- unsigned int firstCol;
- register unsigned int numCols;
- unsigned int firstRow;
- unsigned int numRows;
- CharInfoPtr *glyphsBase;
- register unsigned int c;
- register CharInfoPtr pci;
- unsigned int r;
- CharInfoPtr encoding;
- CharInfoPtr pDefault;
-#ifdef notyet
- int itemSize;
-#endif
- int err = Successful;
-
- spf = (SpeedoFontPtr) pFont->fontPrivate;
- encoding = spf->encoding;
- pDefault = spf->pDefault;
- firstCol = pFont->info.firstCol;
- numCols = pFont->info.lastCol - firstCol + 1;
- glyphsBase = glyphs;
-
-
- /* XXX - this should be much smarter */
- /* make sure the glyphs are there */
-#ifdef notyet
- if (charEncoding == Linear8Bit || charEncoding == TwoD8Bit)
- itemSize = 1;
- else
- itemSize = 2;
-
- if (!fsd->complete)
- err = fs_load_glyphs(NULL, pFont, count, itemSize, chars);
-#endif
-
- if (err != Successful)
- return err;
-
- switch (charEncoding) {
-
- case Linear8Bit:
- case TwoD8Bit:
- if (pFont->info.firstRow > 0)
- break;
- if (pFont->info.allExist && pDefault) {
- while (count--) {
- c = (*chars++) - firstCol;
- if (c < numCols)
- *glyphs++ = &encoding[c];
- else
- *glyphs++ = pDefault;
- }
- } else {
- while (count--) {
- c = (*chars++) - firstCol;
- if (c < numCols && (pci = &encoding[c])->bits)
- *glyphs++ = pci;
- else if (pDefault)
- *glyphs++ = pDefault;
- }
- }
- break;
- case Linear16Bit:
- if (pFont->info.allExist && pDefault) {
- while (count--) {
- c = *chars++ << 8;
- c = (c | *chars++) - firstCol;
- if (c < numCols)
- *glyphs++ = &encoding[c];
- else
- *glyphs++ = pDefault;
- }
- } else {
- while (count--) {
- c = *chars++ << 8;
- c = (c | *chars++) - firstCol;
- if (c < numCols && (pci = &encoding[c])->bits)
- *glyphs++ = pci;
- else if (pDefault)
- *glyphs++ = pDefault;
- }
- }
- break;
-
- case TwoD16Bit:
- firstRow = pFont->info.firstRow;
- numRows = pFont->info.lastRow - firstRow + 1;
- while (count--) {
- r = (*chars++) - firstRow;
- c = (*chars++) - firstCol;
- if (r < numRows && c < numCols &&
- (pci = &encoding[r * numCols + c])->bits)
- *glyphs++ = pci;
- else if (pDefault)
- *glyphs++ = pDefault;
- }
- break;
- }
- *glyphCount = glyphs - glyphsBase;
- return Successful;
-}
-
-static CharInfoRec nonExistantChar;
-
-static int
-sp_get_metrics(
- FontPtr pFont,
- unsigned long count,
- register unsigned char *chars,
- FontEncoding charEncoding,
- unsigned long *glyphCount, /* RETURN */
- xCharInfo **glyphs) /* RETURN */
-{
- int ret;
- SpeedoFontPtr spf;
- CharInfoPtr oldDefault;
-
- spf = (SpeedoFontPtr) pFont->fontPrivate;
- oldDefault = spf->pDefault;
- spf->pDefault = &nonExistantChar;
- ret = sp_get_glyphs(pFont, count, chars, charEncoding,
- glyphCount, (CharInfoPtr *) glyphs);
-
- spf->pDefault = oldDefault;
- return ret;
-}
-
-int
-sp_open_font(
- char *fontname,
- char *filename,
- FontEntryPtr entry,
- FontScalablePtr vals,
- fsBitmapFormat format,
- fsBitmapFormatMask fmask,
- Mask flags,
- SpeedoFontPtr *spfont)
-{
- SpeedoFontPtr spf;
- SpeedoMasterFontPtr spmf;
- int ret;
- specs_t specs;
- int xx8, xy8, yx8, yy8;
-
- /* find a master (create it if necessary) */
- spmf = (SpeedoMasterFontPtr) entry->u.scalable.extra->private;
- if (!spmf)
- {
- ret = sp_open_master(fontname, filename, &spmf);
- if (ret != Successful)
- return ret;
- entry->u.scalable.extra->private = (pointer) spmf;
- spmf->entry = entry;
- }
-
- spf = (SpeedoFontPtr) xalloc(sizeof(SpeedoFontRec));
- if (!spf)
- return AllocError;
- bzero((char *) spf, sizeof(SpeedoFontRec));
-
- *spfont = spf;
-
- /* clobber everything -- this may be leaking, but other wise evil
- * stuff is left behind -- succesive transformed fonts get mangled */
- bzero((char *)&sp_globals, sizeof(sp_globals));
-
- spf->master = spmf;
- spf->entry = entry;
- spmf->refcount++;
- sp_reset_master(spmf);
- /* now we've done enough that if we bail out we must call sp_close_font */
-
- spf->vals = *vals;
-
- /* set up specs */
-
- specs.pfont = &spmf->font;
-
- specs.xxmult = (int)(vals->pixel_matrix[0] * (double)(1L << 16));
- specs.xymult = (int)(vals->pixel_matrix[2] * (double)(1L << 16));
- specs.yxmult = (int)(vals->pixel_matrix[1] * (double)(1L << 16));
- specs.yymult = (int)(vals->pixel_matrix[3] * (double)(1L << 16));
-
- specs.xoffset = 0L << 16; /* XXX tweak? */
- specs.yoffset = 0L << 16; /* XXX tweak? */
-
- specs.flags = MODE_SCREEN;
- specs.out_info = NULL;
-
- /* When Speedo tries to generate a very small font bitmap, it
- often crashes or goes into an infinite loop.
- Don't know why this is so, but until we can fix it properly,
- return BadFontName for anything smaller than 4 pixels.
- */
-#define TINY_FACTOR (16 << 16)
- xx8 = specs.xxmult >> 8;
- xy8 = specs.xymult >> 8;
- yx8 = specs.yxmult >> 8;
- yy8 = specs.yymult >> 8;
- if (xx8 * xx8 + xy8 * xy8 < TINY_FACTOR ||
- yx8 * yx8 + yy8 * yy8 < TINY_FACTOR)
- {
- sp_close_font(spf);
- return BadFontName;
- }
-
- /* clobber global state to avoid wrecking future transformed fonts */
- bzero ((char *) &sp_globals, sizeof(sp_globals));
-
- if (!sp_set_specs(&specs))
- {
- sp_close_font(spf);
- return BadFontName;
- }
-
- spf->specs = specs;
- spf->master = spmf;
-
- *spfont = spf;
- return Successful;
-}
-
-static int
-sp_load_font(
- char *fontname,
- char *filename,
- FontEntryPtr entry,
- FontScalablePtr vals,
- fsBitmapFormat format,
- fsBitmapFormatMask fmask,
- FontPtr pfont,
- Mask flags)
-{
- SpeedoFontPtr spf;
- SpeedoMasterFontPtr spmf;
- int esize;
- int ret;
- long sWidth;
-
- ret = sp_open_font(fontname, filename, entry, vals, format, fmask,
- flags, &spf);
-
- if (ret != Successful)
- return ret;
-
- spmf = spf->master;
- sp_reset_master(spmf);
- esize = sizeof(CharInfoRec) * (spmf->max_id - spmf->first_char_id + 1);
-
- spf->encoding = (CharInfoPtr) xalloc(esize);
- if (!spf->encoding) {
- sp_close_font(spf);
- return AllocError;
- }
- bzero((char *) spf->encoding, esize);
-
- sp_fp_cur = spf;
-
- sp_make_header(spf, &pfont->info);
-
- sp_compute_bounds(spf, &pfont->info, SaveMetrics, &sWidth);
-
- sp_compute_props(spf, fontname, &pfont->info, sWidth);
-
- pfont->fontPrivate = (pointer) spf;
-
-/* XXX */
- flags |= FontLoadBitmaps;
-
- if (flags & FontLoadBitmaps) {
- sp_fp_cur = spf;
- ret = sp_build_all_bitmaps(pfont, format, fmask);
- }
- if (ret != Successful)
- return ret;
-
- /* compute remaining accelerators */
- FontComputeInfoAccelerators(&pfont->info);
-
- pfont->format = format;
-
- pfont->get_metrics = sp_get_metrics;
- pfont->get_glyphs = sp_get_glyphs;
- pfont->unload_font = SpeedoCloseFont;
- pfont->unload_glyphs = NULL;
- pfont->refcnt = 0;
-
- /* have to hold on to master for min/max id */
- sp_close_master_file(spmf);
-
- return ret;
-}
-
-int
-SpeedoFontLoad(
- FontPtr *ppfont,
- char *fontname,
- char *filename,
- FontEntryPtr entry,
- FontScalablePtr vals,
- fsBitmapFormat format,
- fsBitmapFormatMask fmask,
- Mask flags)
-{
- FontPtr pfont;
- int ret;
-
- /* Reject ridiculously small sizes that will blow up the math */
- if (hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]) < 1.0 ||
- hypot(vals->pixel_matrix[2], vals->pixel_matrix[3]) < 1.0)
- return BadFontName;
-
- if (!(pfont = CreateFontRec()))
- return AllocError;
-
- ret = sp_load_font(fontname, filename, entry, vals, format, fmask,
- pfont, flags);
-
- if (ret == Successful)
- *ppfont = pfont;
- else
- DestroyFontRec (pfont);
-
- return ret;
-}
-
-void
-sp_close_font(SpeedoFontPtr spf)
-{
- SpeedoMasterFontPtr spmf;
-
- spmf = spf->master;
- --spmf->refcount;
- if (spmf->refcount == 0)
- sp_close_master_font (spmf);
- xfree(spf->encoding);
- xfree(spf->bitmaps);
- xfree(spf);
-}
-
-static void
-SpeedoCloseFont(FontPtr pfont)
-{
- SpeedoFontPtr spf;
-
- spf = (SpeedoFontPtr) pfont->fontPrivate;
- sp_close_font(spf);
- xfree(pfont->info.isStringProp);
- xfree(pfont->info.props);
- DestroyFontRec(pfont);
-
-}
diff --git a/libXfont/src/Speedo/spfuncs.c b/libXfont/src/Speedo/spfuncs.c
deleted file mode 100644
index da4d5c55e..000000000
--- a/libXfont/src/Speedo/spfuncs.c
+++ /dev/null
@@ -1,167 +0,0 @@
-/* $Xorg: spfuncs.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices or Digital
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
- *
- * Author: Dave Lemke, Network Computing Devices, Inc
- */
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/spfuncs.c,v 1.7 2001/08/27 19:49:51 dawes Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifndef FONTMODULE
-#include <X11/Xos.h>
-#endif
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/fontutil.h>
-#include "spint.h"
-
-/* ARGSUSED */
-static int
-SpeedoOpenScalable (
- FontPathElementPtr fpe,
- FontPtr *pFont,
- int flags,
- FontEntryPtr entry,
- char *fileName,
- FontScalablePtr vals,
- fsBitmapFormat format,
- fsBitmapFormatMask fmask,
- FontPtr non_cachable_font) /* We don't do licensing */
-{
- char fullName[MAXFONTNAMELEN];
-
- strcpy (fullName, entry->name.name);
- return SpeedoFontLoad (pFont, fullName, fileName, entry, vals,
- format, fmask, flags);
-}
-
-/*
- * XXX
- *
- * this does a lot more then i'd like, but it has to get the bitmaps
- * in order to get accurate metrics (which it *must* have).
- *
- * a possible optimization is to avoid allocating the glyph memory
- * and to simply save the values without doing the work.
- */
-static int
-get_font_info(
- FontInfoPtr pinfo,
- char *fontname,
- char *filename,
- FontEntryPtr entry,
- FontScalablePtr vals,
- SpeedoFontPtr *spfont)
-{
- SpeedoFontPtr spf;
- int err;
- long sWidth;
-
- err = sp_open_font(fontname, filename, entry, vals,
- (fsBitmapFormat) 0, (fsBitmapFormatMask) 0, (unsigned long) 0,
- &spf);
-
- if (err != Successful)
- return err;
-
- sp_fp_cur = spf;
- sp_reset_master(spf->master);
-
- sp_make_header(spf, pinfo);
-
- sp_compute_bounds(spf, pinfo, (unsigned long) 0, &sWidth);
-
- sp_compute_props(spf, fontname, pinfo, sWidth);
-
- /* compute remaining accelerators */
- FontComputeInfoAccelerators (pinfo);
-
- *spfont = spf;
-
- return Successful;
-}
-
-/* ARGSUSED */
-static int
-SpeedoGetInfoScaleable(
- FontPathElementPtr fpe,
- FontInfoPtr pFontInfo,
- FontEntryPtr entry,
- FontNamePtr fontName,
- char *fileName,
- FontScalablePtr vals)
-{
- SpeedoFontPtr spf = NULL;
- char fullName[MAXFONTNAMELEN];
- int err;
-
- strcpy(fullName, entry->name.name);
- FontParseXLFDName(fullName, vals, FONT_XLFD_REPLACE_VALUE);
-
- err = get_font_info(pFontInfo, fullName, fileName, entry, vals, &spf);
-
- if (spf)
- sp_close_font(spf);
-
- return err;
-}
-
-static FontRendererRec renderer = {
- ".spd", 4, NULL, SpeedoOpenScalable,
- NULL, SpeedoGetInfoScaleable, 0
- , CAP_MATRIX | CAP_CHARSUBSETTING
-};
-
-void
-SpeedoRegisterFontFileFunctions()
-{
- sp_make_standard_props();
- sp_reset();
- FontFileRegisterRenderer(&renderer);
-}
diff --git a/libXfont/src/Speedo/spglyph.c b/libXfont/src/Speedo/spglyph.c
deleted file mode 100644
index 113f37882..000000000
--- a/libXfont/src/Speedo/spglyph.c
+++ /dev/null
@@ -1,399 +0,0 @@
-/* $Xorg: spglyph.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices or Digital
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
- *
- * Author: Dave Lemke, Network Computing Devices Inc
- */
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/spglyph.c,v 1.6 2001/01/17 19:43:20 dawes Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/X.h> /* for bit order #defines */
-#include "spint.h"
-#include <X11/fonts/fontutil.h>
-
-#undef CLIP_BBOX_NOISE
-
-static CurrentFontValuesRec current_font_values;
-static CurrentFontValuesPtr cfv = &current_font_values;
-static int bit_order,
- byte_order,
- scan;
-
-static unsigned long
-sp_compute_data_size(
- FontPtr pfont,
- int mappad,
- int scanlinepad,
- unsigned long start,
- unsigned long end)
-{
- unsigned long ch;
- unsigned long size = 0;
- int bpr;
- SpeedoFontPtr spf = (SpeedoFontPtr) pfont->fontPrivate;
- FontInfoPtr pinfo = &pfont->info;
- int firstChar;
-
- firstChar = spf->master->first_char_id;
-
- /* allocate the space */
- switch (mappad) {
- int charsize;
- CharInfoPtr ci;
- xCharInfo *cim;
-
- case BitmapFormatImageRectMin:
- cfv->bpr = 0;
- for (ch = start; ch <= end; ch++) {
- ci = &spf->encoding[ch - firstChar];
- if (!ci)
- ci = spf->pDefault;
- cim = &ci->metrics;
- charsize = GLYPH_SIZE(ci, scanlinepad);
- charsize *= cim->ascent + cim->descent;
- size += charsize;
- }
- break;
- case BitmapFormatImageRectMaxWidth:
- bpr = GLWIDTHBYTESPADDED(FONT_MAX_WIDTH(pinfo), scanlinepad);
- cfv->bpr = bpr;
- for (ch = start; ch <= end; ch++) {
- ci = &spf->encoding[ch - firstChar];
- if (!ci)
- ci = spf->pDefault;
- cim = &ci->metrics;
- charsize = bpr * (cim->ascent + cim->descent);
- size += charsize;
- }
- break;
- case BitmapFormatImageRectMax:
- bpr = GLWIDTHBYTESPADDED(FONT_MAX_WIDTH(pinfo), scanlinepad);
- cfv->bpr = bpr;
- size = (end - start + 1) * bpr * FONT_MAX_HEIGHT(pinfo);
- break;
- default:
- assert(0);
- }
-
- return size;
-}
-
-static void
-finish_line(SpeedoFontPtr spf)
-{
- int bpr = cfv->bpr;
- CharInfoPtr ci = &spf->encoding[cfv->char_id - spf->master->first_char_id];
-
- if (bpr == 0) {
- bpr = GLYPH_SIZE(ci, cfv->scanpad);
- }
- if (bpr) { /* char may not have any metrics... */
- cfv->bp = (char *)cfv->bp + bpr;
- }
- assert(cfv->bp - sp_fp_cur->bitmaps <= sp_fp_cur->bitmap_size);
-}
-
-
-void
-sp_set_bitmap_bits(fix15 y, fix15 xbit1, fix15 xbit2)
-{
- int nmiddle;
- CARD8 startmask,
- endmask;
- CARD8 *dst;
-
- if (xbit1 > cfv->bit_width) {
-
-#ifdef CLIP_BBOX_NOISE
- SpeedoErr("Run wider than bitmap width -- truncated\n");
-#endif
-
- xbit1 = cfv->bit_width;
- }
- if (xbit2 > cfv->bit_width) {
-
-#ifdef CLIP_BBOX_NOISE
- SpeedoErr("Run wider than bitmap width -- truncated\n");
-#endif
-
- xbit2 = cfv->bit_width;
- }
-
- if (xbit2 < xbit1) {
- xbit2 = xbit1;
- }
-
- while (cfv->cur_y != y) {
- finish_line(sp_fp_cur);
- cfv->cur_y++;
- }
-
- cfv->last_y = y;
- if (y >= cfv->bit_height) {
-
-#ifdef CLIP_BBOX_NOISE
- SpeedoErr("Y larger than bitmap height -- truncated\n");
-#endif
-
- cfv->trunc = 1;
- return;
- }
- if (xbit1 < 0) /* XXX this is more than a little bit rude... */
- xbit1 = 0;
-
- nmiddle = (xbit1 >> 3);
- dst = (CARD8 *)cfv->bp + nmiddle;
- xbit2 -= (xbit1 & ~7);
- nmiddle = (xbit2 >> 3);
- xbit1 &= 7;
- xbit2 &= 7;
- if (bit_order == MSBFirst) {
- startmask = ((CARD8) ~0) >> xbit1;
- endmask = ~(((CARD8) ~0) >> xbit2);
- } else {
- startmask = ((CARD8) ~0) << xbit1;
- endmask = ~(((CARD8) ~0) << xbit2);
- }
- if (nmiddle == 0)
- *dst |= endmask & startmask;
- else {
- *dst++ |= startmask;
- while (--nmiddle)
- *dst++ = (CARD8)~0;
- *dst |= endmask;
- }
-}
-
-/* ARGSUSED */
-void
-sp_open_bitmap(fix31 x_set_width, fix31 y_set_width, fix31 xorg, fix31 yorg,
- fix15 xsize, fix15 ysize)
-{
- CharInfoPtr ci = &sp_fp_cur->encoding[cfv->char_id - sp_fp_cur->master->first_char_id];
-
-/*-
- * this is set to provide better quality bitmaps. since the Speedo
- * sp_get_bbox() function returns an approximate (but guarenteed to contain)
- * set of metrics, some of the bitmaps can be place poorly inside and
- * look bad.
- *
- * with this set, the actual bitmap values are used instead of the bboxes.
- * it makes things look better, but causes two possible problems:
- *
- * 1 - the reported min & max bounds may not correspond to the extents
- * reported
- * 2 - if the extents are reported before the character is generated,
- * a client could see them change. this currently never happens,
- * but will when a desired enhancement (don't reneder till needed)
- * is made.
- */
-
-#define BBOX_FIXUP 1
-
-#ifdef BBOX_FIXUP
- int off_horz;
- int off_vert;
-
- if (xorg < 0)
- off_horz = (fix15) ((xorg - 32768L) / 65536);
- else
- off_horz = (fix15) ((xorg + 32768L) / 65536);
- if (yorg < 0)
- off_vert = (fix15) ((yorg - 32768L) / 65536);
- else
- off_vert = (fix15) ((yorg + 32768L) / 65536);
- if (xsize != 0 || ysize != 0 || ci->metrics.characterWidth)
- {
- ci->metrics.leftSideBearing = off_horz;
- ci->metrics.descent = -off_vert;
- ci->metrics.rightSideBearing = xsize + off_horz;
- ci->metrics.ascent = ysize + off_vert;
- }
- else
- {
- /* If setting the proper size would cause the character to appear to
- be non-existent, fudge things by giving it a pixel to occupy. */
- xsize = ysize = 1;
- ci->metrics.leftSideBearing = ci->metrics.descent = 0;
- ci->metrics.rightSideBearing = ci->metrics.ascent = 1;
- }
-
- cfv->bit_width = xsize;
- cfv->bit_height = ysize;
-#else
- cfv->bit_width = ci->metrics.rightSideBearing -
- ci->metrics.leftSideBearing;
- cfv->bit_height = ci->metrics.ascent + ci->metrics.descent;
-#endif
-
- assert(cfv->bp - sp_fp_cur->bitmaps <= sp_fp_cur->bitmap_size);
- ci->bits = (char *) cfv->bp;
-
- cfv->cur_y = 0;
-}
-
-void
-sp_close_bitmap()
-{
- CharInfoPtr ci = &sp_fp_cur->encoding[cfv->char_id - sp_fp_cur->master->first_char_id];
- int bpr = cfv->bpr;
-
- if (bpr == 0)
- bpr = GLYPH_SIZE(ci, cfv->scanpad);
- if (!cfv->trunc)
- finish_line(sp_fp_cur);
- cfv->trunc = 0;
- cfv->last_y++;
- while (cfv->last_y < cfv->bit_height) {
- finish_line(sp_fp_cur);
- cfv->last_y++;
- }
- if (byte_order != bit_order) {
- switch (scan) {
- case 1:
- break;
- case 2:
- TwoByteSwap(cfv->bp, bpr * cfv->bit_height);
- break;
- case 4:
- FourByteSwap(cfv->bp, bpr * cfv->bit_height);
- break;
- }
- }
-}
-
-int
-sp_build_all_bitmaps(
- FontPtr pfont,
- fsBitmapFormat format,
- fsBitmapFormatMask fmask)
-{
- int ret,
- glyph = 1,
- image = BitmapFormatImageRectMin;
- unsigned long glyph_size;
- SpeedoFontPtr spf = (SpeedoFontPtr) pfont->fontPrivate;
- SpeedoMasterFontPtr spmf = spf->master;
- pointer bitmaps;
- int start,
- end,
- i;
-
- scan = 1;
- ret = CheckFSFormat(format, fmask,
- &bit_order, &byte_order, &scan, &glyph, &image);
-
- pfont->bit = bit_order;
- pfont->byte = byte_order;
- pfont->glyph = glyph;
- pfont->scan = scan;
- if (ret != Successful)
- return BadFontFormat;
-
- start = spmf->first_char_id;
- end = spmf->max_id;
- glyph_size = sp_compute_data_size(pfont, image, glyph, start, end);
-
- /* XXX -- MONDO KLUDGE -- add some slop */
- /*
- * not sure why this is wanted, but it keeps the packer from going off the
- * end and toasting us down the line
- */
- glyph_size += 20;
-
-#ifdef DEBUG
- spf->bitmap_size = glyph_size;
-#endif
-
- bitmaps = (pointer) xalloc(glyph_size);
- if (!bitmaps)
- return AllocError;
- bzero((char *) bitmaps, glyph_size);
-
- /* set up some state */
- sp_fp_cur = spf;
- spf->bitmaps = bitmaps;
- cfv->format = format;
- cfv->scanpad = glyph;
- cfv->bp = bitmaps;
-
- for (i = 0; i < spmf->num_chars; i++) {
- int j;
- cfv->char_index = spmf->enc[i * 2 + 1];
- cfv->char_id = spmf->enc[i * 2];
-#ifdef DEBUG
-fprintf(stderr, "build_all_sp_bitmaps:i = %d, Char ID = %d\n", i, cfv->char_id);
-#endif
- if (!cfv->char_id)
- continue;
-
- /*
- * See if this character is in the list of ranges specified in the
- * XLFD name
- */
- for (j = 0; j < spf->vals.nranges; j++)
- if (cfv->char_id >= mincharno(spf->vals.ranges[j]) &&
- cfv->char_id <= maxcharno(spf->vals.ranges[j]))
- break;
-
- /* If not, don't realize it. */
- if (spf->vals.nranges && j == spf->vals.nranges)
- continue;
-
- if (!sp_make_char(cfv->char_index)) {
-
-#ifdef DEBUG /* can be very common with some encodings */
- SpeedoErr("Can't make char %d\n", cfv->char_index);
-#endif
- }
- }
-
- return Successful;
-}
diff --git a/libXfont/src/Speedo/spinfo.c b/libXfont/src/Speedo/spinfo.c
deleted file mode 100644
index d7a1edd98..000000000
--- a/libXfont/src/Speedo/spinfo.c
+++ /dev/null
@@ -1,462 +0,0 @@
-/* $Xorg: spinfo.c,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices or Digital
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
- *
- * Author: Dave Lemke, Network Computing Devices, Inc
- */
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/spinfo.c,v 1.12 2001/12/14 19:56:42 dawes Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/fontutil.h>
-#include "spint.h"
-#ifndef FONTMODULE
-#include <math.h>
-#else
-#include "xf86_ansic.h"
-#endif
-
-/* percentage of pointsize used to specify ascent & descent */
-#define STRETCH_FACTOR 120
-
-enum scaleType {
- atom, truncate_atom, pixel_size, point_size, resolution_x,
- resolution_y, average_width
-};
-
-typedef struct _fontProp {
- char *name;
- long atom;
- enum scaleType type;
-} fontProp;
-
-static fontProp fontNamePropTable[] = {
- { "FOUNDRY", 0, atom },
- { "FAMILY_NAME", 0, atom },
- { "WEIGHT_NAME", 0, atom },
- { "SLANT", 0, atom },
- { "SETWIDTH_NAME", 0, atom },
- { "ADD_STYLE_NAME", 0, atom },
- { "PIXEL_SIZE", 0, pixel_size },
- { "POINT_SIZE", 0, point_size },
- { "RESOLUTION_X", 0, resolution_x },
- { "RESOLUTION_Y", 0, resolution_y },
- { "SPACING", 0, atom },
- { "AVERAGE_WIDTH", 0, average_width },
- { "CHARSET_REGISTRY", 0, atom },
- { "CHARSET_ENCODING", 0, truncate_atom }
-};
-
-/* Warning: following array is closely related to the sequence of
- defines after it. */
-
-static fontProp extraProps[] = {
- { "FONT", 0, },
- { "COPYRIGHT", 0, },
- { "RAW_PIXEL_SIZE", 0, },
- { "RAW_POINT_SIZE", 0, },
- { "RAW_ASCENT", 0, },
- { "RAW_DESCENT", 0, },
- { "RAW_AVERAGE_WIDTH", 0, },
- { "FONT_TYPE", 0, },
- { "RASTERIZER_NAME", 0, }
-};
-
-/* this is a bit kludgy */
-#define FONTPROP 0
-#define COPYRIGHTPROP 1
-#define RAWPIXELPROP 2
-#define RAWPOINTPROP 3
-#define RAWASCENTPROP 4
-#define RAWDESCENTPROP 5
-#define RAWWIDTHPROP 6
-#define FONT_TYPEPROP 7
-#define RASTERIZER_NAMEPROP 8
-
-#define NNAMEPROPS (sizeof(fontNamePropTable) / sizeof(fontProp))
-#define NEXTRAPROPS (sizeof(extraProps) / sizeof(fontProp))
-
-#define NPROPS (NNAMEPROPS + NEXTRAPROPS)
-
-void
-sp_make_standard_props()
-{
- int i;
- fontProp *t;
-
- i = sizeof(fontNamePropTable) / sizeof(fontProp);
- for (t = fontNamePropTable; i; i--, t++)
- t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE);
- i = sizeof(extraProps) / sizeof(fontProp);
- for (t = extraProps; i; i--, t++)
- t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE);
-}
-
-void
-sp_make_header(
- SpeedoFontPtr spf,
- FontInfoPtr pinfo)
-{
- int pixel_size;
- SpeedoMasterFontPtr spmf = spf->master;
-
- pinfo->firstCol = spmf->first_char_id & 0xff;
- pinfo->firstRow = spmf->first_char_id >> 8;
- pinfo->lastCol = spmf->max_id & 0xff;
- pinfo->lastRow = spmf->max_id >> 8;
-
- /* XXX -- hackery here */
- pinfo->defaultCh = 0;
-/* computed by FontComputeInfoAccelerators:
- * noOverlap
- * constantMetrics
- * terminalFont
- * constantWidth
- * inkInside
- */
- pinfo->inkMetrics = 0;
- pinfo->allExist = 0;
- pinfo->drawDirection = LeftToRight;
- pinfo->cachable = 1;
- if (spf->specs.xxmult != spf->specs.yymult)
- pinfo->anamorphic = TRUE;
- else
- pinfo->anamorphic = FALSE;
-/* computed by sp_compute_bounds:
- * maxOverlap
- * maxbounds
- * minbounds
- * ink_maxbounds
- * ink_minbounds
- */
- pixel_size = spf->vals.pixel_matrix[3] * STRETCH_FACTOR / 100;
- pinfo->fontAscent = pixel_size * 764 / 1000; /* 764 == EM_TOP */
- pinfo->fontDescent = pixel_size - pinfo->fontAscent;
-}
-
-static void
-adjust_min_max(
- xCharInfo *minc,
- xCharInfo *maxc,
- xCharInfo *tmp)
-{
-#define MINMAX(field,ci) \
- if (minc->field > (ci)->field) \
- minc->field = (ci)->field; \
- if (maxc->field < (ci)->field) \
- maxc->field = (ci)->field;
-
- MINMAX(ascent, tmp);
- MINMAX(descent, tmp);
- MINMAX(leftSideBearing, tmp);
- MINMAX(rightSideBearing, tmp);
- MINMAX(characterWidth, tmp);
-
- if ((INT16)minc->attributes > (INT16)tmp->attributes)
- minc->attributes = tmp->attributes;
- if ((INT16)maxc->attributes < (INT16)tmp->attributes)
- maxc->attributes = tmp->attributes;
-
-#undef MINMAX
-}
-
-
-void
-sp_compute_bounds(
- SpeedoFontPtr spf,
- FontInfoPtr pinfo,
- unsigned long flags,
- long *sWidth)
-{
- int i,
- id,
- index,
- maxOverlap,
- overlap,
- total_width = 0;
- xCharInfo minchar,
- maxchar,
- tmpchar;
- bbox_t bbox;
- fix31 width;
- double pix_width;
- SpeedoMasterFontPtr spmf = spf->master;
- int firstChar;
- int num_chars = 0;
-
- firstChar = spmf->first_char_id;
- minchar.ascent = minchar.descent =
- minchar.leftSideBearing = minchar.rightSideBearing =
- minchar.characterWidth = minchar.attributes = 32767;
- maxchar.ascent = maxchar.descent =
- maxchar.leftSideBearing = maxchar.rightSideBearing =
- maxchar.characterWidth = maxchar.attributes = -32767;
- maxOverlap = -32767;
- *sWidth = 0;
- for (i = 0; i < spmf->num_chars; i++) {
- int j;
- int char_id;
-
- index = spmf->enc[i * 2 + 1];
- char_id = spmf->enc[i * 2];
- /*
- * See if this character is in the list of ranges specified in the
- * XLFD name
- */
- for (j = 0; j < spf->vals.nranges; j++)
- if (char_id >= mincharno(spf->vals.ranges[j]) &&
- char_id <= maxcharno(spf->vals.ranges[j]))
- break;
- if (spf->vals.nranges && j == spf->vals.nranges)
- continue;
- num_chars++;
-
- if (!(flags & ComputeBoundsOnly)) {
-
- width = sp_get_char_width(index);
-
- /* convert to pixel coords */
- pix_width = (int)width * (spf->specs.xxmult / 65536L) +
- ((int) width * (spf->specs.xxmult % 65536L))
- / 65536L;
- pix_width /= 65536L;
-
- (void) sp_get_char_bbox(index, &bbox);
- bbox.ymax = (bbox.ymax + 32768L) >> 16;
- bbox.ymin = (bbox.ymin + 32768L) >> 16;
- bbox.xmin = (bbox.xmin + 32768L) >> 16;
- bbox.xmax = (bbox.xmax + 32768L) >> 16;
- tmpchar.ascent = bbox.ymax;
- tmpchar.descent = -bbox.ymin;
- tmpchar.characterWidth = (int)(pix_width + /* round */
- (pix_width > 0 ? 0.5 : -0.5));
- tmpchar.rightSideBearing = bbox.xmax;
- tmpchar.leftSideBearing = bbox.xmin;
-
- if (!tmpchar.characterWidth &&
- tmpchar.ascent == -tmpchar.descent &&
- tmpchar.rightSideBearing == tmpchar.leftSideBearing)
- {
- /* Character appears non-existent, probably as a result
- of the transformation. Let's give it one pixel in
- the universe so it's not mistaken for non-existent. */
- tmpchar.leftSideBearing = tmpchar.descent = 0;
- tmpchar.rightSideBearing = tmpchar.ascent = 1;
- }
-
- tmpchar.attributes = (int)((double)(int)width / 65.536 + .5);
- }
- else
- tmpchar = spf->encoding[char_id - firstChar].metrics;
-
- adjust_min_max(&minchar, &maxchar, &tmpchar);
- overlap = tmpchar.rightSideBearing - tmpchar.characterWidth;
- if (maxOverlap < overlap)
- maxOverlap = overlap;
-
- total_width += ((int)(INT16)tmpchar.attributes);
- *sWidth += abs((int)(INT16)tmpchar.attributes);
-
- if (flags & SaveMetrics) {
- id = spmf->enc[i * 2] - firstChar;
- assert(id <= spmf->max_id - firstChar);
- spf->encoding[id].metrics = tmpchar;
- }
- }
-
-
- if (num_chars > 0)
- {
- *sWidth = (int)(((double)*sWidth * 10.0 + (double)num_chars / 2.0) /
- num_chars);
- if (total_width < 0)
- {
- /* Predominant direction is R->L */
- *sWidth = -*sWidth;
- }
- spf->vals.width = (int)((double)*sWidth * spf->vals.pixel_matrix[0] /
- 1000.0 +
- (spf->vals.pixel_matrix[0] > 0 ? .5 : -.5));
- }
- else
- {
- spf->vals.width = 0;
- }
- pinfo->maxbounds = maxchar;
- pinfo->minbounds = minchar;
- pinfo->ink_maxbounds = maxchar;
- pinfo->ink_minbounds = minchar;
- pinfo->maxOverlap = maxOverlap;
-}
-
-void
-sp_compute_props(
- SpeedoFontPtr spf,
- char *fontname,
- FontInfoPtr pinfo,
- long sWidth)
-{
- FontPropPtr pp;
- int i,
- nprops;
- fontProp *fpt;
- char *is_str;
- char *ptr1 = NULL,
- *ptr2;
- char *ptr3;
- char tmpname[1024];
- FontScalableRec tmpvals;
-
- nprops = pinfo->nprops = NPROPS;
- pinfo->isStringProp = (char *) xalloc(sizeof(char) * nprops);
- pinfo->props = (FontPropPtr) xalloc(sizeof(FontPropRec) * nprops);
- if (!pinfo->isStringProp || !pinfo->props) {
- xfree(pinfo->isStringProp);
- pinfo->isStringProp = (char *) 0;
- xfree(pinfo->props);
- pinfo->props = (FontPropPtr) 0;
- pinfo->nprops = 0;
- return;
- }
- bzero(pinfo->isStringProp, (sizeof(char) * nprops));
-
- ptr2 = fontname;
- for (i = NNAMEPROPS, pp = pinfo->props, fpt = fontNamePropTable,
- is_str = pinfo->isStringProp;
- i;
- i--, pp++, fpt++, is_str++) {
-
- if (*ptr2)
- {
- ptr1 = ptr2 + 1;
- if (!(ptr2 = strchr(ptr1, '-'))) ptr2 = strchr(ptr1, '\0');
- }
-
- pp->name = fpt->atom;
- switch (fpt->type) {
- case atom:
- *is_str = TRUE;
- pp->value = MakeAtom(ptr1, ptr2 - ptr1, TRUE);
- break;
- case truncate_atom:
- *is_str = TRUE;
- for (ptr3 = ptr1; *ptr3; ptr3++)
- if (*ptr3 == '[')
- break;
- pp->value = MakeAtom(ptr1, ptr3 - ptr1, TRUE);
- break;
- case pixel_size:
- pp->value = (int)(spf->vals.pixel_matrix[3] +
- (spf->vals.pixel_matrix[3] > 0 ? .5 : -.5));
- break;
- case point_size:
- pp->value = (int)(spf->vals.point_matrix[3] * 10.0 +
- (spf->vals.point_matrix[3] > 0 ? .5 : -.5));
- break;
- case resolution_x:
- pp->value = spf->vals.x;
- break;
- case resolution_y:
- pp->value = spf->vals.y;
- break;
- case average_width:
- pp->value = spf->vals.width;
- break;
- }
- }
-
- for (i = 0, fpt = extraProps; i < NEXTRAPROPS; i++, is_str++, pp++, fpt++) {
- pp->name = fpt->atom;
- switch (i) {
- case FONTPROP:
- *is_str = TRUE;
- strcpy(tmpname, fontname);
- FontParseXLFDName(tmpname, &tmpvals, FONT_XLFD_REPLACE_ZERO);
- FontParseXLFDName(tmpname, &spf->vals, FONT_XLFD_REPLACE_VALUE);
- pp->value = MakeAtom(tmpname, strlen(tmpname), TRUE);
- break;
- case COPYRIGHTPROP:
- *is_str = TRUE;
- pp->value = MakeAtom(spf->master->copyright,
- strlen(spf->master->copyright), TRUE);
- break;
- case FONT_TYPEPROP:
- *is_str = TRUE;
- pp->value = MakeAtom("Speedo", strlen("Speedo"), TRUE);
- break;
- case RASTERIZER_NAMEPROP:
- *is_str = TRUE;
- pp->value = MakeAtom("X Consortium Speedo Rasterizer",
- strlen("X Consortium Speedo Rasterizer"),
- TRUE);
- break;
- case RAWPIXELPROP:
- *is_str = FALSE;
- pp->value = 1000;
- break;
- case RAWPOINTPROP:
- *is_str = FALSE;
- pp->value = (long)(72270.0 / (double)spf->vals.y + .5);
- break;
- case RAWASCENTPROP:
- *is_str = FALSE;
- pp->value = STRETCH_FACTOR * 764 / 100;
- break;
- case RAWDESCENTPROP:
- *is_str = FALSE;
- pp->value = STRETCH_FACTOR * 236 / 100;
- break;
- case RAWWIDTHPROP:
- *is_str = FALSE;
- pp->value = sWidth;
- break;
- }
- }
-}
diff --git a/libXfont/src/Speedo/spint.h b/libXfont/src/Speedo/spint.h
deleted file mode 100644
index 299882c96..000000000
--- a/libXfont/src/Speedo/spint.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/* $Xorg: spint.h,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices or Digital
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
- */
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Speedo/spint.h,v 1.9 2001/01/17 19:43:20 dawes Exp $ */
-
-#ifndef _SPINT_H_
-#define _SPINT_H_
-
-#include <X11/fonts/fntfilst.h>
-#ifndef XFree86LOADER
-#include <stdio.h>
-#else
-#include <xf86_ansic.h>
-#endif
-#include <X11/Xfuncproto.h>
-#include "speedo.h"
-
-#define SaveMetrics 0x1
-#define ComputeBoundsOnly 0x2
-
-#define GLWIDTHBYTESPADDED(bits,nbytes) \
- ((nbytes) == 1 ? (((bits)+7)>>3) /* pad to 1 byte */ \
- :(nbytes) == 2 ? ((((bits)+15)>>3)&~1) /* pad to 2 bytes */ \
- :(nbytes) == 4 ? ((((bits)+31)>>3)&~3) /* pad to 4 bytes */ \
- :(nbytes) == 8 ? ((((bits)+63)>>3)&~7) /* pad to 8 bytes */ \
- : 0)
-
-#define GLYPH_SIZE(ch, nbytes) \
- GLWIDTHBYTESPADDED((ch)->metrics.rightSideBearing - \
- (ch)->metrics.leftSideBearing, (nbytes))
-
-#define mincharno(p) ((p).min_char_low + ((p).min_char_high << 8))
-#define maxcharno(p) ((p).max_char_low + ((p).max_char_high << 8))
-
-#define MasterFileOpen 0x1
-
-typedef struct _sp_master {
- FontEntryPtr entry; /* back pointer */
- FILE *fp;
- char *fname;
- ufix8 *f_buffer;
- ufix8 *c_buffer;
- char *copyright;
- ufix8 *key;
- buff_t font;
- buff_t char_data;
- ufix16 mincharsize;
- int first_char_id;
- int num_chars;
- int max_id;
- int state; /* open, closed */
- int refcount; /* number of instances */
- int *enc;
- int enc_size;
-} SpeedoMasterFontRec, *SpeedoMasterFontPtr;
-
-typedef struct _cur_font_stats {
- fsBitmapFormat format;
- /* current glyph info */
- ufix16 char_index;
- ufix16 char_id;
-
- fix15 bit_width,
- bit_height;
- fix15 cur_y;
- int bpr;
-
- /*
- * since Speedo returns extents that are not identical to what it feeds to
- * the bitmap builder, and we want to be able to use the extents for
- * preformance reasons, some of the bitmaps require padding out. the next
- * two flags keep track of this.
- */
- fix15 last_y;
- int trunc;
-
- pointer bp;
- int scanpad;
-} CurrentFontValuesRec, *CurrentFontValuesPtr;
-
-
-typedef struct _sp_font {
- struct _sp_master *master;
- specs_t specs;
-
- FontEntryPtr entry;
-
- FontScalableRec vals;
-
- /* char & metric data */
- CharInfoPtr encoding;
- CharInfoPtr pDefault;
- pointer bitmaps;
-
-#ifdef DEBUG
- unsigned long bitmap_size;
-#endif
-
-} SpeedoFontRec, *SpeedoFontPtr;
-
-extern SpeedoFontPtr sp_fp_cur;
-
-extern int sp_open_font(char *, char *, FontEntryPtr, FontScalablePtr,
- fsBitmapFormat, fsBitmapFormatMask, Mask,
- SpeedoFontPtr *);
-extern int sp_open_master(const char *, const char *, SpeedoMasterFontPtr *);
-extern void sp_close_font(SpeedoFontPtr);
-extern void sp_close_master_font(SpeedoMasterFontPtr);
-extern void sp_close_master_file(SpeedoMasterFontPtr);
-extern void sp_reset_master(SpeedoMasterFontPtr);
-extern void SpeedoErr(char *fmt, ...);
-
-extern void sp_make_standard_props(void);
-extern void sp_make_header(SpeedoFontPtr, FontInfoPtr);
-extern void sp_compute_bounds(SpeedoFontPtr, FontInfoPtr, unsigned long, long *);
-extern void sp_compute_props(SpeedoFontPtr, char *, FontInfoPtr, long);
-extern int sp_build_all_bitmaps(FontPtr, fsBitmapFormat, fsBitmapFormatMask);
-
-extern int SpeedoFontLoad(FontPtr *, char *, char *, FontEntryPtr,
- FontScalablePtr, fsBitmapFormat, fsBitmapFormatMask,
- Mask);
-
-extern int sp_bics_map[];
-extern int sp_bics_map_size;
-
-#ifdef EXTRAFONTS
-extern int adobe_map[];
-extern int adobe_map_size;
-
-#endif
-
-#endif /* _SPINT_H_ */
diff --git a/libXfont/src/Speedo/useropt.h b/libXfont/src/Speedo/useropt.h
deleted file mode 100644
index e879aae96..000000000
--- a/libXfont/src/Speedo/useropt.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* $Xorg: useropt.h,v 1.4 2001/02/09 02:04:00 xorgcvs Exp $ */
-/*
-
-Copyright 1993, 1994, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#define INCL_LCD 1
-#define STATIC_ALLOC 1
-
-#define INCL_BLACK 1
-#define INCL_SCREEN 1
-#define INCL_2D 1
-#define SHORT_LISTS 0
-
-#define INCL_RULES 1
-#define INCL_METRICS 1
-
-#define INCL_KEYS 1
diff --git a/libXfont/src/Type1/Makefile.am b/libXfont/src/Type1/Makefile.am
deleted file mode 100644
index cf5eb7d4f..000000000
--- a/libXfont/src/Type1/Makefile.am
+++ /dev/null
@@ -1,52 +0,0 @@
-INCLUDES = \
- -I${top_srcdir}/include
-
-AM_CFLAGS = $(XFONT_CFLAGS) $(OS_CFLAGS) $(CWARNFLAGS)
-
-noinst_LTLIBRARIES = libtype1.la
-
-libtype1_la_SOURCES = \
- arith.c \
- arith.h \
- blues.h \
- cluts.h \
- curves.c \
- curves.h \
- digit.h \
- fontfcn.c \
- fontfcn.h \
- fonts.h \
- hdigit.h \
- hints.c \
- hints.h \
- lines.c \
- lines.h \
- objects.c \
- objects.h \
- paths.c \
- paths.h \
- pictures.h \
- regions.c \
- regions.h \
- scanfont.c \
- spaces.c \
- spaces.h \
- strokes.h \
- t1funcs.c \
- t1hdigit.h \
- t1imager.h \
- t1info.c \
- t1intf.h \
- t1io.c \
- t1malloc.c \
- t1snap.c \
- t1stdio.h \
- t1unicode.c \
- t1unicode.h \
- token.c \
- token.h \
- tokst.h \
- trig.h \
- type1.c \
- util.c \
- util.h
diff --git a/libXfont/src/Type1/Makefile.in b/libXfont/src/Type1/Makefile.in
deleted file mode 100644
index c4da78f47..000000000
--- a/libXfont/src/Type1/Makefile.in
+++ /dev/null
@@ -1,516 +0,0 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = src/Type1
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h \
- $(top_builddir)/include/X11/fonts/fontconf.h
-CONFIG_CLEAN_FILES =
-LTLIBRARIES = $(noinst_LTLIBRARIES)
-libtype1_la_LIBADD =
-am_libtype1_la_OBJECTS = arith.lo curves.lo fontfcn.lo hints.lo \
- lines.lo objects.lo paths.lo regions.lo scanfont.lo spaces.lo \
- t1funcs.lo t1info.lo t1io.lo t1malloc.lo t1snap.lo \
- t1unicode.lo token.lo type1.lo util.lo
-libtype1_la_OBJECTS = $(am_libtype1_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
- --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
-SOURCES = $(libtype1_la_SOURCES)
-DIST_SOURCES = $(libtype1_la_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AR = @AR@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CHANGELOG_CMD = @CHANGELOG_CMD@
-CPP = @CPP@
-CPPFLAGS = @CPPFLAGS@
-CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO = @ECHO@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-ENCODINGSDIR = @ENCODINGSDIR@
-EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
-FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
-FREETYPE_LIBS = @FREETYPE_LIBS@
-FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LIBTOOL = @LIBTOOL@
-LN_S = @LN_S@
-LTLIBOBJS = @LTLIBOBJS@
-MAKEINFO = @MAKEINFO@
-MATH_LIBS = @MATH_LIBS@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-OS_CFLAGS = @OS_CFLAGS@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-PKG_CONFIG = @PKG_CONFIG@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-XFONT_CFLAGS = @XFONT_CFLAGS@
-XFONT_LIBS = @XFONT_LIBS@
-X_GZIP_FONT_COMPRESSION = @X_GZIP_FONT_COMPRESSION@
-Z_LIBS = @Z_LIBS@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-distcleancheck_listfiles = @distcleancheck_listfiles@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-ft_config = @ft_config@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-INCLUDES = \
- -I${top_srcdir}/include
-
-AM_CFLAGS = $(XFONT_CFLAGS) $(OS_CFLAGS) $(CWARNFLAGS)
-noinst_LTLIBRARIES = libtype1.la
-libtype1_la_SOURCES = \
- arith.c \
- arith.h \
- blues.h \
- cluts.h \
- curves.c \
- curves.h \
- digit.h \
- fontfcn.c \
- fontfcn.h \
- fonts.h \
- hdigit.h \
- hints.c \
- hints.h \
- lines.c \
- lines.h \
- objects.c \
- objects.h \
- paths.c \
- paths.h \
- pictures.h \
- regions.c \
- regions.h \
- scanfont.c \
- spaces.c \
- spaces.h \
- strokes.h \
- t1funcs.c \
- t1hdigit.h \
- t1imager.h \
- t1info.c \
- t1intf.h \
- t1io.c \
- t1malloc.c \
- t1snap.c \
- t1stdio.h \
- t1unicode.c \
- t1unicode.h \
- token.c \
- token.h \
- tokst.h \
- trig.h \
- type1.c \
- util.c \
- util.h
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Type1/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign src/Type1/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-libtype1.la: $(libtype1_la_OBJECTS) $(libtype1_la_DEPENDENCIES)
- $(LINK) $(libtype1_la_OBJECTS) $(libtype1_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arith.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/curves.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontfcn.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hints.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lines.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/objects.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paths.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/regions.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scanfont.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spaces.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t1funcs.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t1info.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t1io.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t1malloc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t1snap.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/t1unicode.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/token.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/type1.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
- fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
- else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
- || exit 1; \
- fi; \
- done
-check-am: all-am
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
- @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
- $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
- `test -z '$(STRIP)' || \
- echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-
-maintainer-clean-generic:
- @echo "This command is intended for maintainers to use"
- @echo "it deletes files that may require special tools to rebuild."
-clean: clean-am
-
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-info: info-am
-
-info-am:
-
-install-data-am:
-
-install-dvi: install-dvi-am
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-info: install-info-am
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-ps: install-ps-am
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am:
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES ctags distclean \
- distclean-compile distclean-generic distclean-libtool \
- distclean-tags distdir dvi dvi-am html html-am info info-am \
- install install-am install-data install-data-am install-dvi \
- install-dvi-am install-exec install-exec-am install-html \
- install-html-am install-info install-info-am install-man \
- install-pdf install-pdf-am install-ps install-ps-am \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/libXfont/src/Type1/arith.c b/libXfont/src/Type1/arith.c
deleted file mode 100644
index 92a372a17..000000000
--- a/libXfont/src/Type1/arith.c
+++ /dev/null
@@ -1,212 +0,0 @@
-/* $Xorg: arith.c,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/arith.c,v 1.6tsi Exp $ */
-
- /* ARITH CWEB V0006 ******** */
-/*
-:h1.ARITH Module - Portable Module for Multiple Precision Fixed Point Arithmetic
-
-This module provides division and multiplication of 64-bit fixed point
-numbers. (To be more precise, the module works on numbers that take
-two 'longs' to store. That is almost always equivalent to saying 64-bit
-numbers.)
-
-Note: it is frequently easy and desirable to recode these functions in
-assembly language for the particular processor being used, because
-assembly language, unlike C, will have 64-bit multiply products and
-64-bit dividends. This module is offered as a portable version.
-
-&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) and Sten F. Andler
-
-
-:h3.Include Files
-
-The included files are:
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifdef FONTMODULE
-# include "os.h"
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "arith.h"
-
-
-/*
-:h3.
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-Reference for all algorithms: Donald E. Knuth, "The Art of Computer
-Programming, Volume 2, Semi-Numerical Algorithms," Addison-Wesley Co.,
-Massachusetts, 1969, pp. 229-279.
-
-Knuth talks about a 'digit' being an arbitrary sized unit and a number
-being a sequence of digits. We'll take a digit to be a 'short'.
-The following assumption must be valid for these algorithms to work:
-:ol.
-:li.A 'long' is two 'short's.
-:eol.
-The following code is INDEPENDENT of:
-:ol.
-:li.The actual size of a short.
-:li.Whether shorts and longs are stored most significant byte
-first or least significant byte first.
-:eol.
-
-SHORTSIZE is the number of bits in a short; LONGSIZE is the number of
-bits in a long; MAXSHORT is the maximum unsigned short:
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-ASSEMBLE concatenates two shorts to form a long:
-*/
-#define ASSEMBLE(hi,lo) ((((unsigned long)hi)<<SHORTSIZE)+(lo))
-/*
-HIGHDIGIT extracts the most significant short from a long; LOWDIGIT
-extracts the least significant short from a long:
-*/
-#define HIGHDIGIT(u) ((u)>>SHORTSIZE)
-#define LOWDIGIT(u) ((u)&MAXSHORT)
-
-/*
-SIGNBITON tests the high order bit of a long 'w':
-*/
-#define SIGNBITON(w) (((long)w)<0)
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h2.Double Long Arithmetic
-
-:h3.DLmult() - Multiply Two Longs to Yield a Double Long
-
-The two multiplicands must be positive.
-*/
-
-static void
-DLmult(doublelong *product, unsigned long u, unsigned long v)
-{
-#ifdef LONG64
-/* printf("DLmult(? ?, %lx, %lx)\n", u, v); */
- *product = u*v;
-/* printf("DLmult returns %lx\n", *product); */
-#else
- register unsigned long u1, u2; /* the digits of u */
- register unsigned long v1, v2; /* the digits of v */
- register unsigned int w1, w2, w3, w4; /* the digits of w */
- register unsigned long t; /* temporary variable */
-/* printf("DLmult(? ?, %x, %x)\n", u, v); */
- u1 = HIGHDIGIT(u);
- u2 = LOWDIGIT(u);
- v1 = HIGHDIGIT(v);
- v2 = LOWDIGIT(v);
-
- if (v2 == 0) w4 = w3 = w2 = 0;
- else
- {
- t = u2 * v2;
- w4 = LOWDIGIT(t);
- t = u1 * v2 + HIGHDIGIT(t);
- w3 = LOWDIGIT(t);
- w2 = HIGHDIGIT(t);
- }
-
- if (v1 == 0) w1 = 0;
- else
- {
- t = u2 * v1 + w3;
- w3 = LOWDIGIT(t);
- t = u1 * v1 + w2 + HIGHDIGIT(t);
- w2 = LOWDIGIT(t);
- w1 = HIGHDIGIT(t);
- }
-
- product->high = ASSEMBLE(w1, w2);
- product->low = ASSEMBLE(w3, w4);
-#endif /* LONG64 else */
-}
-
-/*
-:h3.DLrightshift() - Macro to Shift Double Long Right by N
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h2.Fractional Pel Arithmetic
-*/
-/*
-:h3.FPmult() - Multiply Two Fractional Pel Values
-
-This funtion first calculates w = u * v to "doublelong" precision.
-It then shifts w right by FRACTBITS bits, and checks that no
-overflow will occur when the resulting value is passed back as
-a fractpel.
-*/
-
-fractpel
-FPmult(fractpel u, fractpel v)
-{
- doublelong w;
- register int negative = FALSE; /* sign flag */
-#ifdef LONG64
- register fractpel ret;
-#endif
-
- if ((u == 0) || (v == 0)) return (0);
-
-
- if (u < 0) {u = -u; negative = TRUE;}
- if (v < 0) {v = -v; negative = !negative;}
-
- if (u == TOFRACTPEL(1)) return ((negative) ? -v : v);
- if (v == TOFRACTPEL(1)) return ((negative) ? -u : u);
-
- DLmult(&w, u, v);
- DLrightshift(w, FRACTBITS);
-#ifndef LONG64
- if (w.high != 0 || SIGNBITON(w.low)) {
- w.low = TOFRACTPEL(MAXSHORT);
- }
-
- return ((negative) ? -w.low : w.low);
-#else
- if (w & 0xffffffff80000000L ) {
- ret = TOFRACTPEL(MAXSHORT);
- }
- else
- ret = (fractpel)w;
-
- return ((negative) ? -ret : ret);
-#endif
-}
diff --git a/libXfont/src/Type1/arith.h b/libXfont/src/Type1/arith.h
deleted file mode 100644
index 73b84a7c3..000000000
--- a/libXfont/src/Type1/arith.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* $Xorg: arith.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/arith.h,v 1.4 1999/08/21 13:47:39 dawes Exp $ */
-
-/*SHARED*/
-
-#include <X11/Xmd.h> /* LONG64 */
-
-/*END SHARED*/
-/*SHARED*/
-
-#undef SHORTSIZE
-#define SHORTSIZE (sizeof(short)*8)
-#undef LONGSIZE
-#define LONGSIZE (SHORTSIZE*2)
-#undef MAXSHORT
-#define MAXSHORT ((1<<SHORTSIZE)-1)
-
-/*END SHARED*/
-/*SHARED*/
-
-#ifdef LONG64
-typedef long doublelong;
-#else
-typedef struct {
- long high;
- unsigned long low;
-} doublelong;
-#endif /* LONG64 else */
-
-/*END SHARED*/
-/*SHARED*/
-
-#ifdef LONG64
-#define DLrightshift(dl,N) ((dl) >>= (N))
-#else
-#define DLrightshift(dl,N) { \
- dl.low = (dl.low >> N) + (((unsigned long) dl.high) << (LONGSIZE - N)); \
- dl.high >>= N; \
-}
-#endif
-
-extern fractpel FPmult ( fractpel u, fractpel v );
-
-/*END SHARED*/
diff --git a/libXfont/src/Type1/blues.h b/libXfont/src/Type1/blues.h
deleted file mode 100644
index 88602f79e..000000000
--- a/libXfont/src/Type1/blues.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* $Xorg: blues.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- * Portions Copyright (c) 1990 Adobe Systems Incorporated.
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark or Adobe
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * IBM, LEXMARK, AND ADOBE PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY
- * WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE
- * ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING
- * ANY DUTY TO SUPPORT OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY
- * PORTION OF THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM,
- * LEXMARK, OR ADOBE) ASSUMES THE ENTIRE COST OF ALL SERVICING, REPAIR AND
- * CORRECTION. IN NO EVENT SHALL IBM, LEXMARK, OR ADOBE 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.
- */
-/* $XFree86: xc/lib/font/Type1/blues.h,v 1.3 1999/08/22 08:58:49 dawes Exp $ */
-
-
-extern psobj *GetType1CharString ( psfont *fontP, unsigned char code );
-
-#define TOPLEFT 1
-#define BOTTOMRIGHT 2
-
-#define NUMBLUEVALUES 14
-#define NUMOTHERBLUES 10
-#define NUMFAMILYBLUES 14
-#define NUMFAMILYOTHERBLUES 10
-#define NUMSTEMSNAPH 12
-#define NUMSTEMSNAPV 12
-#define NUMSTDHW 1
-#define NUMSTDVW 1
-
-#define DEFAULTBOLDSTEMWIDTH 2.0
-
-#define MAXALIGNMENTZONES ((NUMBLUEVALUES+NUMOTHERBLUES)/2)
-#define DEFAULTBLUESCALE 0.039625
-#define DEFAULTBLUESHIFT 7
-#define DEFAULTBLUEFUZZ 1
-#define DEFAULTSTDHW 0
-#define DEFAULTSTDVW 0
-#define DEFAULTFORCEBOLD FALSE
-#define DEFAULTLANGUAGEGROUP 0
-#define DEFAULTRNDSTEMUP FALSE
-#define DEFAULTLENIV 4
-#define DEFAULTEXPANSIONFACTOR 0.06
-
-/* see Type 1 Font Format book for explanations of these values */
-/* Note that we're currently doing nothing for minfeature and password. */
-struct blues_struct {
- struct blues_struct *next; /* ptr to next Blues structure in list */
- int numBlueValues; /* # of BlueValues in following array */
- int BlueValues[NUMBLUEVALUES];
- int numOtherBlues; /* # of OtherBlues values in following array */
- int OtherBlues[NUMOTHERBLUES];
- int numFamilyBlues; /* # of FamilyBlues values in following array */
- int FamilyBlues[NUMFAMILYBLUES];
- int numFamilyOtherBlues; /* # of FamilyOtherBlues values in */
- int FamilyOtherBlues[NUMFAMILYOTHERBLUES]; /* this array */
- double BlueScale;
- int BlueShift;
- int BlueFuzz;
- double StdHW;
- double StdVW;
- int numStemSnapH; /* # of StemSnapH values in following array */
- double StemSnapH[NUMSTEMSNAPH];
- int numStemSnapV; /* # of StemSnapV values in following array */
- double StemSnapV[NUMSTEMSNAPV];
- int ForceBold;
- int LanguageGroup;
- int RndStemUp;
- int lenIV;
- double ExpansionFactor;
-};
-
-/* the alignment zone structure -- somewhat similar to the stem structure */
-/* see Adobe Type1 Font Format book about the terms used in this structure */
-struct alignmentzone {
- int topzone; /* TRUE if a topzone, FALSE if a bottom zone */
- double bottomy, topy; /* interval of this alignment zone */
-};
diff --git a/libXfont/src/Type1/cluts.h b/libXfont/src/Type1/cluts.h
deleted file mode 100644
index 67d930324..000000000
--- a/libXfont/src/Type1/cluts.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* $Xorg: cluts.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* STUB */
-
-#define KillCLUT(T)
-#define CopyCLUT(T) T
-#define UniqueCLUT(T)
-
diff --git a/libXfont/src/Type1/curves.c b/libXfont/src/Type1/curves.c
deleted file mode 100644
index 9d0c3f8cc..000000000
--- a/libXfont/src/Type1/curves.c
+++ /dev/null
@@ -1,228 +0,0 @@
-/* $Xorg: curves.c,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991 */
-/* All Rights Reserved */
-
-/* License to use, copy, modify, and distribute this software */
-/* and its documentation for any purpose and without fee is */
-/* hereby granted, provided that licensee provides a license to */
-/* IBM, Corp. to use, copy, modify, and distribute derivative */
-/* works and their documentation for any purpose and without */
-/* fee, 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 IBM not be used in advertising or publicity pertaining to */
-/* distribution of the software without specific, written prior */
-/* permission. */
-
-/* IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES */
-/* OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT */
-/* LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, */
-/* FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF */
-/* THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND */
-/* PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT */
-/* OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF */
-/* THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES */
-/* THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN */
-/* NO EVENT SHALL IBM 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. */
-/* $XFree86: xc/lib/font/Type1/curves.c,v 1.7 2001/08/27 19:49:52 dawes Exp $ */
-
-/*
-:h1.CURVES Module - Stepping Beziers
-
-This module is responsible for "rasterizing"
-third order curves. That is, it changes the high level curve
-specification into a list of pels that that curve travels
-through.
-
-:h3.Include Files
-
-Include files needed:
-*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifdef FONTMODULE
-# include "os.h"
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "regions.h"
-#include "curves.h"
-#include "lines.h"
-#include "arith.h"
-
-
-/*
-:h3.Functions Provided to Other Modules
-
-External entry points:
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-Note that "stepping" and "flattening" are so similiar that they use the
-same routine. When the "region" parameter is NULL, that is a flag that
-we are flattening instead of stepping.
-*/
-/*
-:h2.Bezier Third Order Curves
-*/
-/*
-:h3.The "bezierinfo" Structure
-
-This structure is used to store information used when we subdivide
-Bezier curves.
-*/
-
-struct bezierinfo {
- struct region *region; /* the region being built or NULL */
- struct fractpoint last; /* not used yet; maybe could save some work */
- struct fractpoint origin; /* the origin of the bezier */
-} ;
-
-/*
- Checking for termination of the subdivision process:
- This is the stupidest test in the world, just check if the coordinatewise
- distance from an end control point to the next control point is less than
- one half pel. If so, we must be done.
- This returns 1 if the subdivision is terminated and 0 if you still need
- to subdivide.
-*/
-
-static int
-BezierTerminationTest(fractpel xa, fractpel ya,
- fractpel xb, fractpel yb,
- fractpel xc, fractpel yc,
- fractpel xd, fractpel yd)
-{
- fractpel dmax;
- dmax = ABS(xa - xb);
- dmax = MAX(dmax,ABS(ya - yb));
- dmax = MAX(dmax,ABS(xd - xc));
- dmax = MAX(dmax,ABS(yd - yc));
- if(dmax > FPHALF)
- return(0); /* not done yet */
- else
- return(1); /* done */
-}
-
-/*
-:h3.StepBezierRecurse() - The Recursive Logic in StepBezier()
-
-The recursion involves dividing the control polygon into two smaller
-control polygons by finding the midpoints of the lines. This idea is
-described in any graphics text book and its simplicity is what caused
-Bezier to define his curves as he did. If the input region 'R' is NULL,
-the result is a path that is the 'flattened' curve; otherwise StepBezier
-returns nothing special.
-*/
-static struct segment *
-StepBezierRecurse(struct bezierinfo *I, /* Region under construction or NULL */
- fractpel xA, fractpel yA, /* A control point */
- fractpel xB, fractpel yB, /* B control point */
- fractpel xC, fractpel yC, /* C control point */
- fractpel xD, fractpel yD) /* D control point */
-{
- if (BezierTerminationTest(xA,yA,xB,yB,xC,yC,xD,yD))
- {
- if (I->region == NULL)
- return(PathSegment(LINETYPE, xD - xA, yD - yA));
- else
- StepLine(I->region, I->origin.x + xA, I->origin.y + yA,
- I->origin.x + xD, I->origin.y + yD);
- }
- else
- {
- fractpel xAB,yAB;
- fractpel xBC,yBC;
- fractpel xCD,yCD;
- fractpel xABC,yABC;
- fractpel xBCD,yBCD;
- fractpel xABCD,yABCD;
-
- xAB = xA + xB; yAB = yA + yB;
- xBC = xB + xC; yBC = yB + yC;
- xCD = xC + xD; yCD = yC + yD;
-
- xABC = xAB + xBC; yABC = yAB + yBC;
- xBCD = xBC + xCD; yBCD = yBC + yCD;
-
- xABCD = xABC + xBCD; yABCD = yABC + yBCD;
-
- xAB >>= 1; yAB >>= 1;
- xBC >>= 1; yBC >>= 1;
- xCD >>= 1; yCD >>= 1;
- xABC >>= 2; yABC >>= 2;
- xBCD >>= 2; yBCD >>= 2;
- xABCD >>= 3; yABCD >>= 3;
-
- if (I->region == NULL)
- {
- return( Join(
- StepBezierRecurse(I, xA, yA, xAB, yAB, xABC, yABC, xABCD, yABCD),
- StepBezierRecurse(I, xABCD, yABCD, xBCD, yBCD, xCD, yCD, xD, yD)
- )
- );
- }
- else
- {
- StepBezierRecurse(I, xA, yA, xAB, yAB, xABC, yABC, xABCD, yABCD);
- StepBezierRecurse(I, xABCD, yABCD, xBCD, yBCD, xCD, yCD, xD, yD);
- }
- }
- return NULL;
- /*NOTREACHED*/
-}
-
-/*
-:h3.TOOBIG() - Macro to Test if a Coordinate is Too Big to Bezier SubDivide Normally
-
-Intermediate values in the Bezier subdivision are 8 times bigger than
-the starting values. If this overflows, a 'long', we are in trouble:
-*/
-
-#undef BITS
-#define BITS (sizeof(long)*8)
-#define HIGHTEST(p) (((p)>>(BITS-4)) != 0) /* includes sign bit */
-#define TOOBIG(xy) ((xy < 0) ? HIGHTEST(-xy) : HIGHTEST(xy))
-
-/*
-:h3.StepBezier() - Produce Run Ends for a Bezier Curve
-
-This is the entry point called from outside the module.
-*/
-
-struct segment *
-StepBezier(struct region *R, /* Region under construction or NULL */
- fractpel xA, fractpel yA, /* A control point */
- fractpel xB, fractpel yB, /* B control point */
- fractpel xC, fractpel yC, /* C control point */
- fractpel xD, fractpel yD) /* D control point */
-{
- struct bezierinfo Info;
-
- Info.region = R;
- Info.origin.x = xA;
- Info.origin.y = yA;
-
- xB -= xA;
- xC -= xA;
- xD -= xA;
- yB -= yA;
- yC -= yA;
- yD -= yA;
-
- if ( TOOBIG(xB) || TOOBIG(yB) || TOOBIG(xC) || TOOBIG(yC)
- || TOOBIG(xD) || TOOBIG(yD) )
- Abort("Beziers this big not yet supported");
-
- return(StepBezierRecurse(&Info,
- (fractpel) 0, (fractpel) 0, xB, yB, xC, yC, xD, yD));
-}
-
diff --git a/libXfont/src/Type1/curves.h b/libXfont/src/Type1/curves.h
deleted file mode 100644
index ca54bad62..000000000
--- a/libXfont/src/Type1/curves.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* $Xorg: curves.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/curves.h,v 1.3 1999/08/22 08:58:50 dawes Exp $ */
-
-/*SHARED*/
-
-#define StepConic(R,xA,yA,xB,yB,xC,yC,r) t1_StepConic(R,xA,yA,xB,yB,xC,yC,r)
-#define StepBezier(R,xA,yA,xB,yB,xC,yC,xD,yD) t1_StepBezier(R,xA,yA,xB,yB,xC,yC,xD,yD)
-
-#define FlattenConic(xM,yM,xC,yC,r) t1_StepConic(NULL,(fractpel)0,(fractpel)0,xM,yM,xC,yC,r)
-#define FlattenBezier(xB,yB,xC,yC,xD,yD) t1_StepBezier(NULL,(fractpel)0,(fractpel)0,xB,yB,xC,yC,xD,yD)
-
-#if 0
-struct segment *t1_StepConic();
-#endif
-extern struct segment *t1_StepBezier ( struct region *R, fractpel xA, fractpel yA, fractpel xB, fractpel yB, fractpel xC, fractpel yC, fractpel xD, fractpel yD );
-
-/*END SHARED*/
diff --git a/libXfont/src/Type1/digit.h b/libXfont/src/Type1/digit.h
deleted file mode 100644
index 44e418c8c..000000000
--- a/libXfont/src/Type1/digit.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* $Xorg: digit.h,v 1.3 2000/08/17 19:46:29 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* -------------------------------------- */
-/* --- MACHINE GENERATED, DO NOT EDIT --- */
-/* -------------------------------------- */
-
-#ifndef DIGIT
-#define DIGIT 1
-
-/*
- * Digit Value Table --
- *
- * The entries in the Digit Value Table map character
- * codes in the set {0-9,a-z,A-Z} to their numeric
- * values as part of numbers of radix 2-36.
- *
- */
-static const unsigned char digit_value[256] = {
-0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,
- 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,
- 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
- 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
-};
-
-#endif
diff --git a/libXfont/src/Type1/fontfcn.c b/libXfont/src/Type1/fontfcn.c
deleted file mode 100644
index ba5db0e67..000000000
--- a/libXfont/src/Type1/fontfcn.c
+++ /dev/null
@@ -1,317 +0,0 @@
-/* $Xorg: fontfcn.c,v 1.4 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */
-/* $XFree86: xc/lib/font/Type1/fontfcn.c,v 1.10 2001/04/05 17:42:27 dawes Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifndef FONTMODULE
-#include <stdio.h>
-#include <string.h>
-#else
-#include "Xmd.h" /* For INT32 declaration */
-#include "Xdefs.h" /* For Bool */
-#include "xf86_ansic.h"
-#endif
-#include "t1imager.h"
-#include "util.h"
-#include <X11/fonts/fntfilst.h>
-#include "fontfcn.h"
-
-extern struct segment *Type1Char ( char *env, XYspace S,
- psobj *charstrP, psobj *subrsP,
- psobj *osubrsP,
- struct blues_struct *bluesP, int *modeP );
-
-
-/***================================================================***/
-/* GLOBALS */
-/***================================================================***/
-static char CurFontName[120];
-static char *vm_base = NULL;
-psfont *FontP = NULL;
-static psfont TheCurrentFont;
-
-/***================================================================***/
-/* SearchDict - look for name */
-/* - compare for match on len and string */
-/* return 0 - not found. */
-/* return n - nth element in dictionary. */
-/***================================================================***/
-int
-SearchDictName(psdict *dictP, psobj *keyP)
-{
- int i,n;
-
-
- n = dictP[0].key.len;
- for (i=1;i<=n;i++) { /* scan the intire dictionary */
- if (
- (dictP[i].key.len == keyP->len )
- &&
- (strncmp(dictP[i].key.data.valueP,
- keyP->data.valueP,
- keyP->len) == 0
- )
- ) return(i);
- }
- return(0);
-}
-
-static boolean
-initFont(int cnt)
-{
-
- if (!(vm_init(cnt))) return(FALSE);
- vm_base = vm_next_byte();
- if (!(Init_BuiltInEncoding())) return(FALSE);
- strcpy(CurFontName, ""); /* iniitialize to none */
- FontP = &TheCurrentFont;
- FontP->vm_start = vm_next_byte();
- FontP->FontFileName.len = 0;
- FontP->FontFileName.data.valueP = CurFontName;
- return(TRUE);
-}
-/***================================================================***/
-static void
-resetFont(char *env)
-{
-
- vm_next = FontP->vm_start;
- vm_free = vm_size - ( vm_next - vm_base);
- FontP->Subrs.len = 0;
- FontP->Subrs.data.stringP = NULL;
- FontP->CharStringsP = NULL;
- FontP->Private = NULL;
- FontP->fontInfoP = NULL;
- FontP->BluesP = NULL;
- /* This will load the font into the FontP */
- strcpy(CurFontName,env);
- FontP->FontFileName.len = strlen(CurFontName);
- FontP->FontFileName.data.valueP = CurFontName;
-
-}
-
-static int
-readFont(char *env)
-{
- int rcode;
-
- /* restore the virtual memory and eliminate old font */
- resetFont(env);
- /* This will load the font into the FontP */
- rcode = scan_font(FontP);
- if (rcode == SCAN_OUT_OF_MEMORY) {
- if (!(initFont(vm_size * 2))) {
- /* we are really out of memory */
- return(SCAN_OUT_OF_MEMORY);
- }
- resetFont(env);
- rcode = scan_font(FontP);
- /* only double the memory once, then report error */
- }
- return(rcode);
-}
-/***================================================================***/
-struct xobject *
-fontfcnB(struct XYspace *S, unsigned char *code, int *lenP, int *mode)
-{
- psobj *charnameP; /* points to psobj that is name of character*/
- int N;
- psdict *CharStringsDictP; /* dictionary with char strings */
- psobj CodeName; /* used to store the translation of the name*/
- psobj *SubrsArrayP;
- psobj *theStringP;
-
- struct xobject *charpath; /* the path for this character */
-
- charnameP = &CodeName;
- charnameP->len = *lenP;
- charnameP->data.stringP = code;
-
- CharStringsDictP = FontP->CharStringsP;
-
- /* search the chars string for this charname as key */
- N = SearchDictName(CharStringsDictP,charnameP);
- if (N<=0) {
- *mode = FF_PARSE_ERROR;
- return(NULL);
- }
- /* ok, the nth item is the psobj that is the string for this char */
- theStringP = &(CharStringsDictP[N].value);
-
- /* get the dictionary pointers to the Subrs */
-
- SubrsArrayP = &(FontP->Subrs);
- /* scale the Adobe fonts to 1 unit high */
- /* call the type 1 routine to rasterize the character */
- charpath = (struct xobject *)Type1Char((char *)FontP,S,theStringP,
- SubrsArrayP,NULL,
- FontP->BluesP , mode);
- /* if Type1Char reported an error, then return */
- if ( *mode == FF_PARSE_ERROR) return(NULL);
- /* fill with winding rule unless path was requested */
- if (*mode != FF_PATH) {
- charpath = (struct xobject *)Interior((struct segment *)charpath,
- WINDINGRULE+CONTINUITY);
- }
- return(charpath);
-}
-
-
-/***================================================================***/
-/* fontfcnA(env, mode) */
-/* */
-/* env is a pointer to a string that contains the fontname. */
-/* */
-/* 1) initialize the font - global indicates it has been done */
-/* 2) load the font */
-/***================================================================***/
-Bool
-fontfcnA(char *env, int *mode)
-{
- int rc;
-
- /* Has the FontP initialized? If not, then */
- /* Initialize */
- if (FontP == NULL) {
- InitImager();
- if (!(initFont(VM_SIZE))) {
- /* we are really out of memory */
- *mode = SCAN_OUT_OF_MEMORY;
- return(FALSE);
- }
- }
-
- /* if the env is null, then use font already loaded */
-
- /* if the not same font name */
- if ( (env) && (strcmp(env,CurFontName) != 0 ) ) {
- /* restore the virtual memory and eliminate old font, read new one */
- rc = readFont(env);
- if (rc != 0 ) {
- strcpy(CurFontName, ""); /* no font loaded */
- *mode = rc;
- return(FALSE);
- }
- }
- return(TRUE);
-
-}
-
-/***================================================================***/
-/* QueryFontLib(env, infoName,infoValue,rcodeP) */
-/* */
-/* env is a pointer to a string that contains the fontname. */
-/* */
-/* 1) initialize the font - global indicates it has been done */
-/* 2) load the font */
-/* 3) use the font to call getInfo for that value. */
-/***================================================================***/
-
-void
-QueryFontLib(char *env, char *infoName,
- pointer infoValue, /* parameter returned here */
- int *rcodeP)
-{
- int rc,N,i;
- psdict *dictP;
- psobj nameObj;
- psobj *valueP;
-
- /* Has the FontP initialized? If not, then */
- /* Initialize */
- if (FontP == NULL) {
- InitImager();
- if (!(initFont(VM_SIZE))) {
- *rcodeP = 1;
- return;
- }
- }
- /* if the env is null, then use font already loaded */
- /* if the not same font name, reset and load next font */
- if ( (env) && (strcmp(env,CurFontName) != 0 ) ) {
- /* restore the virtual memory and eliminate old font */
- rc = readFont(env);
- if (rc != 0 ) {
- strcpy(CurFontName, ""); /* no font loaded */
- *rcodeP = 1;
- return;
- }
- }
- dictP = FontP->fontInfoP;
- objFormatName(&nameObj,strlen(infoName),infoName);
- N = SearchDictName(dictP,&nameObj);
- /* if found */
- if ( N > 0 ) {
- *rcodeP = 0;
- switch (dictP[N].value.type) {
- case OBJ_ARRAY:
- valueP = dictP[N].value.data.arrayP;
- /* Just double check valueP. H.J. */
- if (valueP == NULL) break;
- if (strcmp(infoName,"FontMatrix") == 0) {
- /* 6 elments, return them as floats */
- for (i=0;i<6;i++) {
- if (valueP->type == OBJ_INTEGER )
- ((float *)infoValue)[i] = valueP->data.integer;
- else
- ((float *)infoValue)[i] = valueP->data.real;
- valueP++;
- }
- }
- if (strcmp(infoName,"FontBBox") == 0) {
- /* 4 elments for Bounding Box. all integers */
- for (i=0;i<4;i++) {
- ((int *)infoValue)[i] = valueP->data.integer;
- valueP++;
- }
- break;
- case OBJ_INTEGER:
- case OBJ_BOOLEAN:
- *((int *)infoValue) = dictP[N].value.data.integer;
- break;
- case OBJ_REAL:
- *((float *)infoValue) = dictP[N].value.data.real;
- break;
- case OBJ_NAME:
- case OBJ_STRING:
- *((char **)infoValue) = dictP[N].value.data.valueP;
- break;
- default:
- *rcodeP = 1;
- break;
- }
- }
- }
- else *rcodeP = 1;
-}
diff --git a/libXfont/src/Type1/fontfcn.h b/libXfont/src/Type1/fontfcn.h
deleted file mode 100644
index 023302f3a..000000000
--- a/libXfont/src/Type1/fontfcn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* $Xorg: fontfcn.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/fontfcn.h,v 1.4 1999/08/22 08:58:50 dawes Exp $ */
-
-
-/* modular config.h defines VERSION as libXfont version */
-#ifdef VERSION
-#undef VERSION
-#endif
-
-#include "util.h"
-
-/* Definition of a PostScript FONT */
-typedef struct ps_font {
- char *vm_start;
- psobj FontFileName;
- psobj Subrs;
- psdict *CharStringsP;
- psdict *Private;
- psdict *fontInfoP;
-struct blues_struct *BluesP;
-} psfont;
-/***================================================================***/
-/* Routines in scan_font */
-/***================================================================***/
-
-extern boolean Init_BuiltInEncoding ( void );
-extern int scan_font ( psfont *FontP );
-/***================================================================***/
-/* Return codes from scan_font */
-/***================================================================***/
-#define SCAN_OK 0
-#define SCAN_FILE_EOF -1
-#define SCAN_ERROR -2
-#define SCAN_OUT_OF_MEMORY -3
-#define SCAN_FILE_OPEN_ERROR -4
-#define SCAN_TRUE -5
-#define SCAN_FALSE -6
-#define SCAN_END -7
-
-/***================================================================***/
-/* Name of FontInfo fields */
-/***================================================================***/
-
-#define FONTNAME 1
-#define PAINTTYPE 2
-#define FONTTYPENUM 3
-#define FONTMATRIX 4
-#define FONTBBOX 5
-#define UNIQUEID 6
-#define STROKEWIDTH 7
-#define VERSION 8
-#define NOTICE 9
-#define FULLNAME 10
-#define FAMILYNAME 11
-#define WEIGHT 12
-#define ITALICANGLE 13
-#define ISFIXEDPITCH 14
-#define UNDERLINEPOSITION 15
-#define UNDERLINETHICKNESS 16
-#define ENCODING 17
-/***================================================================***/
-/* Name of Private values */
-/***================================================================***/
-#define BLUEVALUES 1
-#define OTHERBLUES 2
-#define FAMILYBLUES 3
-#define FAMILYOTHERBLUES 4
-#define BLUESCALE 5
-#define BLUESHIFT 6
-#define BLUEFUZZ 7
-#define STDHW 8
-#define STDVW 9
-#define STEMSNAPH 10
-#define STEMSNAPV 11
-#define FORCEBOLD 12
-#define LANGUAGEGROUP 13
-#define LENIV 14
-#define RNDSTEMUP 15
-#define EXPANSIONFACTOR 16
-
-extern int SearchDictName ( psdict *dictP, psobj *keyP );
-extern struct xobject *fontfcnB ( struct XYspace *S, unsigned char *code,
- int *lenP, int *mode );
-extern Bool fontfcnA ( char *env, int *mode );
-extern void QueryFontLib ( char *env, char *infoName, pointer infoValue,
- int *rcodeP );
diff --git a/libXfont/src/Type1/fonts.h b/libXfont/src/Type1/fonts.h
deleted file mode 100644
index 7215e0f7a..000000000
--- a/libXfont/src/Type1/fonts.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* $Xorg: fonts.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-
-/* STUB */
-
-#define CopyFont(f) f
-#define UniqueFont(f) f
-#define KillFont(f)
-#define KillText(t)
-#define CopyText(t) t
-#define I_DumpText(t)
-#define CoerceText(t) t
-#define TextDelta(t,pt)
-#define XformText(p,s)
-#define GimeSpace() FALSE
-
-#define LibInit()
-#define InitFonts()
-#define InitFiles()
-#define TraceClose()
-
-#define FF_PARSE_ERROR -1
diff --git a/libXfont/src/Type1/hdigit.h b/libXfont/src/Type1/hdigit.h
deleted file mode 100644
index fbaa9c1db..000000000
--- a/libXfont/src/Type1/hdigit.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $Xorg: hdigit.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* -------------------------------------- */
-/* --- MACHINE GENERATED, DO NOT EDIT --- */
-/* -------------------------------------- */
-
-#ifndef HDIGIT
-#define HDIGIT 1
-
-/*
- * Hex Digit Value Table --
- *
- * The entries in the Digit Value Table map character codes in the set
- * {0-9,a-f,A-F} to their numeric values for readhexstring
- * (00 10...F0 for the high hex digit and 00 01...0F for the low).
- * The white-space and hex string termination characters are.
- * mapped to codes > 0xf0 to enable usage by several modules.
- * 2 tables are build HighHex and LowHex.
- *
- */
-
-/* Indicators for special characters in these tables */
-#define HERROR (0xfe)
-#define HWHITE_SPACE (0xfd)
-#define HRIGHT_ANGLE (0xfc)
-#define LAST_HDIGIT (0xf0)
-
-#define HighHexP (HighHex+1)
-unsigned char HighHex[257] = { 0xFF,
- 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80,0x90,0xFE,0xFE,0xFE,0xFE,0xFC,0xFE,
- 0xFE,0xA0,0xB0,0xC0,0xD0,0xE0,0xF0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xA0,0xB0,0xC0,0xD0,0xE0,0xF0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE
-};
-#define LowHexP (LowHex+1)
-unsigned char LowHex[257] = { 0xFF,
- 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xFE,0xFE,0xFE,0xFE,0xFC,0xFE,
- 0xFE,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
- 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE
-};
-
-#endif
diff --git a/libXfont/src/Type1/hints.c b/libXfont/src/Type1/hints.c
deleted file mode 100644
index 14deac229..000000000
--- a/libXfont/src/Type1/hints.c
+++ /dev/null
@@ -1,890 +0,0 @@
-/* $Xorg: hints.c,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/hints.c,v 1.7tsi Exp $ */
-
- /* HINTS CWEB V0006 ******** */
-/*
-:h1.HINTS Module - Processing Rasterization Hints
-
-&author. Sten F. Andler; continuity by Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com) and Duaine
-W. Pryor, Jr.
-
-
-:h3.Include Files
-
-The included files are:
-*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifdef FONTMODULE
-# include "os.h"
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "regions.h"
-#include "hints.h"
-
-/*
-:h3.Functions Provided to the TYPE1IMAGER User
-
-None.
-*/
-
-/*
-:h3.Functions Provided to Other Modules
-
-This module provides the following entry point to other modules:
-*/
-
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.Macros Provided to Other Modules
-
-None.
-*/
-
-/*
-:h2.InitHints() - Initialize hint data structure
-*/
-
-#define MAXLABEL 20
-static struct {
- int inuse;
- int computed;
- struct fractpoint hint;
-} oldHint[MAXLABEL];
-
-#define ODD(x) (((int)(x)) & 01)
-#define FPFLOOR(fp) TOFRACTPEL((fp) >> FRACTBITS)
-#define FPROUND(fp) FPFLOOR((fp) + FPHALF)
-
-void
-InitHints(void)
-{
- int i;
-
- for (i = 0; i < MAXLABEL; i++)
- {
- oldHint[i].inuse = FALSE;
- oldHint[i].computed = FALSE;
- }
-}
-
-/*
-:h3.CloseHints(hintP) - Reverse hints that are still open
-*/
-
-void
-CloseHints(struct fractpoint *hintP)
-{
- int i;
-
- for (i = 0; i < MAXLABEL; i++)
- {
- if (oldHint[i].inuse)
- {
- hintP->x -= oldHint[i].hint.x;
- hintP->y -= oldHint[i].hint.y;
-
- oldHint[i].inuse = FALSE;
- }
- }
-}
-
-/*
-:h3.ComputeHint(hP, currX, currY, hintP) - Compute the value of a hint
-*/
-
-static void
-ComputeHint(struct hintsegment *hP,
- fractpel currX, fractpel currY,
- struct fractpoint *hintP)
-{
- fractpel currRef, currWidth;
- int idealWidth;
- fractpel hintValue;
- char orientation;
-
-/*
-By construction, width is never zero. Therefore we can use the
-width value to determine if the hint has been rotated by a
-multiple of 90 degrees.
-*/
-
- if (hP->width.y == 0)
- {
- orientation = 'v'; /* vertical */
- }
- else if (hP->width.x == 0)
- {
- orientation = 'h'; /* horizontal */
- }
- else
- {
- hintP->x = hintP->y = 0;
- return;
- }
-
- /* Compute currRef and currWidth with a unit of 1 pel */
- if (orientation == 'v') /* vertical */
- {
- currRef = hP->ref.x + currX;
- currWidth = ABS(hP->width.x);
- }
- else if (orientation == 'h') /* horizontal */
- {
- currRef = hP->ref.y + currY;
- currWidth = ABS(hP->width.y);
- }
- else /* error */
- {
- Abort("ComputeHint: invalid orientation");
- }
-
- if ((hP->hinttype == 'b') /* Bar or stem */
- || (hP->hinttype == 's')) /* Serif */
- {
- idealWidth = NEARESTPEL(currWidth);
- if (idealWidth == 0) idealWidth = 1;
- if (ODD(idealWidth)) /* Is ideal width odd? */
- {
- /* center "ref" over pel */
- hintValue = FPFLOOR(currRef) + FPHALF - currRef;
- }
- else
- {
- /* align "ref" on pel boundary */
- hintValue = FPROUND(currRef) - currRef;
- }
- }
- else if (hP->hinttype == 'c') /* Curve extrema */
- {
- /* align "ref" on pel boundary */
- hintValue = FPROUND(currRef) - currRef;
- }
- else /* error */
- {
- Abort("ComputeHint: invalid hinttype");
- }
-
- if (orientation == 'v') /* vertical */
- {
- hintP->x = hintValue;
- hintP->y = 0;
- }
- else if (orientation == 'h') /* horizontal */
- {
- hintP->x = 0;
- hintP->y = hintValue;
- }
- else /* error */
- {
- Abort("ComputeHint: invalid orientation");
- }
-}
-
-/*
-:h3.ProcessHint(hP, currX, currY, hintP) - Process a rasterization hint
-*/
-
-void
-ProcessHint(struct hintsegment *hP,
- fractpel currX, fractpel currY,
- struct fractpoint *hintP)
-{
- struct fractpoint thisHint;
-
- if ((hP->adjusttype == 'm') /* Move */
- || (hP->adjusttype == 'a')) /* Adjust */
- {
- /* Look up hint in oldHint table */
- if ((hP->label >= 0) && (hP->label < MAXLABEL))
- {
- if (oldHint[hP->label].computed)
- /* Use old hint value if already computed */
- {
- thisHint.x = oldHint[hP->label].hint.x;
- thisHint.y = oldHint[hP->label].hint.y;
- oldHint[hP->label].inuse = TRUE;
- }
- else
- /* Compute new value for hint and store it for future use */
- {
- ComputeHint(hP, currX, currY, &thisHint);
-
- oldHint[hP->label].hint.x = thisHint.x;
- oldHint[hP->label].hint.y = thisHint.y;
- oldHint[hP->label].inuse = TRUE;
- oldHint[hP->label].computed = TRUE;
- }
- }
- else /* error */
- {
- Abort("ProcessHint: invalid label");
- }
- }
- else if (hP->adjusttype == 'r') /* Reverse */
- {
- /* Use the inverse of the existing hint value to reverse hint */
- if ((hP->label >= 0) && (hP->label < MAXLABEL))
- {
- if (oldHint[hP->label].inuse)
- {
- thisHint.x = -oldHint[hP->label].hint.x;
- thisHint.y = -oldHint[hP->label].hint.y;
- oldHint[hP->label].inuse = FALSE;
- }
- else /* error */
- {
- Abort("ProcessHint: label is not in use");
- }
- }
- else /* error */
- {
- Abort("ProcessHint: invalid label");
- }
-
- }
- else /* error */
- {
- Abort("ProcessHint: invalid adjusttype");
- }
-
- hintP->x += thisHint.x;
- hintP->y += thisHint.y;
-}
-
-/*
-:h2 id=subpath.Navigation Through Edge Lists
-
-For continuity checking purposes, we need to navigate through edge
-lists by the "subpath" chains and answer questions about edges. The
-subpath chain links together edges that were part of the same subpath
-(no intervening move segments) when the interior of the path was
-calculated. Here we use the term "edge" to mean every edge list
-that was created in between changes of direction.
-
-The subpath chains are singly-linked circular chains. For the convenience
-of building them, they direction of the list (from edge to edge) is the
-reverse of the order in which they were built. Within any single edge,
-the subpath chain goes from top-to-bottom. (There might be a violation
-of this because of the way the user started the first chain; see
-:hdref refid=fixsubp..).
-
-:h3.ISTOP() and ISBOTTOM() - Flag Bits for Edge Lists at the Top and
-Bottom of Their SubPaths
-*/
-
-#define ISTOP(flag) ((flag)&0x20)
-#define ISBOTTOM(flag) ((flag)&0x10)
-/*
-:h3.ISLEFT() - Flag Bit for Left Edges
-*/
-
-#define ISLEFT(flag) ((flag)&0x08)
-
-/*
-:h3.XofY() - Macro to Find X Value at Given Y
-
-This macro can only be used if it is known that the Y is within the
-given edgelist's ymin and ymax.
-*/
-
-#define XofY(edge, y) edge->xvalues[y - edge->ymin]
-
-/*
-:h3.findXofY() - Like XofY(), Except not Restricted
-
-If the Y is out of bounds of the given edgelist, this macro will
-call SearchXofY to search the edge's subpath chain for the correct
-Y range. If the Y value is off the edge, MINPEL is returned.
-*/
-#define findXofY(edge, y) ((y < edge->ymin || y >= edge->ymax) ? SearchXofY(edge, y) : XofY(edge, y))
-
-/*
-:h4.SearchXofY() - Routine Called by FindXofY() for Difficult Cases
-
-The concept of this routine is to follow the subpath chain to find the
-edge just below (i.e., next in chain) or just above (i.e., immediately
-before in chain. It is assumed that the Y value is no more than one
-off of the edge's range; XofY() could be replace by FindXofY() to
-call ourselves recursively if this were not true.
-*/
-
-static pel
-SearchXofY(register struct edgelist *edge, /* represents edge */
- register pel y) /* 'y' value to find edge for */
-{
- register struct edgelist *e; /* loop variable */
-
- if (y < edge->ymin) {
- if (ISTOP(edge->flag))
- return(MINPEL);
- for (e = edge->subpath; e->subpath != edge; e = e->subpath) { ; }
- if (e->ymax == edge->ymin)
- return(XofY(e, y));
- }
- else if (y >= edge->ymax) {
- if (ISBOTTOM(edge->flag))
- return(MINPEL);
- e = edge->subpath;
- if (e->ymin == edge->ymax)
- return(XofY(e, y));
- }
- else
- return(XofY(edge, y));
-
- Abort("bad subpath chain");
- /*NOTREACHED*/
-}
-/*
-:h3.ISBREAK() Macro - Tests if an Edge List is at a "Break"
-
-The subpath chains are organized top to bottom. When the bottom of
-a given edge is reached, the subpath chain points to the top of the
-next edge. We call this a "break" in the chain. The following macro
-is the simple test for the break condition:
-*/
-
-#define ISBREAK(top,bot) (top->ymax != bot->ymin)
-
-
-/*
-:h3.ImpliedHorizontalLine() - Tests for Horizontal Connectivity
-
-This function returns true if two edges are connected horizontally.
-They are connected horizontally if they are consecutive in the subpath,
-and either we are at the bottom and the first edge is going down or we
-are at the top and the first edge is going up.
-*/
-
-#define BLACKABOVE -1
-#define BLACKBELOW +1
-#define NONE 0
-
-static int
-ImpliedHorizontalLine(struct edgelist *e1, /* two edges to check */
- struct edgelist *e2,
- int y) /* y where they might be connected */
-{
- register struct edgelist *e3,*e4;
-
- if (ISDOWN(e1->flag) == ISDOWN(e2->flag))
- return(NONE); /* can't be consecutive unless different directions */
-/*
-Now we check for consecutiveness: Can we get from 'e1' to 'e2' with
-only one intervening break? Can we get from 'e2' to 'e1' with only one
-intervening break? 'e3' will be as far as we can get after 'e1'; 'e4'
-will be has far as we can get after 'e2':
-*/
- for (e3 = e1; !ISBREAK(e3, e3->subpath); e3 = e3->subpath) { ; }
- for (e3 = e3->subpath; e3 != e2; e3 = e3->subpath)
- if (ISBREAK(e3, e3->subpath))
- break;
-
- for (e4 = e2; !ISBREAK(e4, e4->subpath); e4 = e4->subpath) { ; }
- for (e4 = e4->subpath; e4 != e1; e4 = e4->subpath)
- if (ISBREAK(e4, e4->subpath))
- break;
-/*
-If the edges are mutually consecutive, we must have horizontal lines
-both top and bottom:
-*/
- if (e3 == e2 && e4 == e1)
- return(TRUE);
-/*
-If the edges are not consecutive either way, no horizontal lines are
-possible:
-*/
- if (e3 != e2 && e4 != e1)
- return(NONE);
-/*
-Now let's swap 'e1' and 'e2' if necessary to enforce the rule that 'e2'
-follows 'e1'. Remember that subpath chains go in the opposite direction
-from the way the subpaths were built; this led to the simplest way
-do build them.
-*/
- if (e4 != e1) {
- e2 = e1;
- e1 = e3; /* remember e3 == e2, this just swaps 'e1' and 'e2' */
- }
-/*
-Now we have everything to return the answer:
-*/
- if (ISTOP(e1->flag) && y == e1->ymin)
- return(ISDOWN(e2->flag));
- else if (ISBOTTOM(e1->flag) && y == e1->ymax)
- return(!ISDOWN(e2->flag));
- else
- Abort("ImpliedHorizontalLine: why ask?");
- /*NOTREACHED*/
-}
-
-/*
-:h3 id=fixsubp.FixSubPaths() - Must be Called to Organize Subpath Chains
-
-The region-building code in Interior(), in particular splitedge(),
-maintains the rule that sub-paths are linked top-to-bottom except
-at breaks. However, it is possible that there may be a "false break"
-because the user started the subpath in the middle of an edge (and
-went in the "wrong" direction from there, up instead of down). This
-routine finds and fixes false breaks.
-
-Also, this routine sets the ISTOP and ISBOTTOM flags in the edge lists.
-*/
-
-static void
-FixSubPaths(struct region *R) /* anchor of region */
-{
- register struct edgelist *e; /* fast loop variable */
- register struct edgelist *edge; /* current edge in region */
- register struct edgelist *next; /* next in subpath after 'edge' */
- register struct edgelist *break1; /* first break after 'next' */
- register struct edgelist *break2 = NULL; /* last break before 'edge' */
- register struct edgelist *prev; /* previous edge for fixing links */
- int left = TRUE;
-
- for (edge = R->anchor; edge != NULL; edge = edge->link) {
-
- if (left)
- edge->flag |= ISLEFT(ON);
- left = !left;
-
- next = edge->subpath;
-
- if (!ISBREAK(edge, next))
- continue;
- if (edge->ymax < next->ymin)
- Abort("disjoint subpath?");
-/*
-'edge' now contains an edgelist at the bottom of an edge, and 'next'
-contains the next subsequent edgelist in the subpath, which must be at
-the top. We refer to this a "break" in the subpath.
-*/
- next->flag |= ISTOP(ON);
- edge->flag |= ISBOTTOM(ON);
-
- if (ISDOWN(edge->flag) != ISDOWN(next->flag))
- continue;
-/*
-We are now in the unusual case; both edges are going in the same
-direction so this must be a "false break" due to the way that the user
-created the path. We'll have to fix it.
-*/
- for (break1 = next; !ISBREAK(break1, break1->subpath); break1 = break1->subpath) { ; }
-
- for (e = break1->subpath; e != edge; e = e->subpath)
- if (ISBREAK(e, e->subpath))
- break2 = e;
-/*
-Now we've set up 'break1' and 'break2'. I've found the following
-diagram invaluable. 'break1' is the first break after 'next'. 'break2'
-is the LAST break before 'edge'.
-&drawing.
- next
- +------+ +---->+------+
- +--->| >-----+ | | >-----+
- | | | | | | | |
- | +-------------+ | +-------------+
- | | |break1| | | | |
- | +->| >-------+ +->| >-----+
- | | | | | |
- | | | +-------------+
- | +------+ | | |
- | +----------------+ | | |
- | | +------+ | +->| >-----+
- | +->| >-----+ | | | |
- | | | | | +-------------+
- | +-------------+ | | | |
- | | |edge | | | |break2|
- | +->| >-----+ | +->| >-----+
- | | | | | | | |
- | | | | | | | |
- | | | | | | | |
- | +------+ | | +------+ |
- | | | |
- +---------------+ +---------------+
-
-&edrawing.
-We want to fix this situation by having 'edge' point to where 'break1'
-now points, and having 'break1' point to where 'break2' now points.
-Finally, 'break2' should point to 'next'. Also, we observe that
-'break1' can't be a bottom, and is also not a top unless it is the same
-as 'next':
-*/
- edge->subpath = break1->subpath;
-
- break1->subpath = break2->subpath;
- if (ISBREAK(break1, break1->subpath))
- Abort("unable to fix subpath break?");
-
- break2->subpath = next;
-
- break1->flag &= ~ISBOTTOM(ON);
- if (break1 != next)
- break1->flag &= ~ISTOP(ON);
- }
-/*
-This region might contain "ambiguous" edges; edges exactly equal to
-edge->link. Due to the random dynamics of where they get sorted into
-the list, they can yield false crossings, where the edges appear
-to cross. This confuses our continuity logic no end. Since we can
-swap them without changing the region, we do.
-*/
- for (edge = R->anchor, prev = NULL; VALIDEDGE(edge); prev = edge, edge = prev->link) {
-
- if (! ISAMBIGUOUS(edge->flag))
- continue;
-
- next = edge->subpath;
-
- while (ISAMBIGUOUS(next->flag) && next != edge)
- next = next->subpath;
-/*
-We've finally found a non-ambiguous edge; we make sure it is left/right
-compatible with 'edge':
-*/
- if ( (ISLEFT(edge->flag) == ISLEFT(next->flag) && ISDOWN(edge->flag) == ISDOWN(next->flag) )
- || (ISLEFT(edge->flag) != ISLEFT(next->flag) && ISDOWN(edge->flag) != ISDOWN(next->flag) ) )
- continue;
-
-/*
-Incompatible, we will swap 'edge' and the following edge in the list.
-You may think that there must be a next edge in this swath. So did I.
-No! If there is a totally ambiguous inner loop, for example, we could
-get all the way to the outside without resolving ambiguity.
-*/
- next = edge->link; /* note new meaning of 'next' */
- if (next == NULL || edge->ymin != next->ymin)
- continue;
- if (prev == NULL)
- R->anchor = next;
- else
- prev->link = next;
- edge->link = next->link;
- next->link = edge;
- edge->flag ^= ISLEFT(ON);
- edge->flag &= ~ISAMBIGUOUS(ON);
- next->flag ^= ISLEFT(ON);
- next->flag &= ~ISAMBIGUOUS(ON);
- edge = next;
- }
-}
-/*
-:h3.DumpSubPaths()
-
-A debug tool.
-*/
-
-static struct edgelist *before(struct edgelist *e); /* subroutine of DumpSubPaths */
-
-static void
-DumpSubPaths(struct edgelist *anchor)
-{
-
- register struct edgelist *edge,*e,*e2;
- pel y;
-
- for (edge = anchor; VALIDEDGE(edge); edge = edge->link) {
- if (ISPERMANENT(edge->flag))
- continue;
- for (e2 = edge; !ISPERMANENT(e2->flag);) {
- if (ISDOWN(e2->flag)) {
- for (e = e2;; e = e->subpath) {
- for (y=e->ymin+1; y < e->ymax; y++)
- e->flag |= ISPERMANENT(ON);
- if (ISBREAK(e, e->subpath))
- break;
- }
- }
- else {
- for (e = e2; !ISBREAK(e, e->subpath); e = e->subpath) { ; }
- for (;; e=before(e)) {
- for (y=e->ymax-2; y >= e->ymin; y--)
- e->flag |= ISPERMANENT(ON);
- if (e == e2)
- break;
- }
- }
- do {
- e2 = before(e2);
- } while (!ISBREAK(before(e2), e2));
- }
- }
-}
-
-static struct edgelist *
-before(struct edgelist *e)
-{
- struct edgelist *r;
- for (r = e->subpath; r->subpath != e; r = r->subpath) { ; }
- return(r);
-}
-
-/*
-:h2.Fixing Region Continuity Problems
-
-Small regions may become disconnected when their connecting segments are
-less than a pel wide. This may be correct in some applications, but in
-many (especially small font characters), it is more pleasing to keep
-connectivity. ApplyContinuity() (invoked by +CONTINUITY on the
-Interior() fill rule) fixes connection breaks. The resulting region
-is geometrically less accurate, but may be more pleasing to the eye.
-*/
-/*
-Here are some macros which we will need:
-*/
-
-#define IsValidPel(j) (j!=MINPEL)
-
-/*
-:h3.writeXofY() - Stuffs an X Value Into an "edgelist"
-
-writeXofY writes an x value into an edge at position 'y'. It must
-update the edge's xmin and xmax. If there is a possibility that this
-new x might exceed the region's bounds, updating those are the
-responsibility of the caller.
-*/
-
-static void
-writeXofY(struct edgelist *e,/* relevant edgelist */
- int y, /* y value */
- int x) /* new x value */
-{
- if (e->xmin > x) e->xmin = x;
- if (e->xmax < x) e->xmax = x;
- e->xvalues[y - e->ymin] = x;
-}
-
-/*-------------------------------------------------------------------------*/
-/* the following three macros tell us whether we are at a birth point, a */
-/* death point, or simply in the middle of the character */
-/*-------------------------------------------------------------------------*/
-#define WeAreAtTop(e,i) (ISTOP(e->flag) && e->ymin == i)
-#define WeAreAtBottom(e,i) (ISBOTTOM(e->flag) && e->ymax-1 == i)
-#define WeAreInMiddle(e,i) \
- ((!ISTOP(e->flag) && !ISBOTTOM(e->flag))||(i < e->ymax-1 && i > e->ymin))
-/*
-The following macro tests if two "edgelist" structures are in the same
-swath:
-*/
-#define SAMESWATH(e1,e2) (e1->ymin == e2->ymin)
-
-/*
-:h3.CollapseWhiteRun() - Subroutine of ApplyContinuity()
-
-When we have a white run with an implied horizontal line above or
-below it, we better have black on the other side of this line. This
-function both tests to see if black is there, and adjusts the end
-points (collapses) the white run as necessary if it is not. The
-goal is to collapse the white run as little as possible.
-*/
-
-static void
-CollapseWhiteRun(struct edgelist *anchor, /* anchor of edge list */
- pel yblack, /* y of (hopefully) black run above or below */
- struct edgelist *left, /* edgelist at left of WHITE run */
- struct edgelist *right, /* edgelist at right of WHITE run */
- pel ywhite) /* y location of white run */
-{
- struct edgelist *edge;
- struct edgelist *swathstart = anchor;
- register pel x;
-
- if (XofY(left, ywhite) >= XofY(right, ywhite))
- return;
-/*
-Find the swath with 'yblack'. If we don't find it, completely collapse
-the white run and return:
-*/
- while (VALIDEDGE(swathstart)) {
- if (yblack < swathstart->ymin) {
- writeXofY(left, ywhite, XofY(right, ywhite));
- return;
- }
- if (yblack < swathstart->ymax) break;
- swathstart = swathstart->link->link;
- }
- if(!VALIDEDGE(swathstart)) {
- writeXofY(left, ywhite, XofY(right, ywhite));
- return;
- }
-/*
-Now we are in the swath that contains 'y', the reference line above
-or below that we are trying to maintain continuity with. If black
-in this line begins in the middle of our white run, we must collapse
-the white run from the left to that point. If black ends in the
-middle of our white run, we must collapse the white run from the right
-to that point.
-*/
- for (edge = swathstart; VALIDEDGE(edge); edge = edge->link) {
-
- if (!SAMESWATH(swathstart,edge))
- break;
- if( XofY(edge, yblack) > XofY(left, ywhite)) {
- if (ISLEFT(edge->flag)) {
- x = XofY(edge, yblack);
- if (XofY(right, ywhite) < x)
- x = XofY(right, ywhite);
- writeXofY(left, ywhite, x);
- }
- else {
- x = XofY(edge, yblack);
- while (edge->link != NULL && SAMESWATH(edge, edge->link)
- && x >= XofY(edge->link, yblack) ) {
- edge = edge->link->link;
- x = XofY(edge, yblack);
- }
- if (x < XofY(right, ywhite))
- writeXofY(right, ywhite, x);
- return;
- }
- }
- }
- writeXofY(left, ywhite, XofY(right, ywhite));
-}
-
-/*
-:h3.ApplyContinuity() - Fix False Breaks in a Region
-
-This is the externally visible routine called from the REGIONS module
-when the +CONTINUITY flag is on the Interior() fill rule.
-*/
-
-void
-ApplyContinuity(struct region *R)
-{
- struct edgelist *left;
- struct edgelist *right;
- struct edgelist *edge,*e2;
- pel rightXabove,rightXbelow,leftXabove,leftXbelow;
- pel leftX,rightX;
- int i;
- long newcenter,abovecenter,belowcenter;
-
- FixSubPaths(R);
- if (RegionDebug >= 3)
- DumpSubPaths(R->anchor);
- left = R->anchor;
-/* loop through and do all of the easy checking. ( no tops or bottoms) */
- while(VALIDEDGE(left))
- {
- right = left->link;
- for(i=left->ymin;i<left->ymax;++i)
- {
- leftX = findXofY(left,i);
- rightX = findXofY(right,i);
- leftXbelow = findXofY(left,i+1);
- rightXbelow = findXofY(right,i+1);
- if(rightX <= leftX)
- {
-/* then, we have a break in a near vertical line */
- leftXabove = findXofY(left,i-1);
- rightXabove = findXofY(right,i-1);
- if( IsValidPel(leftXabove) && IsValidPel(rightXabove) )
- {
- abovecenter = leftXabove + rightXabove;
- }
- else
- {
- abovecenter = leftX + rightX;
- }
- if( IsValidPel(leftXbelow) && IsValidPel(rightXbelow) )
- {
- belowcenter = leftXbelow + rightXbelow;
- }
- else
- {
- belowcenter = leftX + rightX;
- }
- newcenter = abovecenter + belowcenter;
- if( newcenter > 4*leftX )
- {
- rightX = rightX + 1;
- }
- else if( newcenter < 4*leftX)
- {
- leftX = leftX - 1;
- }
- else
- {
- rightX = rightX + 1;
- }
- writeXofY(right,i,rightX);
- writeXofY(left,i,leftX);
- if(rightX > R->xmax) {R->xmax = rightX;}
- if(leftX < R->xmin) {R->xmin = leftX;}
- }
- if( !WeAreAtBottom(left,i) && (leftXbelow>=rightX))
- {
-/* then we have a break in a near horizontal line in the middle */
- writeXofY(right,i,leftXbelow);
- }
- if( !WeAreAtBottom(right,i) && (leftX >=rightXbelow))
- {
-/* then we have a break in a near horizontal line in the middle */
- writeXofY(left,i,rightXbelow);
- }
- }
- left = right->link;
- }
-/*
-There may be "implied horizontal lines" between edges that have
-implications for continuity. This loop looks for white runs that
-have implied horizontal lines on the top or bottom, and calls
-CollapseWhiteRuns to check and fix any continuity problems from
-them.
-*/
- for (edge = R->anchor; VALIDEDGE(edge); edge = edge->link) {
- if ((!ISTOP(edge->flag) && !ISBOTTOM(edge->flag)) || ISLEFT(edge->flag))
- continue; /* at some future date we may want left edge logic here too */
- for (e2 = edge->link; VALIDEDGE(e2) && SAMESWATH(edge,e2); e2 = e2->link) {
- if (ISTOP(e2->flag) && ISTOP(edge->flag)
- && NONE != ImpliedHorizontalLine(edge,e2,edge->ymin)) {
- if (ISLEFT(e2->flag))
- CollapseWhiteRun(R->anchor, edge->ymin-1,
- edge, e2, edge->ymin);
- }
- if (ISBOTTOM(e2->flag) && ISBOTTOM(edge->flag)
- && NONE != ImpliedHorizontalLine(edge,e2, edge->ymax)) {
- if (ISLEFT(e2->flag))
- CollapseWhiteRun(R->anchor, edge->ymax,
- edge, e2, edge->ymax-1);
- }
- }
- }
-}
-
-
-
-
diff --git a/libXfont/src/Type1/hints.h b/libXfont/src/Type1/hints.h
deleted file mode 100644
index 8e2ae2ade..000000000
--- a/libXfont/src/Type1/hints.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* $Xorg: hints.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/hints.h,v 1.3 1999/08/22 08:58:51 dawes Exp $ */
-
-/*SHARED*/
-
-#define InitHints t1_InitHints
-extern void t1_InitHints ( void ); /* Initialize hint data structure */
-
-#define CloseHints(hintP) t1_CloseHints(hintP)
-/* Reverse hints that are still open */
-extern void t1_CloseHints ( struct fractpoint *hintP );
-
-#define ProcessHint(hP, currX, currY, hintP) t1_ProcessHint(hP, currX, currY, hintP)
-/* Process a rasterization hint */
-extern void t1_ProcessHint ( struct hintsegment *hP, fractpel currX, fractpel currY, struct fractpoint *hintP );
-
-#define ApplyContinuity(R) t1_ApplyContinuity(R)
-/* fix false connection breaks in a region */
-extern void t1_ApplyContinuity ( struct region *R );
-
-/*END SHARED*/
diff --git a/libXfont/src/Type1/lines.c b/libXfont/src/Type1/lines.c
deleted file mode 100644
index 72fb79f97..000000000
--- a/libXfont/src/Type1/lines.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* $Xorg: lines.c,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/lines.c,v 1.4tsi Exp $ */
-
- /* LINES CWEB V0003 ******** */
-/*
-:h1.LINES Module - Rasterizing Lines
-
-&author. Duaine W. Pryor, Jr. and Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
-
-
-:h3.Include Files
-
-The included files are:
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "regions.h"
-#include "lines.h"
-
-/*
-:h3.Functions Provided to the TYPE1IMAGER User
-
-None.
-*/
-
-/*
-:h3.Functions Provided to Other Modules
-
-This module provides the following entry point to other modules:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.Macros Provided to Other Modules
-
-None.
-*/
-
-/*
-:h3.Bresenham() - Actually Produces Run Ends
-
-This routine runs a Bresenham line-stepping
-algorithm. See, for example, Newman and Sproul, :hp1/Principles
-of Interactive Computer Graphics/, pp. 25-27.
-When we enter this, we
-are guaranteed that dy is positive.
-We'd like to work in 8 bit precision, so we'll define some macros and
-constants to let us do that:
-*/
-
-#define PREC 8 /* we'll keep fraction pels in 8 bit precision */
-/*
-RoundFP() rounds down by 'b' bits:
-*/
-#define RoundFP(xy,b) (((xy)+(1<<((b)-1)))>>(b))
-
-/*
-TruncFP() truncates down by 'b' bits:
-*/
-#define TruncFP(xy,b) ((xy)>>(b))
-
-
-static void
-Bresenham(pel *edgeP, fractpel x1, fractpel y1, fractpel x2, fractpel y2)
-{
- register long dx,dy; /* change in x and y, in my own precision */
- register long x,y; /* integer pel starting point */
- register int count; /* integer pel delta y */
- register long d; /* the Bresenham algorithm error term */
-
- x1 = TruncFP(x1, FRACTBITS-PREC);
- y1 = TruncFP(y1, FRACTBITS-PREC);
- x2 = TruncFP(x2, FRACTBITS-PREC);
- y2 = TruncFP(y2, FRACTBITS-PREC);
-
- dx = x2 - x1;
- dy = y2 - y1;
-/*
-Find the starting x and y integer pel coordinates:
-*/
-
- x = RoundFP(x1,PREC);
- y = RoundFP(y1,PREC);
- edgeP += y;
- count = RoundFP(y2,PREC) - y;
-/*------------------------------------------------------------------*/
-/* Force dx to be positive so that dfy will be negative */
-/* this means that vertical moves will decrease d */
-/*------------------------------------------------------------------*/
- if (dx<0)
- {
- dx = -dx;
-#define P PREC
- d=(dy*(x1-(x<<P)+(1<<(P-1)))-dx*((y<<P)-y1+(1<<(P-1))))>>P;
-#undef P
- while(--count >= 0 )
- {
- while(d<0)
- {
- --x;
- d += dy;
- }
- *(edgeP++) = x;
- d -= dx;
- }
- }
- else /* positive dx */
- {
-#define P PREC
- d = (dy*((x<<P)-x1+(1<<(P-1)))-dx*((y<<P)-y1+(1<<(P-1))))>>P;
-#undef P
- while(--count >= 0 )
- {
- while(d<0)
- {
- ++x;
- d += dy;
- }
- *(edgeP++) = x;
- d -= dx;
- }
- }
-}
-
-/*
-:h2.StepLine() - Produces Run Ends for a Line After Checks
-
-The main work is done by Bresenham(); here we just perform checks and
-get the line so that its Y direction is always increasing:
-*/
-
-void StepLine(R, x1, y1, x2, y2)
- register struct region *R; /* region being built */
- register fractpel x1,y1; /* starting point */
- register fractpel x2,y2; /* ending point */
-{
- register fractpel dy;
-
- dy = y2 - y1;
-
-/*
-We execute the "GOING_TO" macro to call back the REGIONS module, if
-necessary (like if the Y direction of the edge has changed):
-*/
- GOING_TO(R, x1, y1, x2, y2, dy);
-
- if (dy == 0)
- return;
-
- if (dy < 0)
- Bresenham(R->edge, x2, y2, x1, y1);
- else
- Bresenham(R->edge, x1, y1, x2, y2);
- return;
-}
diff --git a/libXfont/src/Type1/lines.h b/libXfont/src/Type1/lines.h
deleted file mode 100644
index 4efe5a689..000000000
--- a/libXfont/src/Type1/lines.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* $Xorg: lines.h,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/lines.h,v 1.3 1999/08/22 08:58:52 dawes Exp $ */
-
-/*SHARED*/
-
-#define StepLine(R,x1,y1,x2,y2) t1_StepLine(R,x1,y1,x2,y2)
-
-extern void t1_StepLine ( struct region *R, fractpel x1, fractpel y1, fractpel x2, fractpel y2 );
-
-/*END SHARED*/
diff --git a/libXfont/src/Type1/objects.c b/libXfont/src/Type1/objects.c
deleted file mode 100644
index 7a49bcbba..000000000
--- a/libXfont/src/Type1/objects.c
+++ /dev/null
@@ -1,944 +0,0 @@
-/* $Xorg: objects.c,v 1.3 2000/08/17 19:46:30 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/objects.c,v 1.10tsi Exp $ */
- /* OBJECTS CWEB V0025 ******** */
-/*
-:h1.OBJECTS Module - TYPE1IMAGER Objects Common Routines
-
-This module defines and implements the C structures that represent
-objects in the TYPE1IMAGER. All common routines for manipulating these
-objects are defined in this module. Specific routines for
-specific objects are defined in the modules that deal with that
-object type.
-
-
-&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
-
-
-:h3.Include Files
-
-The included files are:
-*/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#define GLOBALS 1 /* see :hdref refid=debugvar. */
-/*
-The following two includes are C standards; we include them because we
-use 'toupper' and the 'str'-type functions in this module. Potentially
-these may be defined as macros; if these ".h" files do not exist on your
-system it is a pretty safe bet that these are external entry points and
-you do do not need to include these header files.
-*/
-
-#ifndef FONTMODULE
-#include <string.h>
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#else
-#include "Xdefs.h" /* Bool declaration */
-#include "Xmd.h" /* INT32 declaration */
-#include "os.h"
-#include "xf86_ansic.h"
-#endif
-
-/*
-override incorrect system functions; for example you might define
-a macro for "strcpy" that diverts it to "my_strcpy".
-*/
-
- /* moved these includes from above the */
- /* was included first (it contains com- */
- /* piler defines). dsr 081291 */
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "regions.h"
-#include "fonts.h"
-#include "pictures.h"
-#include "strokes.h"
-#include "cluts.h"
-
-static char LineIOTrace INITIALIZED(TRUE);
-static char MustCrash INITIALIZED(TRUE);
-static char *TypeFmt(int type);
-
-/*
-:h3.The "pointer" Macro - Define a Generic Pointer
-
-Sadly, many compilers will give a warning message when a pointer to
-one structure is assigned to a pointer to another. We've even seen
-some that give severe errors (when the wrong pointer type is used as
-an initializer or returned from a function). TYPE1IMAGER has routines
-like Dup and Allocate that are perfectly willing to duplicate or
-allocate any of a number of different types of structures. How to
-declare them in a truely portable way?
-
-Well, there is no single good answer that I've found. You can always
-beg the question and "cast" everything. I find this distracting and the
-resulting code ugly. On the other hand, we have found at least one
-compiler that will accept "void *" as a generic pointer that can
-assigned to any other pointer type without error or warning (apparently
-this is also the ANSI standard). So, we define "void *" to be a generic
-pointer. (You might have to change this for your compiler; the "ifndef"
-allows the change to be made on the command line if you want.)
-:i1/portability assumptions/
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Functions Provided to the TYPE1IMAGER User
-
-This module provides the following TYPE1IMAGER entry points:
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-Note that entry points that are intended for use external to TYPE1IMAGER
-begin with the characters :q/xi/. Macros are used to make the names
-more mnemonic.
-*/
-
-/*
-:h3.Functions Provided to Other Modules
-
-This module provides the following functions for other modules:
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-Note that entry points that intended for use within TYPE1IMAGER, but
-which must be global because they are used across module boundaries,
-begin with the characters :q/I_/. Macros are used to make the names
-more mnemonic.
-
-Entry points totally within a module use mnemonic names and are
-declared :hp2/static/. One of the compilers I used had a bug when
-static functions were passed as addresses. Thus, some functions
-which are logically "static" are not so declared.
-
-Note also the trick of declaring routines, like Consume(), with a
-variable number of arguments. To avoid the restrictions on variable
-numbers of arguments in the macro processor, we just replace the
-text 'Consume' with 'I_Consume'.
-*/
-/*
-:h3.Macros Provided to Other Modules
-
-This is the module where we define all the useful constants like
-TRUE, FALSE, and NULL, and simple expressions like MIN(), MAX(), and ABS().
-We might as well get to it right here:
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-Notice that upper case is used for constant values and macro
-definitions. I generally follow that convention.
-
-Many more global macros are defined later in this module.
-*/
-/*
-:h2.Basic TYPE1IMAGER Object Structure
-
-All TYPE1IMAGER objects which are available to the user have a common
-header. This header is defined below:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-The following define is an attempt to centralize the definition of the
-common xobject data shared by structures that are derived from the
-generic xobject structure. For example, the structure font, defined in
-fonts.shr :
-&code.
- struct font {
- char type;
- char flag;
- int references;
- ... other data types & structs ...
- }
-&ecode.
-would now be defined as:
-&code.
- struct font {
- XOBJ_COMMON
- ... other data types & structs ...
- }
-&ecode.
-Thus we have a better-structured inheritance mechanism. 3-26-91 PNM
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Object Type Definitions
-
-These constants define the values which go in the 'type' field of
-an TYPE1IMAGER object structure:
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Flag Byte Definitions
-
-Many programmers define flag bits as a mask (for example, 0x04), and
-test, set, and reset them as follows:
-
-&code.
- if ((flag & PERMANENT) != 0)
-
- flag |= PERMANENT;
- flag &= &inv.PERMANENT;
-:exmp.
-
-I favor a style where the 'if' statement can ask a question:
-
-&code.
- if (ISPERMANENT(flag))
-
- flag |= ISPERMANENT(ON);
- flag &= &inv.ISPERMANENT(ON);
-
-:exmp.
-This said, we now define two bit settings of the flag byte of the
-object. "ISPERMANENT" will be set by the user, when he calls
-Permanent(). "ISIMMORTAL" will be used for compiled-in objects
-that we don't want the user to ever destroy.
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-Flag bit definitions that apply to all objects are assigned
-starting with the least significant (0x01) bit. Flag bit definitions
-specific to a certain object type are assigned starting with the
-most significant (0x80) bit. We hope they never meet.
-*/
-/*
-:h3 id=preserve.PRESERVE() Macro
-
-Occasionally an TYPE1IMAGER operator is implemented by calling other
-TYPE1IMAGER operators. For example, Arc2() calls Conic(). When we
-call more than one operator as a subroutine, we have to be careful
-of temporary objects. A temporary object will be consumed by the
-subroutine operator and then is no longer available for the caller.
-This can be prevented simply by bumping a temporary object's reference
-count.
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.RefRoll() Macro to Detect References Count Rollover
-
-The following macro is designed to check for reference count rollover.
-A return value of TRUE means rollover has not occurred; a return value
-of FALSE means we cannot increment the reference count. Note also that
-those functions that use this macro must decrement the reference count
-afterwards. 3-26-91 PNM
-*/
-
-#define RefRoll(obj) (++(obj)->references > 0)
-
-/*
-:h2.TYPE1IMAGER Object Functions
-
-:h3.LONGCOPY() - Macro to Copy "long" Aligned Data
-
-Copying arbitrary bytes in C is a bit of a problem. "strcpy" can't be
-used, because 0 bytes are special-cased. Most environments have a
-routine "memcopy" or "bcopy" or "bytecopy" that copies memory containing
-zero bytes. Sadly, there is no standard on the name of such a routine,
-which makes it impossible to write truely portable code to use it.
-
-It turns out that TYPE1IMAGER, when it wants to copy data, frequently
-knows that both the source and destination are aligned on "long"
-boundaries. This allows us to copy by using "long *" pointers. This
-is usually very efficient on almost all processors. Frequently, it
-is more efficient than using general-purpose assembly language routines.
-So, we define a macro to do this in a portable way. "dest" and "source"
-must be long-aligned, and "bytes" must be a multiple of "sizeof(long)":
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Allocate() - Allocating a Memory Block
-
-Allocate returns a pointer to memory object that is a copy of
-the template passed (if any). In addition, extra bytes may be
-allocated contiguously with the object. (This may be useful for
-variable size objects such as edge lists. See :hdref refid=regions..)
-
-Allocate() always returns a non-immortal object, even if the template is
-immortal. Therefore a non-NULL template must have a "flag" byte.
-
-If the template is NULL, then 'size' bytes are cleared to all NULLs.
-
-If the template is non-NULL, a new object is allocated in memory.
-It therefore seems logical that its reference count field should be
-set to 1. So, a nun-NULL template must also have a "references" field.
-PNM 3-26-91
-*/
-
-struct xobject *
-t1_Allocate(int size, /* number of bytes to allocate & initialize */
- pointer ptr, /* example structure to allocate */
- int extra) /* any extra uninitialized bytes needed contiguously */
-{
- register struct xobject *template = (struct xobject *)ptr;
- register struct xobject *r;
-
- /*
- * round up 'size' and 'extra' to be an integer number of 'long's:
- */
- size = (size + sizeof(long) - 1) & -(int)sizeof(long);
- extra = (extra + sizeof(long) - 1) & -(int)sizeof(long);
- if (size + extra <= 0)
- Abort("Non-positive allocate?");
- r = (struct xobject *) xiMalloc(size + extra);
-
- while (r == NULL) {
- if (!GimeSpace()) {
- Abort("We have REALLY run out of memory");
- }
- r = (struct xobject *) xiMalloc(size + extra);
- }
-
- /*
- * copy the template into the new memory:
- */
- if (template != NULL) {
- /* Added references count decrement if template is not permanent.
- This is for the case where Allocate is called by a Dupxxxx
- function, which was in turn called by Unique(). (PNM) */
- if (!ISPERMANENT(template->flag))
- --template->references;
- LONGCOPY(r, template, size);
- r->flag &= ~(ISPERMANENT(ON) | ISIMMORTAL(ON));
- /* added reference field 3-2-6-91 PNM */
- r->references = 1;
- }
- else {
- register char **p1;
-
- for (p1=(char **)r; size > 0; size -= sizeof(char *))
- *p1++ = NULL;
- }
-
- return(r);
-}
-
-/*
-:h3.Free() - Frees an Allocated Object
-
-This routine makes a sanity check to make sure the "type" field of the
-standard object structure has not been cleared. If the object is
-not a standard structure, then the macro "NonObjectFree" is available
-that does not perform this check.
-
-In either case, the object must not be the NULL pointer. This preserves
-portability, as the C system xiFree() will not always accept NULL.
-*/
-
-void
-Free(pointer objPtr)
-{
- struct xobject *obj = (struct xobject *)objPtr; /* structure to free */
-
- if (obj->type == INVALIDTYPE)
- Abort("Free of already freed object?");
- obj->type = INVALIDTYPE;
-
- xiFree((long *)obj);
-}
-
-/*
-:h3.Copy() - Make a New Copy of an Object
-
-This is the generic Copy() where the object type is unknown. There
-are specific Copyxxx functions for known object types.
-
-Copy will create a NEW temporary object, and WILL NOT simply bump the
-reference count.
-
-Sometimes duplicating an object is just as simple as Allocating with it
-as a template. But other objects are complicated linked lists. So, we
-let each module provide us a routine (or macro) that duplicates the
-objects it knows about.
-*/
-
-static struct xobject *
-t1_Copy(pointer objPtr)
-{
- register struct xobject *obj
- = (struct xobject *)objPtr; /* object to be Copy'ed */
- if (obj == NULL)
- return(NULL);
-
- if (ISPATHTYPE(obj->type))
- obj = (struct xobject *) CopyPath((struct segment *)obj);
- else
- switch (obj->type) {
- case SPACETYPE:
- obj = (struct xobject *)
- CopySpace((struct XYspace *)obj);
- break;
- case FONTTYPE:
- obj = (struct xobject *) CopyFont(obj); break;
- case REGIONTYPE:
- obj = (struct xobject *)
- CopyRegion((struct region *)obj);
- break;
- case PICTURETYPE:
- obj = (struct xobject *) CopyPicture(obj); break;
- case LINESTYLETYPE:
- obj = (struct xobject *) CopyLineStyle(obj); break;
- case STROKEPATHTYPE:
- obj = (struct xobject *) CopyStrokePath(obj); break;
- case CLUTTYPE:
- obj = (struct xobject *) CopyCLUT(obj); break;
- default:
- return(ArgErr("Copy: invalid object", obj, NULL));
- }
-
- return(obj);
-}
-
-
-/*
-:h3.Permanent() - Makes an Object Permanent
-
-Real simple--just set a flag. Every routine that consumes its objects
-(which is almost every user entry) must check this flag, and not consume
-the object if it is set.
-
-If a temporary object is made permanent, and there is more than one
-reference to it, we must first Copy() it, then set the ISPERMANENT
-flag. Note also that the reference count must be incremented when an
-object is changed from temporary to permanent (see the ISUNIQUE macro).
-
-Note that the purpose of this function is to convert an object into a
-permanent object:
- If it was permanent to begin with, we do nothing;
- If it was temporary and unique, we set the PERMANENT flag and increment
-the reference count;
- If it was temporary and nonunique, we must make a unique Copy(), set
-the PERMANENT flag, and set the reference count to 2. We must also
-decrement the original object's reference count, because what we have
-done is to change one of the old temporary handles to a permanent one.
-3-26-91 PNM
-*/
-
-struct xobject *
-t1_Permanent(pointer objPtr)
-{
- struct xobject *obj = (struct xobject *)objPtr; /* object to be made permanent */
-
- if ( (obj != NULL) && ( !(ISPERMANENT(obj->flag)) ) )
- {
- /* there is a non-NULL, temporary object to be made permanent.
- If there are multiple references to this object, first get
- a new COPY().
- Note also that we have to decrement the reference count if
- we do a Copy() here, because we are consuming the temporary
- argument passed, and returning a unique, permanent one.
- */
- if ( obj->references > 1)
- {
- obj = Copy(obj);
- }
- /* now set the permanent flag, and increment the reference
- count, since a temporary object has now become permanent. */
- obj->references++;
- obj->flag |= ISPERMANENT(ON);
- }
- return(obj);
-}
-
-#ifdef notused
-/*
-:h3.Temporary() - Undoes the Effect of "Permanent()"
-
-This simply resets the "ISPERMANENT" flag.
-
-If a permanent object is made temporary, and there is more than one reference
-to it, we must first Copy() it, then reset the ISPERMANENT flag. However,
-if the permanent object has obly one reference, we need only decrement the
-reference count ( and reset the flag).
-
-Note that this function, in the case of a PERMANENT argument, basically
-converts the PERMANENT handle to a TEMPORARY one. Thus, in the case of
-a nonunique, permanent argument passed, we not only make a Copy(),
-we also decrement the reference count, to reflect the fact that we have
-lost a permanent handle and gained a temporary one.
-PNM 3-2-6-91
-*/
-
-struct xobject *
-xiTemporary(pointer objPtr)
-{
- register struct xobject *obj
- = (struct xobject *)objPtr; /* object to be made permanent */
- if (obj != NULL) {
- /* if it's already temporary, there's nothing to do. */
- if ISPERMANENT(obj->flag)
- {
- /* if there are multiple references to this object, get a
- Copy we can safely alter. Recall that the reference count
- is incremented for permanent objects.
- Recall further that Copy returns an object with the
- same flag state and a reference count of 2 (for PERMANENT
- objects).
- Thus, regardless of whether or not we need to copy a
- permanent object, we still decrement its reference
- count and reset the flag.
- */
- if (obj->references != 2 || ISIMMORTAL(obj->flag))
- {
- /* not unique; consume handle, get a temporary Copy! */
- obj = Copy(obj);
- }
- /* else decrement the reference count (since it's going from
- permanent to temporary) and clear the flag. */
- else {
- obj->references--;
- obj->flag &= ~ISPERMANENT(ON);
- }
- }
- }
- return(obj);
-}
-#endif /* notused */
-
-/*
-:h3.Dup() - Duplicate an Object
-
-Dup will increment the reference count of an object, only making a
-Copy() if needed.
-Note that Dup() retains the state of the permanent flag.
-3-26-91 PNM
-*/
-
-
-struct xobject *
-t1_Dup(pointer objPtr)
-{
- register struct xobject *obj
- = (struct xobject *)objPtr; /* object to be duplicated */
- register char oldflag; /* copy of original object's flag byte */
-
- if (obj == NULL)
- return(NULL);
- /* An immortal object must be Copy'ed, so that we get a mortal
- copy of it, since we try not to destroy immortal objects. */
- if (ISIMMORTAL(obj->flag))
- return(Copy(obj));
-
- /* if incrementing the reference count doesn't cause the count
- to wrap, simply return the object with the count bumped. Note
- that the RefRoll macro increments the count to perform the
- rollover check, so we must decrement the count. */
- if (RefRoll(obj))
- return(obj);
-
- /* that didn't work out, so put the count back and call Copy(). */
- --obj->references;
- oldflag = obj->flag;
- obj = Copy(obj);
- if (ISPERMANENT(oldflag))
- obj = Permanent(obj);
- return(obj);
-}
-
-/*
-:h3.Destroy() - Destroys an Object
-
-This can get complicated. Just like with Copy(), we let the experts
-handle it.
-*/
-struct xobject *
-Destroy(pointer objPtr)
-{
- register struct xobject *obj
- = (struct xobject *)objPtr; /* object to be destroyed */
- if (obj == NULL)
- return(NULL);
- if (ISIMMORTAL(obj->flag)) {
- return(NULL);
- }
- if (ISPATHTYPE(obj->type))
- KillPath((struct segment *)obj);
- else {
- switch (obj->type) {
- case REGIONTYPE:
- KillRegion((struct region *)obj);
- break;
- case SPACETYPE:
- KillSpace(obj);
- break;
- case LINESTYLETYPE:
- KillLineStyle(obj);
- break;
- case FONTTYPE:
- KillFont(obj);
- break;
- case PICTURETYPE:
- KillPicture(obj);
- break;
- case STROKEPATHTYPE:
- KillStrokePath(obj);
- break;
- case CLUTTYPE:
- KillCLUT(obj);
- break;
- default:
- return(ArgErr("Destroy: invalid object", obj, NULL));
- }
- }
- return(NULL);
-}
-/*
-:h2.Generally Useful Macros
-
-:h3.FOLLOWING() - Macro to Point to the Data Following a Structure
-
-There are several places in TYPE1IMAGER where we will allocate variable
-data that belongs to a structure immediately after that structure.
-This is a performance technique, because it reduces the number of
-trips we have to take through xiMalloc() and xiFree(). It turns out C has
-a very convenient way to point past a structure--if 'p' is a pointer
-to a structure, 'p+1' is a pointer to the data after it. This
-behavior of C is somewhat startling and somewhat hard to follow, if
-you are not used to it, so we define a macro to point to the data
-following a structure:
-*/
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.TYPECHECK() - Verify the Type of an Argument
-
-This macro tests the type of an argument. If the test fails, it consumes
-any other arguments as necessary and causes the imbedding routine to
-return the value 'whenBAD'.
-
-Note that the consumeables list should be an argument list itself, for
-example (0) or (2,A,B). See :hdref refid=consume. below.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.ARGCHECK() - Perform an Arbitrary Check on an Argument
-
-This macro is a generalization of TYPECHECK to take an arbitrary
-predicate. If the error occurs (i.e., the predicate is true), the
-arbitrary message 'msg' is returned.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.TYPENULLCHECK() - Extension of TYPECHECK() for NULL arguments
-
-Many routines allow NULLs to be passed as arguments. 'whenBAD' will
-be returned in this case, too.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.MAKECONSUME() - Create a "Consume"-type Macro
-
-Consuming an object means destroying it if it is not permanent. This
-logic is so common to all the routines, that it is immortalized in this
-macro. For example, ConsumePath(p) can be simply defined as
-MAKECONSUME(p,KillPath(p)). In effect, this macro operates on a
-meta-level.
-:i1/consuming objects/
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.MAKEUNIQUE() - Create a "Unique"-type Macro
-
-Many routines are written to modify their arguments in place. Thus,
-they want to insure that they duplicate an object if it is permanent.
-This is called making an object "unique". For example, UniquePath(p)
-can be simply defined as MAKEUNIQUE(p,DupPath(p)).
-:i1/unique objects/
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-An object is unique (and directly alterable) if there is only one
-reference to it, and it is not permanent (in which case we increment
-the reference count, so we don't have to check the permanent bit).
-3-26-91 PNM
-
-Note the rules for making a unique object:
-&drawing.
- IF (obj->references = 1) return(obj);
- ELSE (references > 1)
- IF (ISPERMANENT(obj->flag)) return(Dupxxx(obj));
- ELSE (nonunique, temporary object!)
- obj->references--; return(Dupxxx(obj));
-&edrawing.
-If we must make a Copy of a nonunique, temporary object, we decrement
-reference count of the original object!
-*/
-
-/*
-:h3.Unique() - Make a Unique Object
-
-Here is a generic 'Unique' function if the object type is not known.
-Why didn't we build it with the MAKEUNIQUE macro, you ask? Well, we
-used to, but there is at least one damn compiler in the world that
-raises errors if the types of an "(a) ? b : c" expression do not match.
-Also, when we changed Dup() to retain the permanent/temporary flag, we
-wanted to make sure "Unique" always returned a temporary object.
-
-Note that we cannot use Dup() to create a copy of the object in question,
-because Dup() may simply bump the reference count, and not return a
-unique copy to us. That is why we use t1_Copy().
-
-The purpose of this function is to make sure we have a copy of an object
-that we can safely alter:
-:ol.
-:li.If we have a unique, temporary object, we simply return the argument.
-:li.If we have a nonunique, temporary object, we have to make a new copy
-of it, and decrement the reference count of the original object, to reflect
-the fact that we traded temporary handles.
-:li.If we have a permanent object, we make a temporary copy of it, but
-we do not decrement the reference count of the original permanent object,
-because permanent objects, by definition, are persistent. 3-2-6-91 PNM
-:eol.
-*/
-
-struct xobject *
-t1_Unique(pointer objPtr)
-{
- struct xobject *obj = (struct xobject *)objPtr;
-
- /* if the original object is not already unique, make a unique
- copy...Note also that if the object was not permanent, we must
- consume the old handle! 3-26-91 PNM
- NOTE : consumption of the old handle moved to Allocate. 4-18-91 */
- if (!obj || obj->references == 1)
- return(obj);
-
- obj = Copy(obj);
- /* and make sure we return a temporary object ! */
- if (ISPERMANENT(obj->flag))
- {
- obj->flag &= ~ISPERMANENT(ON);
- obj->references--;
- }
- return(obj);
-}
-
-
-/*
-:h2.Initialization, Error, and Debug Routines
-
-:h3 id=debugvar.Declarations for Debug Purposes
-
-We declare all the debug flags here. Some link editors make the not
-unreasonable restriction that only one module may declare and
-initialize global variables; all the rest must declare the variable
-'extern'. This is logical, but is somewhat awkward to implement with
-C include files. We solve the problem by temporarily making the name
-'extern' a null name if GLOBALS is defined. (GLOBALS is only defined
-in this OBJECTS module.) Since 'externs' can't be initialized, we
-have to handle that with #defines too.
-:i1/GLOBALS (&#define.)/
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-static char *ErrorMessage = NULL;
-
-/*
-:h3.Consume() - Consume a List of Arguments
-
-This general purpose routine is provided in the case where the object
-type(s) to be consumed are unknown or not yet verified, and/or it is
-not known whether the object is permanent.
-
-If the type of the argument is known, it is faster to directly consume
-that type, for example, ConsumeRegion() or ConsumePath(). Furthermore,
-if it is already known that the object is temporary, it is faster to
-just kill it rather than consume it, for example, KillSpace().
-*/
-
-void
-Consume(int n, ...)
-{
- struct xobject *obj;
- va_list ap;
-
- va_start(ap, n);
-
- while (n-- > 0) {
- obj = va_arg(ap, struct xobject *);
- if (obj != NULL && !ISPERMANENT(obj->flag))
- Destroy(obj);
- }
-}
-
-/*
-:h3.TypeErr() - Handles "Invalid Object Type" Errors
-*/
-
-struct xobject *
-TypeErr(char *name, /* Name of routine (for error message) */
- pointer objPtr, /* Object in error */
- int expect, /* type expected */
- pointer retPtr) /* object to return to caller */
-{
- struct xobject *obj = (struct xobject *)objPtr;
- struct xobject *ret = (struct xobject *)retPtr;
- /*
- * This buffer must be large enough to hold 'name' plus
- * two of the largest strings that can be returned by TypeFmt.
- * The largest value of 'name' is currently 9 ("ClosePath")
- * and the longest strings in TypeFmt are 30 characters.
- */
- static char typemsg[115];
-
- if (MustCrash)
- LineIOTrace = TRUE;
-
- sprintf(typemsg, "Wrong object type in %s. Expected %s; was %s.\n",
- name, TypeFmt(expect), TypeFmt(obj->type));
-
- if (MustCrash)
- Abort("Terminating because of CrashOnUserError...");
- else
- ErrorMessage = typemsg;
-
-/* changed ISPERMANENT to ret->references > 1 3-26-91 PNM */
- if (ret != NULL && (ret->references > 1))
- ret = Dup(ret);
- return(ret);
-}
-
-/*
-:h4.TypeFmt() - Returns Pointer to English Name of Object Type
-
-This is a subroutine of TypeErr().
-*/
-
-static char *
-TypeFmt(int type) /* type field */
-{
- char *r;
-
- if (ISPATHTYPE(type))
- if (type == TEXTTYPE)
- r = "path or region (from TextPath)";
- else
- r = "path";
- else {
- switch (type) {
- case INVALIDTYPE:
- r = "INVALID (previously consumed?)";
- break;
- case REGIONTYPE:
- r = "region";
- break;
- case SPACETYPE:
- r = "XYspace";
- break;
- case LINESTYLETYPE:
- r = "linestyle";
- break;
- case FONTTYPE:
- r = "font";
- break;
- case PICTURETYPE:
- r = "picture";
- break;
- case STROKEPATHTYPE:
- r = "path (from StrokePath)";
- break;
- default:
- r = "UNKNOWN";
- break;
- }
- }
- return(r);
-}
-/*
-:h3.ArgErr() - Invalid Argument Passed to a Routine
-
-A common routine to report argument errors. It is usually called
-is returned to the caller in case MustCrash is FALSE and ArgErr
-returns to its caller.
-*/
-
-struct xobject *
-ArgErr(char *string, /* description of error */
- pointer objPtr, /* object, if any, that was in error */
- pointer retPtr) /* object returned to caller or NULL */
-{
- struct xobject *ret = (struct xobject *)retPtr;
-
- if (MustCrash)
- LineIOTrace = TRUE;
-
- if (MustCrash)
- Abort("Terminating because of CrashOnUserError...");
- else
- ErrorMessage = string;
- return(ret);
-}
-
-/*
-:h3.Abort() - Crash Due to Error
-
-Defined in objects.h to be FatalError(), the server's abort routine.
-*/
-
-/*
-:h4.InitImager() - Initialize TYPE1IMAGER
-
-We check that a short is 16 bits and a long 32 bits; we have made
-those assumptions elsewhere in the code. (This is almost a C standard,
-anyway.) Note that TYPE1IMAGER makes no assumptions about the size of an
-'int'!
-:i1/portability assumptions/
-*/
-
-void
-InitImager(void)
-{
-
-/* Check to see if we have been using our own malloc. If so,*/
-/* Undef malloc so that we can get to the system call. */
-/* All other calls to malloc are defined to xiMalloc. */
-
-
-/* if (sizeof(short) != 2 || sizeof(INT32) != 4)
- Abort("Fundamental TYPE1IMAGER assumptions invalid in this port");
-*/
- InitSpaces();
- InitFonts();
- InitFiles();
-/*
-In some environments, constants and/or exception handling need to be
-*/
- LibInit();
-}
diff --git a/libXfont/src/Type1/objects.h b/libXfont/src/Type1/objects.h
deleted file mode 100644
index ea481480e..000000000
--- a/libXfont/src/Type1/objects.h
+++ /dev/null
@@ -1,293 +0,0 @@
-/* $Xorg: objects.h,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/objects.h,v 1.14tsi Exp $ */
-/*SHARED*/
-
-/*END SHARED*/
-
-#include <X11/Xdefs.h>
-#include <X11/Xfuncproto.h>
-#ifndef FONTMODULE
-#include <stdlib.h>
-#endif
-/*SHARED*/
-
-#define Permanent(obj) t1_Permanent(obj)
-#ifdef notused
-#define Temporary(obj) t1_Temporary(obj)
-#endif
-#define Destroy(obj) t1_Destroy(obj)
-#define Dup(obj) t1_Dup(obj)
-#define InitImager t1_InitImager
-#define TermImager t1_TermImager
-#define Pragmatics(f,v) t1_Pragmatics(f,v)
-#define ErrorMsg t1_ErrorMsg
-
-/* make an object permanent */
-extern struct xobject *t1_Permanent ( pointer obj );
-
-#ifdef notused
-/* make an object temporary */
-extern struct xobject *t1_Temporary( pointer obj );
-#endif
-
-/* destroy an object */
-extern struct xobject *t1_Destroy ( pointer obj );
-
-/* duplicate an object */
-extern struct xobject *t1_Dup ( pointer obj );
-
-
-extern void t1_InitImager ( void ); /* initialize TYPE1IMAGER */
-
-/*END SHARED*/
-/*SHARED*/
-extern void xiFree ( long *addr );
-extern char *xiMalloc ( unsigned Size );
-extern void addmemory ( long *addr, long size );
-extern void delmemory ( void );
-
-#ifndef OS_H
-extern void FatalError(const char *f, ...)
-#if defined(__GNUC__) && \
- ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ > 4)))
-__attribute((noreturn))
-#endif
-;
-
-extern void ErrorF(const char *f, ...);
-#endif
-
-#define Abort(line) FatalError(line)
-#define Allocate(n,t,s) t1_Allocate(n,t,s)
-#define Free(obj) t1_Free(obj)
-#define NonObjectFree(a) xiFree((long *)(a))
-#define Consume t1_Consume
-#define ArgErr(s,o,r) t1_ArgErr(s,o,r)
-#define TypeErr(n,o,e,r) t1_TypeErr(n,o,e,r)
-#define Copy(obj) t1_Copy(obj)
-#define Unique(obj) t1_Unique(obj)
-
-/* allocate memory */
-extern struct xobject *t1_Allocate( int size, pointer template,
- int extra );
-
-/* free memory */
-extern void t1_Free ( pointer obj );
-
-/* make a unique temporary copy of an object */
-extern struct xobject *t1_Unique ( pointer obj );
-
-/* handle argument errors */
-extern struct xobject *t1_ArgErr ( char *string, pointer obj, pointer ret );
-
-/* handle 'bad type' argument errors */
-extern struct xobject *t1_TypeErr ( char *name, pointer obj,
- int expect, pointer ret );
-
-/* consume a variable number of arguments */
-extern void t1_Consume ( int n, ... );
-
-/*END SHARED*/
-/*SHARED*/
-
-#define ON (~0) /* all bits on */
-#ifndef FALSE
-#define FALSE 0 /* handy zero value */
-#endif
-#ifndef TRUE
-#define TRUE 1 /* handy non-zero value */
-#endif
-
-#ifndef NULL
-#include <stddef.h>
-/*
-The NULL pointer is system specific. (Most systems, however, use 0.)
-TYPE1IMAGER could have its own NULL, independent of the rest of the system,
-were it not for malloc(). The system call malloc() returns NULL when
-out of memory.
-:i1/portibility assumptions/
-*/
-#endif
-
-#ifndef MIN
-#define MIN(a,b) (((a)<(b)) ? a : b)
-#endif
-#ifndef MAX
-#define MAX(a,b) (((a)>(b)) ? a : b)
-#endif
-#ifndef ABS
-#define ABS(a) (((a)>=0)?(a):-(a))
-#endif
-
-/*END SHARED*/
-/*SHARED*/
-
-struct xobject {
- char type; /* encoded type of object */
- unsigned char flag; /* flag byte for temporary object characteristics*/
- short references; /* count of pointers to this object
- (plus 1 for permanent objects) PNM */
-} ;
-
-/*END SHARED*/
-/*SHARED*/
-
-#define XOBJ_COMMON char type; unsigned char flag; short references;
-
-/*END SHARED*/
-/*SHARED*/
-
-
-#define INVALIDTYPE 0
-#define FONTTYPE 1
-#define REGIONTYPE 3
-#define PICTURETYPE 4
-#define SPACETYPE 5
-#define LINESTYLETYPE 6
-#define EDGETYPE 7
-#define STROKEPATHTYPE 8
-#define CLUTTYPE 9
-
-#define ISPATHTYPE(type) ((type)&0x10) /* all path segments have this bit on */
-#define LINETYPE (0+ISPATHTYPE(ON))
-#define CONICTYPE (1+ISPATHTYPE(ON))
-#define BEZIERTYPE (2+ISPATHTYPE(ON))
-#define HINTTYPE (3+ISPATHTYPE(ON))
-
-#define MOVETYPE (5+ISPATHTYPE(ON))
-#define TEXTTYPE (6+ISPATHTYPE(ON))
-
-/*END SHARED*/
-/*SHARED*/
-
-#define ISPERMANENT(flag) ((flag)&0x01)
-#define ISIMMORTAL(flag) ((flag)&0x02)
-
-/*END SHARED*/
-/*SHARED*/
-
-#define PRESERVE(obj) if (!ISPERMANENT((obj)->flag)) \
- (obj)->references++;
-
-/*END SHARED*/
-/*SHARED*/
-
-#define LONGCOPY(dest,source,bytes) { \
- register long *p1 = (long *)dest; register long *p2 = (long *)source; \
- register int count = (bytes) / sizeof(long); \
- while (--count >= 0) *p1++ = *p2++; }
-
-
-/*END SHARED*/
-/*SHARED*/
-
-#define FOLLOWING(p) ((p)+1)
-
-/*END SHARED*/
-/*SHARED*/
-
-#define TYPECHECK(name, obj, expect, whenBAD, consumables, rettype) { \
- if (obj->type != expect) { \
- (Consume)consumables; \
- return((rettype)TypeErr(name, obj, expect, whenBAD)); \
- } \
-}
-
-/*END SHARED*/
-/*SHARED*/
-
-#define ARGCHECK(test,msg,obj,whenBAD,consumables,rettype) { \
- if (test) { \
- (Consume)consumables; \
- return((rettype)ArgErr(msg, obj, whenBAD)); \
- } \
-}
-
-/*END SHARED*/
-/*SHARED*/
-
-/* Changed use of Dup() below to Temporary(Copy()) because Dup() does not
- necessarily return a Unique Copy anymore! 3-26-91 */
-#define TYPENULLCHECK(name, obj, expect, whenBAD, consumables,rettype) \
- if (obj == NULL) { \
- (Consume)consumables; \
- if (whenBAD != NULL && ISPERMANENT(whenBAD->flag)) \
- return((rettype)Temporary(Copy(whenBAD))); \
- else return((rettype)whenBAD); \
- } else { \
- if (obj->type != expect) { \
- (Consume)consumables; \
- return((rettype)TypeErr(name, obj, expect, whenBAD)); \
- } \
- }
-/*END SHARED*/
-/*SHARED*/
-
-#define MAKECONSUME(obj,stmt) { if (!ISPERMANENT(obj->flag)) stmt; }
-
-/*END SHARED*/
-/*SHARED*/
-
-#define MAKEUNIQUE(obj,stmt) ( ( (obj)->references > 1 ) ? stmt : obj )
-
-/*END SHARED*/
-/*SHARED*/
-
-#ifdef GLOBALS
-
-#define extern
-#define INITIALIZED(value) = value
-
-#else
-
-#define INITIALIZED(value)
-
-#endif
-
-extern char ProcessHints INITIALIZED(TRUE);
-
-extern char RegionDebug INITIALIZED(0);
-
-extern char Continuity INITIALIZED(2);
-
-#ifdef extern
-#undef extern
-#endif
-
-/*
-We define other routines formatting parameters
-*/
-#define DumpArea(area) t1_DumpArea(area)
-#define DumpPath(path) t1_DumpPath(path)
-#define DumpSpace(space) t1_DumpSpace(space)
-#define DumpEdges(e) t1_DumpEdges(e)
-#define FormatFP(s,p) t1_FormatFP(s,p)
-
-/*END SHARED*/
diff --git a/libXfont/src/Type1/paths.c b/libXfont/src/Type1/paths.c
deleted file mode 100644
index b8b13646e..000000000
--- a/libXfont/src/Type1/paths.c
+++ /dev/null
@@ -1,748 +0,0 @@
-/* $Xorg: paths.c,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/paths.c,v 1.7tsi Exp $ */
-
- /* PATHS CWEB V0021 ******** */
-/*
-:h1 id=paths.PATHS Module - Path Operator Handler
-
-This is the module that is responsible for building and transforming
-path lists.
-
-&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
-
-
-:h3.Include Files
-
-The included files are:
-*/
-
- /* after the system includes (dsr) */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifdef FONTMODULE
-# include "os.h"
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "regions.h" /* understands about Union */
-#include "fonts.h" /* understands about TEXTTYPEs */
-#include "pictures.h" /* understands about handles */
-#include "strokes.h" /* understands how to coerce stroke paths */
-#include "trig.h"
-
-
-/*
-:h3.Routines Available to the TYPE1IMAGER User
-
-The PATHS routines that are made available to the outside user are:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Functions Provided to Other Modules
-
-The path routines that are made available to other TYPE1IMAGER modules
-are defined here:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-NOTE: because of the casts put in the macros for Loc, ArcCA, Conic,
-RoundConic, PathSegment, and JoinSegment, we cannot use the macro names
-when the functions are actually defined. We have to use the unique
-names with their unique first two characters. Thus, if anyone in the
-future ever decided to change the first two characters, it would not be
-enough just to change the macro (as it would for most other functions).
-He would have to also change the function definition.
-*/
-/*
-:h3.Macros Provided to Other Modules
-
-The CONCAT macro is defined here and used in the STROKES module. See
-:hdref refid=pathmac..
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h2.Path Segment Structures
-
-A path is represented as a linked list of the following structure:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-When 'link' is NULL, we are at the last segment in the path (surprise!).
-
-'last' is only non-NULL on the first segment of a path,
-for all the other segments 'last' == NULL. We test for a non-NULL
-'last' (ISPATHANCHOR predicate) when we are given an alleged path
-to make sure the user is not trying to pull a fast one on us.
-
-A path may be a collection of disjoint paths. Every break in the
-disjoint path is represented by a MOVETYPE segment.
-
-Closed paths are discussed in :hdref refid=close..
-
-:h3.CopyPath() - Physically Duplicating a Path
-
-This simple function illustrates moving through the path linked list.
-Duplicating a segment just involves making a copy of it, except for
-text, which has some auxilliary things involved. We don't feel
-competent to duplicate text in this module, so we call someone who
-knows how (in the FONTS module).
-*/
-struct segment *
-CopyPath(struct segment *p0) /* path to duplicate */
-{
- register struct segment *p,*n = NULL,*last = NULL,*anchor;
-
- for (p = p0, anchor = NULL; p != NULL; p = p->link) {
-
- ARGCHECK((!ISPATHTYPE(p->type) || (p != p0 && p->last != NULL)),
- "CopyPath: invalid segment", p, NULL, (0), struct segment *);
-
- if (p->type == TEXTTYPE)
- n = (struct segment *) CopyText(p);
- else
- n = (struct segment *)Allocate(p->size, p, 0);
- n->last = NULL;
- if (anchor == NULL)
- anchor = n;
- else
- last->link = n;
- last = n;
- }
-/*
-At this point we have a chain of newly allocated segments hanging off
-'anchor'. We need to make sure the first segment points to the last:
-*/
- if (anchor != NULL) {
- n->link = NULL;
- anchor->last = n;
- }
-
- return(anchor);
-}
-/*
-:h3.KillPath() - Destroying a Path
-
-Destroying a path is simply a matter of freeing each segment in the
-linked list. Again, we let the experts handle text.
-*/
-void
-KillPath(struct segment *p) /* path to destroy */
-{
- register struct segment *linkp; /* temp register holding next segment*/
-
- /* return conditional based on reference count 3-26-91 PNM */
- if ( (--(p->references) > 1) ||
- ( (p->references == 1) && !ISPERMANENT(p->flag) ) )
- return;
-
- while (p != NULL) {
- if (!ISPATHTYPE(p->type)) {
- ArgErr("KillPath: bad segment", p, NULL);
- return;
- }
- linkp = p->link;
- if (p->type == TEXTTYPE)
- KillText(p);
- else
- Free(p);
- p = linkp;
- }
-}
-
-/*
-:h2 id=location."location" Objects
-
-The TYPE1IMAGER user creates and destroys objects of type "location". These
-objects locate points for the primitive path operators. We play a trick
-here and store these objects in the same "segment" structure used for
-paths, with a type field == MOVETYPE.
-
-This allows the Line() operator, for example, to be very trivial:
-It merely stamps its input structure as a LINETYPE and returns it to the
-caller--assuming, of course, the input structure was not permanent (as
-it usually isn't).
-
-:h3.The "movesegment" Template Structure
-
-This template is used as a generic segment structure for Allocate:
-*/
-
-/* added reference field 1 to temporary template below 3-26-91 PNM */
-static struct segment movetemplate = { MOVETYPE, 0, 1, sizeof(struct segment), 0,
- NULL, NULL, {0, 0} };
-/*
-:h3.Loc() - Create an "Invisible Line" Between (0,0) and a Point
-
-*/
-
-struct segment *
-t1_Loc(struct XYspace *S, /* coordinate space to interpret X,Y */
- double x, double y) /* destination point */
-{
- register struct segment *r;
-
-
- r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0);
- TYPECHECK("Loc", S, SPACETYPE, r, (0), struct segment *);
-
- r->last = r;
- r->context = S->context;
- (*S->convert)(&r->dest, S, x, y);
- ConsumeSpace(S);
- return(r);
-}
-/*
-:h3.ILoc() - Loc() With Integer Arguments
-
-*/
-struct segment *
-ILoc(struct XYspace *S, /* coordinate space to interpret X,Y */
- int x, int y) /* destination point */
-{
- register struct segment *r;
-
- r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0);
- TYPECHECK("Loc", S, SPACETYPE, r, (0), struct segment *);
-
- r->last = r;
- r->context = S->context;
- (*S->iconvert)(&r->dest, S, (long) x, (long) y);
- ConsumeSpace(S);
- return(r);
-}
-
-/*
-:h2.Straight Line Segments
-
-:h3.PathSegment() - Create a Generic Path Segment
-
-Many routines need a LINETYPE or MOVETYPE path segment, but do not
-want to go through the external user's interface, because, for example,
-they already know the "fractpel" destination of the segment and the
-conversion is unnecessary. PathSegment() is an internal routine
-provided to the rest of TYPE1IMAGER for handling these cases.
-*/
-
-struct segment *
-t1_PathSegment(int type, /* LINETYPE or MOVETYPE */
- fractpel x, fractpel y) /* where to go to, if known */
-{
- register struct segment *r; /* newly created segment */
-
- r = (struct segment *)Allocate(sizeof(struct segment), &movetemplate, 0);
- r->type = type;
- r->last = r; /* last points to itself for singleton */
- r->dest.x = x;
- r->dest.y = y;
- return(r);
-}
-/*
-:h3.Line() - Create a Line Segment Between (0,0) and a Point P
-
-This involves just creating and filling out a segment structure:
-*/
-struct segment *
-Line(struct segment *P) /* relevant coordinate space */
-{
- ARGCHECK(!ISLOCATION(P), "Line: arg not a location", P, NULL, (0), struct segment *);
-
- P = UniquePath(P);
- P->type = LINETYPE;
- return(P);
-}
-/*
-:h2.Curved Path Segments
-
-We need more points to describe curves. So, the structures for curved
-path segments are slightly different. The first part is identical;
-the curved structures are larger with the extra points on the end.
-
-:h3.Bezier Segment Structure
-
-We support third order Bezier curves. They are specified with four
-control points A, B, C, and D. The curve starts at A with slope AB
-and ends at D with slope CD. The curvature at the point A is inversely
-related to the length |AB|, and the curvature at the point D is
-inversely related to the length |CD|. Point A is always point (0,0).
-
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Bezier() - Generate a Bezier Segment
-
-This is just a simple matter of filling out a 'beziersegment' structure:
-*/
-
-struct beziersegment *
-Bezier(struct segment *B, /* second control point */
- struct segment *C, /* third control point */
- struct segment *D) /* fourth control point (ending point) */
-{
-/* added reference field of 1 to temporary template below 3-26-91 PNM */
- static struct beziersegment template =
- { BEZIERTYPE, 0, 1, sizeof(struct beziersegment), 0,
- NULL, NULL, { 0, 0 }, { 0, 0 }, { 0, 0 } };
-
- register struct beziersegment *r; /* output segment */
-
- ARGCHECK(!ISLOCATION(B), "Bezier: bad B", B, NULL, (2,C,D), struct beziersegment *);
- ARGCHECK(!ISLOCATION(C), "Bezier: bad C", C, NULL, (2,B,D), struct beziersegment *);
- ARGCHECK(!ISLOCATION(D), "Bezier: bad D", D, NULL, (2,B,C), struct beziersegment *);
-
- r = (struct beziersegment *)Allocate(sizeof(struct beziersegment), &template, 0);
- r->last = (struct segment *) r;
- r->dest.x = D->dest.x;
- r->dest.y = D->dest.y;
- r->B.x = B->dest.x;
- r->B.y = B->dest.y;
- r->C.x = C->dest.x;
- r->C.y = C->dest.y;
-
- ConsumePath(B);
- ConsumePath(C);
- ConsumePath(D);
- return(r);
-}
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-POP removes the first segment in a path 'p' and Frees it. 'p' is left
-pointing to the end of the path:
-*/
-#define POP(p) \
- { register struct segment *linkp; \
- linkp = p->link; \
- if (linkp != NULL) \
- linkp->last = p->last; \
- Free(p); \
- p = linkp; }
-/*
-INSERT inserts a single segment in the middle of a chain. 'b' is
-the segment before, 'p' the segment to be inserted, and 'a' the
-segment after.
-*/
-#define INSERT(b,p,a) b->link=p; p->link=a; p->last=NULL
-
-/*
-:h3.Join() - Join Two Objects Together
-
-If these are paths, this operator simply invokes the CONCAT macro.
-Why so much code then, you ask? Well we have to check for object
-types other than paths, and also check for certain path consistency
-rules.
-*/
-
-struct segment *
-Join(struct segment *p1, struct segment *p2)
-{
-/*
-We start with a whole bunch of very straightforward argument tests:
-*/
- if (p2 != NULL) {
- if (!ISPATHTYPE(p2->type)) {
-
- if (p1 == NULL)
- return((struct segment *)Unique(p2));
-
- switch (p1->type) {
-
- case REGIONTYPE:
-
- case STROKEPATHTYPE:
- p1 = CoercePath(p1);
- break;
-
- default:
- return((struct segment *)BegHandle(p1, p2));
- }
- }
-
- ARGCHECK((p2->last == NULL), "Join: right arg not anchor", p2, NULL, (1,p1), struct segment *);
- p2 = UniquePath(p2);
-
-/*
-In certain circumstances, we don't have to duplicate a permanent
-location. (We would just end up destroying it anyway). These cases
-are when 'p2' begins with a move-type segment:
-*/
- if (p2->type == TEXTTYPE || p2->type == MOVETYPE) {
- if (p1 == NULL)
- return(p2);
- if (ISLOCATION(p1)) {
- p2->dest.x += p1->dest.x;
- p2->dest.y += p1->dest.y;
- ConsumePath(p1);
- return(p2);
- }
- }
- }
- else
- return((struct segment *)Unique(p1));
-
- if (p1 != NULL) {
- if (!ISPATHTYPE(p1->type))
-
- switch (p2->type) {
-
- case REGIONTYPE:
-
- case STROKEPATHTYPE:
- p2 = CoercePath(p2);
- break;
-
- default:
- return((struct segment *)EndHandle(p1, p2));
- }
-
- ARGCHECK((p1->last == NULL), "Join: left arg not anchor", p1, NULL, (1,p2), struct segment *);
- p1 = UniquePath(p1);
- }
- else
- return(p2);
-
-/*
-At this point all the checking is done. We have two temporary non-null
-path types in 'p1' and 'p2'. If p1 ends with a MOVE, and p2 begins with
-a MOVE, we collapse the two MOVEs into one. We enforce the rule that
-there may not be two MOVEs in a row:
-*/
-
- if (p1->last->type == MOVETYPE && p2->type == MOVETYPE) {
- p1->last->flag |= p2->flag;
- p1->last->dest.x += p2->dest.x;
- p1->last->dest.y += p2->dest.y;
- POP(p2);
- if (p2 == NULL)
- return(p1);
- }
-/*
-Now we check for another silly rule. If a path has any TEXTTYPEs,
-then it must have only TEXTTYPEs and MOVETYPEs, and furthermore,
-it must begin with a TEXTTYPE. This rule makes it easy to check
-for the special case of text. If necessary, we will coerce
-TEXTTYPEs into paths so we don't mix TEXTTYPEs with normal paths.
-*/
- if (p1->type == TEXTTYPE) {
- if (p2->type != TEXTTYPE && !ISLOCATION(p2))
- p1 = CoerceText(p1);
- }
- else {
- if (p2->type == TEXTTYPE) {
- if (ISLOCATION(p1)) {
- p2->dest.x += p1->dest.x;
- p2->dest.y += p1->dest.y;
- Free(p1);
- return(p2);
- }
- else
- p2 = CoerceText(p2);
- }
- }
-/*
-Thank God! Finally! It's hard to believe, but we are now able to
-actually do the join. This is just invoking the CONCAT macro:
-*/
- CONCAT(p1, p2);
-
- return(p1);
-}
-
-/*
-:h3.JoinSegment() - Create a Path Segment and Join It to a Known Path
-
-This internal function is quicker than a full-fledged join because
-it can do much less checking.
-*/
-
-struct segment *
-t1_JoinSegment(struct segment *before, /* path to join before new segment */
- int type, /* type of new segment (MOVETYPE or LINETYPE) */
- fractpel x, fractpel y, /* x,y of new segment */
- struct segment *after) /* path to join after new segment */
-{
- register struct segment *r; /* returned path built here */
-
- r = PathSegment(type, x, y);
- if (before != NULL) {
- CONCAT(before, r);
- r = before;
- }
- else
- r->context = after->context;
- if (after != NULL)
- CONCAT(r, after);
- return(r);
-}
-
-/*
-:h2.Other Path Functions
-
-*/
-
-
-struct segment *
-t1_ClosePath(struct segment *p0, /* path to close */
- int lastonly) /* flag deciding to close all subpaths or... */
-{
- register struct segment *p,*last = NULL,*start; /* used in looping through path */
- register fractpel x,y; /* current position in path */
- register fractpel firstx = 0,firsty = 0; /* start position of sub path */
- register struct segment *lastnonhint = NULL; /* last non-hint segment in path */
-
- if (p0 != NULL && p0->type == TEXTTYPE)
- return(UniquePath(p0));
- if (p0->type == STROKEPATHTYPE)
- return((struct segment *)Unique(p0));
- /*
- * NOTE: a null closed path is different from a null open path
- * and is denoted by a closed (0,0) move segment. We make
- * sure this path begins and ends with a MOVETYPE:
- */
- if (p0 == NULL || p0->type != MOVETYPE)
- p0 = JoinSegment(NULL, MOVETYPE, 0, 0, p0);
- TYPECHECK("ClosePath", p0, MOVETYPE, NULL, (0), struct segment *);
- if (p0->last->type != MOVETYPE)
- p0 = JoinSegment(p0, MOVETYPE, 0, 0, NULL);
-
- p0 = UniquePath(p0);
-
-/*
-We now begin a loop through the path,
-incrementing current 'x' and 'y'. We are searching
-for MOVETYPE segments (breaks in the path) that are not already closed.
-At each break, we insert a close segment.
-*/
- for (p = p0, x = y = 0, start = NULL;
- p != NULL;
- x += p->dest.x, y += p->dest.y, last = p, p = p->link)
- {
-
- if (p->type == MOVETYPE) {
- if (start != NULL && (lastonly?p->link==NULL:TRUE) &&
- !(ISCLOSED(start->flag) && LASTCLOSED(last->flag))) {
- register struct segment *r; /* newly created */
-
- start->flag |= ISCLOSED(ON);
- r = PathSegment(LINETYPE, firstx - x,
- firsty - y);
- INSERT(last, r, p);
- r->flag |= LASTCLOSED(ON);
- /*< adjust 'last' if possible for a 0,0 close >*/
-{
-
-#define CLOSEFUDGE 3 /* if we are this close, let's change last segment */
-
- if (r->dest.x != 0 || r->dest.y != 0) {
- if (r->dest.x <= CLOSEFUDGE && r->dest.x >= -CLOSEFUDGE
- && r->dest.y <= CLOSEFUDGE && r->dest.y >= -CLOSEFUDGE) {
- lastnonhint->dest.x += r->dest.x;
- lastnonhint->dest.y += r->dest.y;
- r->dest.x = r->dest.y = 0;
- }
- }
-}
- if (p->link != NULL) {
- p->dest.x += x - firstx;
- p->dest.y += y - firsty;
- x = firstx;
- y = firsty;
- }
- }
- start = p;
- firstx = x + p->dest.x;
- firsty = y + p->dest.y;
- }
- else if (p->type != HINTTYPE)
- lastnonhint = p;
- }
- return(p0);
-}
-
-/*
-:h2.Transforming and Putting Handles on Paths
-
-:h3.PathTransform() - Transform a Path
-
-Transforming a path involves transforming all the points. In order
-that closed paths do not become "unclosed" when their relative
-positions are slightly changed due to loss of arithmetic precision,
-all point transformations are in absolute coordinates.
-
-(It might be better to reset the "absolute" coordinates every time a
-move segment is encountered. This would mean that we could accumulate
-error from subpath to subpath, but we would be less likely to make
-the "big error" where our fixed point arithmetic "wraps". However, I
-think I'll keep it this way until something happens to convince me
-otherwise.)
-
-The transform is described as a "space", that way we can use our
-old friend the "iconvert" function, which should be very efficient.
-*/
-
-struct segment *
-PathTransform(struct segment *p0, /* path to transform */
- struct XYspace *S) /* pseudo space to transform in */
-{
- register struct segment *p; /* to loop through path with */
- register fractpel newx,newy; /* current transformed position in path */
- register fractpel oldx,oldy; /* current untransformed position in path */
- register fractpel savex,savey; /* save path delta x,y */
-
- p0 = UniquePath(p0);
-
- newx = newy = oldx = oldy = 0;
-
- for (p=p0; p != NULL; p=p->link) {
-
- savex = p->dest.x; savey = p->dest.y;
-
- (*S->iconvert)(&p->dest, S, p->dest.x + oldx, p->dest.y + oldy);
- p->dest.x -= newx;
- p->dest.y -= newy;
-
- switch (p->type) {
-
- case LINETYPE:
- case MOVETYPE:
- break;
-
- case CONICTYPE:
- {
- register struct conicsegment *cp = (struct conicsegment *) p;
-
- (*S->iconvert)(&cp->M, S, cp->M.x + oldx, cp->M.y + oldy);
- cp->M.x -= newx;
- cp->M.y -= newy;
- /*
- * Note roundness doesn't change... linear transform
- */
- break;
- }
-
-
- case BEZIERTYPE:
- {
- register struct beziersegment *bp = (struct beziersegment *) p;
-
- (*S->iconvert)(&bp->B, S, bp->B.x + oldx, bp->B.y + oldy);
- bp->B.x -= newx;
- bp->B.y -= newy;
- (*S->iconvert)(&bp->C, S, bp->C.x + oldx, bp->C.y + oldy);
- bp->C.x -= newx;
- bp->C.y -= newy;
- break;
- }
-
- case HINTTYPE:
- {
- register struct hintsegment *hp = (struct hintsegment *) p;
-
- (*S->iconvert)(&hp->ref, S, hp->ref.x + oldx, hp->ref.y + oldy);
- hp->ref.x -= newx;
- hp->ref.y -= newy;
- (*S->iconvert)(&hp->width, S, hp->width.x, hp->width.y);
- /* Note: width is not relative to origin */
- break;
- }
-
- case TEXTTYPE:
- {
- XformText(p,S);
- break;
- }
-
- default:
- Abort("PathTransform: invalid segment");
- }
- oldx += savex;
- oldy += savey;
- newx += p->dest.x;
- newy += p->dest.y;
- }
- return(p0);
-}
-
-/*
-:h3.PathDelta() - Return a Path's Ending Point
-*/
-
-void
-PathDelta(struct segment *p, /* input path */
- struct fractpoint *pt) /* pointer to x,y to set */
-{
- struct fractpoint mypoint; /* I pass this to TextDelta */
- register fractpel x,y; /* working variables for path current point */
-
- mypoint.x = mypoint.y = 0;
-
- for (x=y=0; p != NULL; p=p->link) {
- x += p->dest.x;
- y += p->dest.y;
- if (p->type == TEXTTYPE) {
- TextDelta(p, &mypoint);
- x += mypoint.x;
- y += mypoint.y;
- }
- }
-
- pt->x = x;
- pt->y = y;
-}
-
-/*
-:h2.Querying Locations and Paths
-
-:h3.QueryLoc() - Return the X,Y of a Locition
-*/
-
-void
-QueryLoc(struct segment *P, /* location to query, not consumed */
- struct XYspace *S, /* XY space to return coordinates in */
- double *xP, double *yP) /* coordinates returned here */
-{
- if (!ISLOCATION(P)) {
- ArgErr("QueryLoc: first arg not a location", P, NULL);
- return;
- }
- if (S->type != SPACETYPE) {
- ArgErr("QueryLoc: second arg not a space", S, NULL);
- return;
- }
- UnConvert(S, &P->dest, xP, yP);
-}
diff --git a/libXfont/src/Type1/paths.h b/libXfont/src/Type1/paths.h
deleted file mode 100644
index 3803c530c..000000000
--- a/libXfont/src/Type1/paths.h
+++ /dev/null
@@ -1,205 +0,0 @@
-/* $Xorg: paths.h,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/paths.h,v 1.3 1999/08/22 08:58:53 dawes Exp $ */
-
-/*SHARED*/
-
-#define Loc(S,x,y) t1_Loc(S,(double)x,(double)y)
-#define ILoc(S,x,y) t1_ILoc(S,x,y)
-#define Line(P) t1_Line(P)
-#define Join(p1,p2) t1_Join(p1,p2)
-#define ClosePath(p) t1_ClosePath(p,0)
-#define CloseLastSubPath(p) t1_ClosePath(p,1)
-#define Conic(B,C,s) t1_Conic(B,C,(double)s)
-#define RoundConic(M,C,r) t1_RoundConic(M,C,(double)r)
-#define ArcP3(S,P2,P3) t1_ArcP3(S,P2,P3)
-#define ArcCA(S,C,d) t1_ArcCA(S,C,(double)d)
-#define Bezier(B,C,D) t1_Bezier(B,C,D)
-#define Hint(S,r,w,o,h,a,d,l) t1_Hint(S,r,w,o,h,a,d,l)
-#define Reverse(p) t1_Reverse(p)
-#define ReverseSubPaths(p) t1_ReverseSubPaths(p)
-#define AddLoc(p1,p2) t1_Join(p1,p2)
-#define SubLoc(p1,p2) t1_SubLoc(p1,p2)
-#define DropSegment(p) t1_DropSegment(p)
-#define HeadSegment(p) t1_HeadSegment(p)
-#define QueryLoc(P,S,x,y) t1_QueryLoc(P,S,x,y)
-#define QueryPath(p,t,B,C,D,r) t1_QueryPath(p,t,B,C,D,r)
-#define QueryBounds(p,S,x1,y1,x2,y2) t1_QueryBounds(p,S,x1,y1,x2,y2)
-
-
-/* create a location object (or "move" segment) */
-extern struct segment *t1_Loc ( struct XYspace *S, double x, double y );
-/* integer argument version of same */
-extern struct segment *t1_ILoc ( struct XYspace *S, int x, int y );
-/* straight line path segment */
-extern struct segment *t1_Line ( struct segment *P );
-/* join two paths or regions together */
-extern struct segment *t1_Join ( struct segment *p1, struct segment *p2 );
-/* close a path or path set */
-extern struct segment *t1_ClosePath ( struct segment *p0, int lastonly );
-#if 0
-struct conicsegment *t1_Conic(); /* conic curve path segment */
-
-struct conicsegment *t1_RoundConic(); /* ditto, specified another way */
-struct conicsegment *t1_ArcP3(); /* circular path segment with three points */
-struct conicsegment *t1_ArcCA(); /* ditto, with center point and angle */
-#endif
-/* Bezier third order curve path segment */
-extern struct beziersegment *t1_Bezier ( struct segment *B, struct segment *C,
- struct segment *D );
-/* Query location; return its (x,y) */
-extern void t1_QueryLoc ( struct segment *P, struct XYspace *S, double *xP,
- double *yP );
-/*END SHARED*/
-/*SHARED*/
-
-#define CopyPath(p) t1_CopyPath(p)
-#define KillPath(p) t1_KillPath(p)
-#define PathTransform(p,m) t1_PathXform(p,m)
-#define PathDelta(p,pt) t1_PathDelta(p,pt)
-#define BoundingBox(h,w) t1_BoundingBox(h,w)
-#define PathSegment(t,x,y) t1_PathSegment(t,(fractpel)x,(fractpel)y)
-#define JoinSegment(b,t,x,y,a) t1_JoinSegment(b,t,(fractpel)x,(fractpel)y,a)
-#define Hypoteneuse(dx,dy) t1_Hypoteneuse(dx,dy)
-
-/* duplicate a path */
-extern struct segment *t1_CopyPath ( struct segment *p0 );
-/* destroy a path */
-extern void t1_KillPath ( struct segment *p );
-/* transform a path arbitrarily */
-extern struct segment *t1_PathXform ( struct segment *p0, struct XYspace *S );
-/* calculate the ending point of a path */
-extern void t1_PathDelta ( struct segment *p, struct fractpoint *pt );
-/* produce a MOVE or LINE segment */
-extern struct segment *t1_PathSegment ( int type, fractpel x, fractpel y );
-/* join a MOVE or LINE segment to a path */
-extern struct segment *t1_JoinSegment ( struct segment *before, int type, fractpel x, fractpel y, struct segment *after );
-
-/*END SHARED*/
-/*SHARED*/
-
-#define ConsumePath(p) MAKECONSUME(p,KillPath(p))
-#define UniquePath(p) MAKEUNIQUE(p,CopyPath(p))
-
-/*END SHARED*/
-/*SHARED*/
-
-struct segment {
- XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
- unsigned char size; /* size of the structure */
- unsigned char context; /* index to device context */
- struct segment *link; /* pointer to next structure in linked list */
- struct segment *last; /* pointer to last structure in list */
- struct fractpoint dest; /* relative ending location of path segment */
-} ;
-
-#define ISCLOSED(flag) ((flag)&0x80) /* subpath is closed */
-#define LASTCLOSED(flag) ((flag)&0x40) /* last segment in closed subpath */
-
-/*
-NOTE: The ISCLOSED flag is set on the MOVETYPE segment before the
-subpath proper; the LASTCLOSED flag is set on the last segment (LINETYPE)
-in the subpath
-
-We define the ISPATHANCHOR predicate to test that a path handle
-passed by the user is valid:
-*/
-
-#define ISPATHANCHOR(p) (ISPATHTYPE(p->type)&&p->last!=NULL)
-
-/*
-For performance reasons, a user's "location" object is identical to
-a path whose only segment is a move segment. We define a predicate
-to test for this case. See also :hdref refid=location..
-*/
-
-#define ISLOCATION(p) ((p)->type == MOVETYPE && (p)->link == NULL)
-
-/*END SHARED*/
-/*SHARED*/
-
-struct conicsegment {
- XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
- /* type = CONICTYPE */
- unsigned char size; /* as with any 'segment' type */
- unsigned char context; /* as with any 'segment' type */
- struct segment *link; /* as with any 'segment' type */
- struct segment *last; /* as with any 'segment' type */
- struct fractpoint dest; /* Ending point (C point) */
- struct fractpoint M; /* "midpoint" of conic explained above */
- float roundness; /* explained above */
-} ;
-/*END SHARED*/
-/*SHARED*/
-
-struct beziersegment {
- XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
- /* type = BEZIERTYPE */
- unsigned char size; /* as with any 'segment' type */
- unsigned char context; /* as with any 'segment' type */
- struct segment *link; /* as with any 'segment' type */
- struct segment *last; /* as with any 'segment' type */
- struct fractpoint dest; /* ending point (D) */
- struct fractpoint B; /* control point B */
- struct fractpoint C; /* control point C */
-} ;
-
-/*END SHARED*/
-/*SHARED*/
-
-struct hintsegment {
- XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
- /* type = HINTTYPE */
- unsigned char size; /* size of the structure */
- unsigned char context; /* device context */
- struct segment *link; /* pointer to next structure in linked list */
- struct segment *last; /* pointer to last structure in list */
- struct fractpoint dest; /* ALWAYS 0,0 */
- struct fractpoint ref;
- struct fractpoint width;
- char orientation;
- char hinttype;
- char adjusttype;
- char direction;
- int label;
-} ;
-
-/*END SHARED*/
-/*SHARED*/
-
-/*
-CONCAT links the 'p2' path chain on the end of the 'p1' chain. (This macro
-is also used by the STROKES module.)
-*/
-#define CONCAT(p1, p2) { \
- p1->last->link = p2; /* link p2 on end of p1 */ \
- p1->last = p2->last; /* last of new is last of p2 */ \
- p2->last = NULL; } /* only first segment has non-NULL "last" */
-
-/*END SHARED*/
diff --git a/libXfont/src/Type1/pictures.h b/libXfont/src/Type1/pictures.h
deleted file mode 100644
index 0abc715ce..000000000
--- a/libXfont/src/Type1/pictures.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $Xorg: pictures.h,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/pictures.h,v 1.3 1999/08/22 08:58:53 dawes Exp $ */
-
-/* STUB */
-
-#define CopyPicture(p) p
-#define UniquePicture(p) p
-#define KillPicture(p)
-#define BegHandle(o,m) o
-#define EndHandle(o,m) o
-#define PictureBounds(P) P
-
-struct picture {
- struct fractpoint origin;
- struct fractpoint ending;
-};
-
-#define Phantom(o) t1_Phantom(o)
-#define Snap(o) t1_Snap(o)
-
-extern struct segment *t1_Phantom ( struct segment *p );
-extern struct segment *t1_Snap ( struct segment *p );
diff --git a/libXfont/src/Type1/regions.c b/libXfont/src/Type1/regions.c
deleted file mode 100644
index a08682174..000000000
--- a/libXfont/src/Type1/regions.c
+++ /dev/null
@@ -1,1328 +0,0 @@
-/* $Xorg: regions.c,v 1.3 2000/08/17 19:46:31 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/regions.c,v 3.8tsi Exp $ */
- /* REGIONS CWEB V0023 LOTS */
-/*
-:h1 id=regions.REGIONS Module - Regions Operator Handler
-
-This module is responsible for creating and manipulating regions.
-
-&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
-
-
-:h3.Include Files
-
-The included files are:
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifdef FONTMODULE
-# include "os.h"
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "regions.h"
-#include "curves.h"
-#include "lines.h"
-#include "pictures.h"
-#include "fonts.h"
-#include "hints.h"
-#include "strokes.h" /* to pick up 'DoStroke' */
-
-
-static void newfilledge ( struct region *R, fractpel xmin, fractpel xmax,
- fractpel ymin, fractpel ymax, int isdown );
-static struct edgelist *splitedge ( struct edgelist *list, pel y );
-static void vertjoin ( struct edgelist *top, struct edgelist *bottom );
-static int touches ( int h, pel *left, pel *right );
-static int crosses ( int h, pel *left, pel *right );
-static void edgemin ( int h, pel *e1, pel *e2 );
-static void edgemax ( int h, pel *e1, pel *e2 );
-static struct edgelist *NewEdge ( pel xmin, pel xmax, pel ymin, pel ymax,
- pel *xvalues, int isdown );
-static struct edgelist *swathxsort ( struct edgelist *before0,
- struct edgelist *edge );
-/*
-:h3.Functions Provided to the TYPE1IMAGER User
-
-This module provides the following TYPE1IMAGER entry points:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Functions Provided to Other Modules
-
-This module provides the following entry points to other modules:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Macros Provided to Other Modules
-
-:h4.GOING_TO() - Macro Predicate Needed for Changing Direction, Etc.
-
-The actual generation of run end lists (edge boundaries) is left
-to the low level rasterizing modules, LINES and CURVES. There
-are some global region-type
-questions that occur when doing a low-level
-rasterization:
-:ol.
-:li.Did we just change direction in Y and therefore need to start
-a new edge?
-:li.Did we run out of allocated edge space?
-:li.Do the minimum or maximum X values for the current edge need
-updating?
-:eol.
-In general the REGIONS is not smart enough to answer those questions
-itself. (For example, determining if and when a curve changes direction
-may need detailed curve knowledge.) Yet, this must be done efficiently.
-We provide a macro "GOING_TO" where the invoker tells us where it is
-heading for (x2,y2), plus where it is now (x1,y1), plus the current
-region under construction, and the macro answers the questions above.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h2.Data Structures Used to Represent Regions
-
-:h3.The "region" Structure
-
-The region structure is an anchor for a linked list of "edgelist"
-structures (see :hdref refid=edgelist..). It also summarizes the
-information in the edgelist structures (for example, the bounding
-box of the region). And, it contains scratch areas used during
-the creation of a region.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-The ISOPTIMIZED flag tells us if we've put a permanent region in
-'optimal' form.
-*/
-#define ISOPTIMIZED(flag) ((flag)&0x10)
-
-/*
-The ISRECTANGULAR flag tells us if a region is a rectangle. We don't
-always notice rectangles--if this flag is set, the region definitely
-is a rectangle, but some rectangular regions will not have the flag
-set. The flag is used to optimize some paths.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h4."EmptyRegion" - A Region Structure with Zero Area
-
-This structure is used to initialize the region to be built in
-Interior():
-Note - replaced refcount = 1 init with references = 2 3-26-91 PNM
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-static struct region EmptyRegion = { REGIONTYPE,
- ISPERMANENT(ON)+ISIMMORTAL(ON), 2,
- {0, 0}, {0, 0},
- MAXPEL, MAXPEL, MINPEL, MINPEL,
- NULL, NULL,
- 0, 0, 0, 0, 0, NULL, NULL,
- NULL, 0, NULL, NULL };
-
-/*
-:h3 id=edgelist.The "edgelist" Structure
-
-Regions are represented by a linked list of 'edgelist' structures.
-When a region is complete, the structures are paired, one for the
-left and one for the right edge. While a region is being built,
-this rule may be violated temporarily.
-
-An 'edgelist' structure contains the X values for a given span
-of Y values. The (X,Y) pairs define an edge. We use the crack
-and edge coordinate system, so that integer values of X and Y
-go between pels. The edge is defined between the minimum Y and
-maximum Y.
-
-The linked list is kept sorted from top to bottom, that is, in
-increasing y. Also, if 'e1' is an edgelist structure and 'e2' is the
-next one in the list, they must have exactly the same ymin,ymax values
-or be totally disjoint. These two requirements mean that if e2's ymin
-is less than e1's ymax, it must be exactly equal to e1's ymin. A
-sublist of structures with identical ymin and ymax values is called a
-'swath'.
-
-In addition, edgelist structures are separately linked together based
-on what subpath originally created them; each subpath is kept as a
-separate circular linked list. This information is ignored unless
-continuity checking is invoked. See :hdref refid=subpath. for a
-complete description of this.
-*/
-
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-The "edgelist" structure follows the convention of TYPE1IMAGER user
-objects, having a type field and a flag field as the first two
-elements. However, the user never sees "edgelist" structures
-directly; he is given handles to "region" structures only.
-
-By having a type field, we can use the "copy" feature of Allocate()
-to duplicate edge lists quickly.
-
-We also define two flag bits for this structure. The ISDOWN bit is set
-if the edge is going in the direction of increasing Y. The ISAMBIGUOUS
-bit is set if the edge is identical to its neighbor (edge->link); such
-edges may be "left" when they should be "right", or vice versa,
-unnecessarily confusing the continuity checking logic. The FixSubPaths()
-routine in HINTS will swap ambiguous edges if that avoids crossing edges;
-see :hdref refid=fixsubp..
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.KillRegion() - Destroys a Region
-
-KillRegion nominally just decrements the reference count to that region.
-If the reference count becomes 0, all memory associated with it is
-freed. We just follow the linked list, freeing as we go, then kill any
-associated (thresholded) picture.
-Note - added conditional return based on references 3-26-91 PNM
-*/
-
-void
-KillRegion(struct region *area) /* area to free */
-{
- register struct edgelist *p; /* loop variable */
- register struct edgelist *next; /* loop variable */
-
- if (area->references < 0)
- Abort("KillRegion: negative reference count");
- if ( (--(area->references) > 1) ||
- ( (area->references == 1) && !ISPERMANENT(area->flag) ) )
- return;
-
- for (p=area->anchor; p != NULL; p=next) {
- next = p->link;
- Free(p);
- }
- if (area->thresholded != NULL)
- KillPicture(area->thresholded);
- Free(area);
-}
-/*
-:h3.CopyRegion() - Makes a Copy of a Region
-*/
-struct region *
-CopyRegion(struct region *area) /* region to duplicate */
-{
- register struct region *r; /* output region built here */
- register struct edgelist *last = NULL; /* loop variable */
- register struct edgelist *p,*newp; /* loop variables */
-
- r = (struct region *)Allocate(sizeof(struct region), area, 0);
- r->anchor = NULL;
-
- for (p=area->anchor; VALIDEDGE(p); p=p->link) {
-
- newp = NewEdge(p->xmin, p->xmax, p->ymin, p->ymax, p->xvalues, ISDOWN(p->flag));
- if (r->anchor == NULL)
- r->anchor = last = newp;
- else
- last->link = newp;
-
- last = newp;
- }
- if (area->thresholded != NULL)
- /* replaced DupPicture with Dup() 3-26-91 PNM */
- r->thresholded = (struct picture *)Dup(area->thresholded);
- return(r);
-}
-/*
-:h4.NewEdge() - Allocates and Returns a New "edgelist" Structure
-
-We allocate space for the X values contiguously with the 'edgelist'
-structure that locates them. That way, we only have to free the
-edgelist structure to free all memory associated with it. Damn
-clever, huh?
-*/
-
-static struct edgelist *
-NewEdge(pel xmin, pel xmax, /* X extent of edge */
- pel ymin, pel ymax, /* Y extent of edge */
- pel *xvalues, /* list of X values for entire edge */
- int isdown) /* flag: TRUE means edge progresses downward */
-{
- static struct edgelist template = {
- EDGETYPE, 0, 1, NULL, NULL,
- 0, 0, 0, 0, NULL };
-
- register struct edgelist *r; /* returned structure */
- register int iy; /* ymin adjusted for 'long' alignment purposes */
-
- if (ymin >= ymax)
- Abort("newedge: height not positive");
-/*
-We are going to copy the xvalues into a newly allocated area. It
-helps performance if the values are all "long" aligned. We can test
-if the xvalues are long aligned by ANDing the address with the
-(sizeof(long) - 1)--if non zero, the xvalues are not aligned well. We
-set 'iy' to the ymin value that would give us good alignment:
-*/
- iy = ymin - (((unsigned long)xvalues) & (sizeof(long)-1)) / sizeof(pel);
-
- r = (struct edgelist *)Allocate(sizeof(struct edgelist), &template,
- (ymax - iy) * sizeof(pel));
-
- if (isdown) r->flag = ISDOWN(ON);
- r->xmin = xmin;
- r->xmax = xmax;
- r->ymin = ymin;
- r->ymax = ymax;
-
- r->xvalues = (pel *) FOLLOWING(r);
- if (ymin != iy) {
- r->xvalues += ymin - iy;
- xvalues -= ymin - iy;
- }
-
-/*
-We must round up (ymax - iy) so we get the ceiling of the number of
-longs. The destination must be able to hold these extra bytes because
-Allocate() makes everything it allocates be in multiples of longs.
-*/
- LONGCOPY(&r[1], xvalues, (ymax - iy) * sizeof(pel) + sizeof(long) - 1);
-
- return(r);
-}
-
-/*
-:h3 id=discard.discard() - Discard All Edges Between Two Edges
-
-At first glance it would seem that we could discard an edgelist
-structure merely by unlinking it from the list and freeing it. You are
-wrong, region-breath! For performance, the X values associated with an
-edge are allocated contiguously with it. So, we free the X values when
-we free a structure. However, once an edge has been split, we are no
-longer sure which control block actually is part of the memory block
-that contains the edges. Rather than trying to decide, we play it safe
-and never free part of a region.
-
-So, to mark a 'edgelist' structure as discarded, we move it to the end
-of the list and set ymin=ymax.
-*/
-
-static void
-discard(struct edgelist *left, /* all edges between here exclusive */
- struct edgelist *right) /* should be discarded */
-{
- register struct edgelist *beg,*end,*p;
-
- beg = left->link;
- if (beg == right)
- return;
-
- for (p = beg; p != right; p = p->link) {
- if (p->link == NULL && right != NULL)
- Abort("discard(): ran off end");
- p->ymin = p->ymax = 32767;
- end = p;
- }
- /*
- * now put the chain beg/end at the end of right, if it is not
- * already there:
- */
- if (right != NULL) {
- left->link = right;
- while (right->link != NULL)
- right = right->link;
- right->link = beg;
- }
- end->link = NULL;
-}
-
-/*
-:h4.Unwind() - Discards Edges That Fail the Winding Rule Test
-
-The winding rule says that upward going edges should be paired with
-downward going edges only, and vice versa. So, if two upward edges
-or two downward edges are nominally left/right pairs, Unwind() should
-discard the second one. Everything should balance; we should discard
-an even number of edges; of course, we abort if we don't.
-*/
-static void
-Unwind(struct edgelist *area) /* input area modified in place */
-{
- register struct edgelist *last = NULL,*next; /* struct before and after current one */
- register int y; /* ymin of current swath */
- register int count,newcount; /* winding count registers */
-
- while (VALIDEDGE(area)) {
-
- count = 0;
- y = area->ymin;
-
- do {
- next = area->link;
-
- if (ISDOWN(area->flag))
- newcount = count + 1;
- else
- newcount = count - 1;
-
- if (count == 0 || newcount == 0)
- last = area;
- else
- discard(last, next);
-
- count = newcount;
- area = next;
-
- } while (area != NULL && area->ymin == y);
-
- if (count != 0)
- Abort("Unwind: uneven edges");
- }
-}
-/*
-:h2.Building Regions
-
-:h3.Interior() - Iterate Through a Path, Building a Region
-
-This routine is the workhorse driver routine that iterates through a
-path, calling the appropriate stepping routines to actually produce the
-run end "edgelist" structures.
-
-:ol.
-:li."Interior" calls StepLine or StepConic or StepBezier as appropriate
-to produce run ends.
-:li.Occasionally these routines will notice a change in Y direction
-and will call ChangeDirection (through the GOING_TO macro); this is
-a call back to the REGIONS module.
-:li.ChangeDirection will call whatever function is in the region
-structure; for Interior, this function is 'newfilledge'.
-:li.Newfilledge will call NewEdge to create a new edgelist structure,
-then, call SortSwath to sort it onto the linked list being built at
-the region "anchor".
-:eol.
-
-By making the function called by ChangeDirection be a parameter of the
-region, we allow the same ChangeDirection logic to be used by stroking.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-struct region *
-Interior(struct segment *p, /* take interior of this path */
- int fillrule) /* rule to follow if path crosses itself */
-{
- register fractpel x,y; /* keeps ending point of path segment */
- fractpel lastx,lasty; /* previous x,y from path segment before */
- register struct region *R; /* region I will build */
- register struct segment *nextP; /* next segment of path */
- struct fractpoint hint; /* accumulated hint value */
- char tempflag; /* flag; is path temporary? */
- char Cflag; /* flag; should we apply continuity? */
-
- if (p == NULL)
- return(NULL);
-/*
-Establish the 'Cflag' continuity flag based on user's fill rule and
-our own 'Continuity' pragmatic (0: never do continuity, 1: do what
-user asked, >1: do it regardless).
-*/
- if (fillrule > 0) {
- Cflag = Continuity > 0;
- fillrule -= CONTINUITY;
- }
- else
- Cflag = Continuity > 1;
-
- ARGCHECK((fillrule != WINDINGRULE && fillrule != EVENODDRULE),
- "Interior: bad fill rule", NULL, NULL, (1,p), struct region *);
-
- if (p->type == TEXTTYPE)
-/* if (fillrule != EVENODDRULE)
- else */
- return((struct region *)UniquePath(p));
- if (p->type == STROKEPATHTYPE) {
- if (fillrule == WINDINGRULE)
- return((struct region *)DoStroke(p));
- else
- p = CoercePath(p);
- }
-
- R = (struct region *)Allocate(sizeof(struct region), &EmptyRegion, 0);
-
- ARGCHECK(!ISPATHANCHOR(p), "Interior: bad path", p, R, (0), struct region *);
- ARGCHECK((p->type != MOVETYPE), "Interior: path not closed", p, R, (0), struct region *);
-
-
-/* changed definition from !ISPERMANENT to references <= 1 3-26-91 PNM */
- tempflag = (p->references <= 1); /* only first segment in path is so marked */
- if (!ISPERMANENT(p->flag)) p->references -= 1;
-
- R->newedgefcn = newfilledge;
-/*
-Believe it or not, "R" is now completely initialized. We are counting
-on the copy of template to get other fields the way we want them,
-namely
-:ol.
-:li.anchor = NULL
-:li.xmin, ymin, xmax, ymax, to minimum and maximum values respectively.
-:eol.
-Anchor = NULL is very
-important to ChangeDirection.
-See :hdref refid=CD..
-
-To minimize problems of "wrapping" in our pel arithmetic, we keep an
-origin of the region which is the first move. Hopefully, that keeps
-numbers within plus or minus 32K pels.
-*/
- R->origin.x = 0/*TOFRACTPEL(NEARESTPEL(p->dest.x))*/;
- R->origin.y = 0/*TOFRACTPEL(NEARESTPEL(p->dest.y))*/;
- lastx = - R->origin.x;
- lasty = - R->origin.y;
-/*
-ChangeDirection initializes other important fields in R, such as
-lastdy, edge, edgeYstop, edgexmin, and edgexmax. The first segment
-is a MOVETYPE, so it will be called first.
-*/
-/*
-The hints data structure must be initialized once for each path.
-*/
-
- if (ProcessHints)
- InitHints(); /* initialize hint data structure */
-
- while (p != NULL) {
-
- x = lastx + p->dest.x;
- y = lasty + p->dest.y;
-
- nextP = p->link;
-
-/*
-Here we start the hints processing by initializing the hint value to
-zero. If ProcessHints is FALSE, the value will remain zero.
-Otherwise, hint accumulates the computed hint values.
-*/
-
- hint.x = hint.y = 0;
-
-/*
-If we are processing hints, and this is a MOVE segment (other than
-the first on the path), we need to close (reverse) any open hints.
-*/
-
- if (ProcessHints)
- if ((p->type == MOVETYPE) && (p->last == NULL)) {
- CloseHints(&hint);
- }
-
-/*
-Next we run through all the hint segments (if any) attached to this
-segment. If ProcessHints is TRUE, we will accumulate computed hint
-values. In either case, nextP will be advanced to the first non-HINT
-segment (or NULL), and each hint segment will be freed if necessary.
-*/
-
- while ((nextP != NULL) && (nextP->type == HINTTYPE)) {
- if (ProcessHints)
- ProcessHint((struct hintsegment *)nextP,
- x + hint.x, y + hint.y, &hint);
-
- {
- register struct segment *saveP = nextP;
-
- nextP = nextP->link;
- if (tempflag)
- Free(saveP);
- }
- }
-
-/*
-We now apply the full hint value to the ending point of the path segment.
-*/
-
- x += hint.x;
- y += hint.y;
-
- switch(p->type) {
-
- case LINETYPE:
- StepLine(R, lastx, lasty, x, y);
- break;
-
- case CONICTYPE:
- {
-
-/*
-For a conic curve, we apply half the hint value to the conic midpoint.
-*/
-
- }
- break;
-
- case BEZIERTYPE:
- {
- register struct beziersegment *bp = (struct beziersegment *) p;
-
-/*
-For a Bezier curve, we apply the full hint value to the Bezier C point.
-*/
-
- StepBezier(R, lastx, lasty,
- lastx + bp->B.x, lasty + bp->B.y,
- lastx + bp->C.x + hint.x,
- lasty + bp->C.y + hint.y,
- x, y);
- }
- break;
-
- case MOVETYPE:
-/*
-At this point we have encountered a MOVE segment. This breaks the
-path, making it disjoint.
-*/
- if (p->last == NULL) /* i.e., not first in path */
- ChangeDirection(CD_LAST, R, lastx, lasty, (fractpel) 0);
-
- ChangeDirection(CD_FIRST, R, x, y, (fractpel) 0);
-/*
-We'll just double check for closure here. We forgive an appended
-MOVETYPE at the end of the path, if it isn't closed:
-*/
- if (!ISCLOSED(p->flag) && p->link != NULL)
- return((struct region *)ArgErr("Fill: sub-path not closed", p, NULL));
- break;
-
- default:
- Abort("Interior: path type error");
- }
-/*
-We're done with this segment. Advance to the next path segment in
-the list, freeing this one if necessary:
-*/
- lastx = x; lasty = y;
-
- if (tempflag)
- Free(p);
- p = nextP;
- }
- ChangeDirection(CD_LAST, R, lastx, lasty, (fractpel) 0);
- R->ending.x = lastx;
- R->ending.y = lasty;
-/*
-Finally, clean up the region's based on the user's 'fillrule' request:
-*/
- if (Cflag)
- ApplyContinuity(R);
- if (fillrule == WINDINGRULE)
- Unwind(R->anchor);
- return(R);
-}
-/*
-:h3."workedge" Array
-
-This is a statically allocated array where edges are built
-before being copied into more permanent storage by NewEdge().
-*/
-
-#ifndef MAXEDGE
-#define MAXEDGE 1000
-#endif
-
-static pel workedge[MAXEDGE];
-static pel *currentworkarea = workedge;
-static pel currentsize = MAXEDGE;
-
-/*
-:h3 id=cd.ChangeDirection() - Called When Y Direction Changes
-
-The rasterizing routines call this entry point when they detect
-a change in Y. We then build the current edge and sort it into
-emerging edgelist at 'anchor' by calling whatever "newedgefcn"
-is appropriate.
-*/
-
-void
-ChangeDirection(int type, /* CD_FIRST, CD_CONTINUE, or CD_LAST */
- struct region *R, /* region in which we are changing direction */
- fractpel x, fractpel y, /* current beginning x,y */
- fractpel dy) /* direction and magnitude of change in y */
-{
- register fractpel ymin,ymax; /* minimum and maximum Y since last call */
- register pel iy; /* nearest integer pel to 'y' */
- register pel idy; /* nearest integer pel to 'dy' */
- register int ydiff; /* allowed Y difference in 'currentworkarea' */
-
- if (type != CD_FIRST) {
-
- if (R->lastdy > 0) {
- ymin = R->firsty;
- ymax = y;
- }
- else {
- ymin = y;
- ymax = R->firsty;
- }
-
- if (ymax < ymin)
- Abort("negative sized edge?");
-
-
- (*R->newedgefcn)(R, R->edgexmin, R->edgexmax, ymin, ymax,
- R->lastdy > 0);
-
- }
-
- R->firsty = y;
- R->firstx = x;
- R->lastdy = dy;
-
- iy = NEARESTPEL(y);
- idy = NEARESTPEL(dy);
- if (currentworkarea != workedge && idy < MAXEDGE && idy > -MAXEDGE) {
- NonObjectFree(currentworkarea);
- currentworkarea = workedge;
- currentsize = MAXEDGE;
- }
- ydiff = currentsize - 1;
- if (dy > 0) {
- R->edge = &currentworkarea[-iy];
- R->edgeYstop = TOFRACTPEL(ydiff + iy) + FPHALF;
- }
- else {
- R->edge = &currentworkarea[ydiff - iy];
- R->edgeYstop = TOFRACTPEL(iy - ydiff) - FPHALF;
- }
- R->edgexmax = R->edgexmin = x;
-/*
-If this is the end of a subpath, we complete the subpath circular
-chain:
-*/
- if (type == CD_LAST && R->lastedge != NULL) {
- register struct edgelist *e = R->firstedge;
-
- while (e->subpath != NULL)
- e = e->subpath;
- e->subpath = R->lastedge;
- R->lastedge = R->firstedge = NULL;
- }
-}
-
-/*
-:h2.Sorting Edges
-
-:h3.SortSwath() - Vertically Sort an Edge into a Region
-
-This routine sorts an edge or a pair of edges into a growing region,
-so that the region maintains its top-to-bottom, left-to-right form.
-The rules for sorting horizontally may vary depending on what you
-are doing, but the rules for vertical sorting are always the same.
-This routine is passed an argument that is a function that will
-perform the horizontal sort on demand (for example, swathxsort() or
-SwathUnion()).
-
-This is a recursive routine. A new edge (or edge pair) may overlap
-the list I am building in strange and wonderful ways. Edges may
-cross. When this happens, my strategy is to split the incoming edge
-(or the growing list) in two at that point, execute the actual sort on
-the top part of the split, and recursively call myself to figure out
-exactly where the bottom part belongs.
-*/
-
-#define TOP(e) ((e)->ymin) /* the top of an edge (for readability */
-#define BOTTOM(e) ((e)->ymax) /* the bottom of an edge (for readability */
-
-static struct edgelist *
-SortSwath(struct edgelist *anchor, /* list being built */
- struct edgelist *edge, /* incoming edge or pair of edges */
- SwathFunc swathfcn) /* horizontal sorter */
-{
- register struct edgelist *before,*after;
- struct edgelist base;
-
- if (anchor == NULL)
- return(edge);
-
- before = &base;
- before->ymin = before->ymax = MINPEL;
- before->link = after = anchor;
-
-/*
-If the incoming edge is above the current list, we connect the current
-list to the bottom of the incoming edge. One slight complication is
-if the incoming edge overlaps into the current list. Then, we
-first split the incoming edge in two at the point of overlap and recursively
-call ourselves to sort the bottom of the split into the current list:
-*/
- if (TOP(edge) < TOP(after)) {
- if (BOTTOM(edge) > TOP(after)) {
-
- after = SortSwath(after, splitedge(edge, TOP(after)), swathfcn);
- }
- vertjoin(edge, after);
- return(edge);
- }
-/*
-At this point the top of edge is not higher than the top of the list,
-which we keep in 'after'. We move the 'after' point down the list,
-until the top of the edge occurs in the swath beginning with 'after'.
-
-If the bottom of 'after' is below the bottom of the edge, we have to
-split the 'after' swath into two parts, at the bottom of the edge.
-If the bottom of 'after' is above the bottom of the swath,
-*/
-
- while (VALIDEDGE(after)) {
-
- if (TOP(after) == TOP(edge)) {
- if (BOTTOM(after) > BOTTOM(edge))
- vertjoin(after, splitedge(after, BOTTOM(edge)));
- else if (BOTTOM(after) < BOTTOM(edge)) {
- after = SortSwath(after,
- splitedge(edge, BOTTOM(after)), swathfcn);
- }
- break;
- }
- else if (TOP(after) > TOP(edge)) {
- if (BOTTOM(edge) > TOP(after)) {
- after = SortSwath(after,
- splitedge(edge, TOP(after)), swathfcn);
- }
- break;
- }
- else if (BOTTOM(after) > TOP(edge))
- vertjoin(after, splitedge(after, TOP(edge)));
-
- before = after;
- after = after->link;
- }
-
-/*
-At this point 'edge' exactly corresponds in height to the current
-swath pointed to by 'after'.
-*/
- if (after != NULL && TOP(after) == TOP(edge)) {
- before = (*swathfcn)(before, edge);
- after = before->link;
- }
-/*
-At this point 'after' contains all the edges after 'edge', and 'before'
-contains all the edges before. Whew! A simple matter now of adding
-'edge' to the linked list in its rightful place:
-*/
- before->link = edge;
- if (RegionDebug > 1) {
- while (edge->link != NULL) {
- edge = edge->link;
- }
- }
- else
- for (; edge->link != NULL; edge = edge->link) { ; }
-
- edge->link = after;
- return(base.link);
-}
-
-/*
-:h3 id=newfill.newfilledge() - Called When We Have a New Edge While Filling
-
-This is the prototypical "newedge" function passed to "Rasterize" and
-stored in "newedgefcn" in the region being built.
-
-If the edge is non-null, we sort it onto the list of edges we are
-building at "anchor".
-
-This function also has to keep the bounding box of the region
-up to date.
-*/
-
-static void
-newfilledge(struct region *R, /* region being built */
- fractpel xmin, fractpel xmax, /* X range of this edge */
- fractpel ymin, fractpel ymax, /* Y range of this edge */
- int isdown) /* flag: TRUE means edge goes down, else up */
-{
-
- register pel pelxmin,pelymin,pelxmax,pelymax; /* pel versions of bounds */
- register struct edgelist *edge; /* newly created edge */
-
- pelymin = NEARESTPEL(ymin);
- pelymax = NEARESTPEL(ymax);
- if (pelymin == pelymax)
- return;
-
- pelxmin = NEARESTPEL(xmin);
- pelxmax = NEARESTPEL(xmax);
-
- if (pelxmin < R->xmin) R->xmin = pelxmin;
- if (pelxmax > R->xmax) R->xmax = pelxmax;
- if (pelymin < R->ymin) R->ymin = pelymin;
- if (pelymax > R->ymax) R->ymax = pelymax;
-
- edge = NewEdge(pelxmin, pelxmax, pelymin, pelymax, &R->edge[pelymin], isdown);
- edge->subpath = R->lastedge;
- R->lastedge = edge;
- if (R->firstedge == NULL)
- R->firstedge = edge;
-
- R->anchor = SortSwath(R->anchor, edge, swathxsort);
-
-}
-
-/*
-:h3.splitedge() - Split an Edge or Swath in Two at a Given Y Value
-
-This function returns the edge or swath beginning at the Y value, and
-is guaranteed not to change the address of the old swath while splitting
-it.
-*/
-
-static struct edgelist *
-splitedge(struct edgelist *list, /* area to split */
- pel y) /* Y value to split list at */
-{
- register struct edgelist *new; /* anchor for newly built list */
- register struct edgelist *last = NULL; /* end of newly built list */
- register struct edgelist *r; /* temp pointer to new structure */
- register struct edgelist *lastlist; /* temp pointer to last 'list' value */
-
- lastlist = new = NULL;
-
- while (list != NULL) {
- if (y < list->ymin)
- break;
- if (y >= list->ymax)
- Abort("splitedge: above top of list");
- if (y == list->ymin)
- Abort("splitedge: would be null");
-
- r = (struct edgelist *)Allocate(sizeof(struct edgelist), list, 0);
-/*
-At this point 'r' points to a copy of the single structure at 'list'.
-We will make 'r' be the new split 'edgelist'--the lower half.
-We don't bother to correct 'xmin' and 'xmax', we'll take the
-the pessimistic answer that results from using the old values.
-*/
- r->ymin = y;
- r->xvalues = list->xvalues + (y - list->ymin);
-/*
-Note that we do not need to allocate new memory for the X values,
-they can remain with the old "edgelist" structure. We do have to
-update that old structure so it is not as high:
-*/
- list->ymax = y;
-/*
-Insert 'r' in the subpath chain:
-*/
- r->subpath = list->subpath;
- list->subpath = r;
-/*
-Now attach 'r' to the list we are building at 'new', and advance
-'list' to point to the next element in the old list:
-*/
- if (new == NULL)
- new = r;
- else
- last->link = r;
- last = r;
- lastlist = list;
- list = list->link;
- }
-/*
-At this point we have a new list built at 'new'. We break the old
-list at 'lastlist', and add the broken off part to the end of 'new'.
-Then, we return the caller a pointer to 'new':
-*/
- if (new == NULL)
- Abort("null splitedge");
- lastlist->link = NULL;
- last->link = list;
- return(new);
-}
-
-/*
-:h3.vertjoin() - Join Two Disjoint Edge Lists Vertically
-
-The two edges must be disjoint vertically.
-*/
-static void vertjoin(top, bottom)
- register struct edgelist *top; /* uppermost region */
- register struct edgelist *bottom; /* bottommost region */
-{
- if (BOTTOM(top) > TOP(bottom))
- Abort("vertjoin not disjoint");
-
- for (; top->link != NULL; top=top->link) { ; }
-
- top->link = bottom;
- return;
-}
-
-/*
-:h3.swathxsort() - Sorting by X Values
-
-We need to sort 'edge' into its rightful
-place in the swath by X value, taking care that we do not accidentally
-advance to the next swath while searching for the correct X value. Like
-all swath functions, this function returns a pointer to the edge
-BEFORE the given edge in the sort.
-*/
-
-static struct edgelist *
-swathxsort(struct edgelist *before0, /* edge before this swath */
- struct edgelist *edge) /* input edge */
-{
- register struct edgelist *before;
- register struct edgelist *after;
- register pel y = 0;
-
- before = before0;
- after = before->link;
-
- while (after != NULL && TOP(after) == TOP(edge)) {
-
- register pel *x1,*x2;
-
- y = TOP(edge);
- x1 = after->xvalues;
- x2 = edge->xvalues;
-
- while (y < BOTTOM(edge) && *x1 == *x2) {
- x1++; x2++; y++;
- }
- if (y >= BOTTOM(edge)) {
- edge->flag |= ISAMBIGUOUS(ON);
- after->flag |= ISAMBIGUOUS(ON);
- break;
- }
-
- if (*x1 >= *x2)
- break;
-
- before = after;
- after = after->link;
- }
-
-/*
-At this point, 'edge' is between 'before' and 'after'. If 'edge' didn't
-cross either of those other edges, we would be done. We check for
-crossing. If it does cross, we split the problem up by calling SortSwath
-recursively with the part of the edge that is below the crossing point:
-*/
-{
- register int h0,h; /* height of edge--number of scans */
-
- h0 = h = BOTTOM(edge) - y;
- y -= TOP(edge);
-
- if (h0 <= 0) {
- return(before);
- }
-
- if (TOP(before) == TOP(edge))
- h -= crosses(h, &before->xvalues[y], &edge->xvalues[y]);
- if (after != NULL && TOP(after) == TOP(edge))
- h -= crosses(h, &edge->xvalues[y], &after->xvalues[y]);
-
- if (h < h0) {
- SortSwath(before0->link,
- splitedge(edge, TOP(edge) + y + h),
- swathxsort);
-
- }
-}
-
- return(before);
-}
-/*
-:h3.SwathUnion() - Union Two Edges by X Value
-
-We have a left and right edge that must be unioned into a growing
-swath. If they are totally disjoint, they are just added in. The
-fun comes in they overlap the existing edges. Then some edges
-will disappear.
-*/
-
-static struct edgelist *
-SwathUnion(struct edgelist *before0, /* edge before the swath */
- struct edgelist *edge) /* list of two edges to be unioned */
-{
- register int h; /* saves height of edge */
- register struct edgelist *rightedge; /* saves right edge of 'edge' */
- register struct edgelist *before,*after; /* edge before and after */
- int h0; /* saves initial height */
-
- h0 = h = edge->ymax - edge->ymin;
- if (h <= 0)
- Abort("SwathUnion: 0 height swath?");
-
- before = before0;
- after = before->link;
-
- while (after != NULL && TOP(after) == TOP(edge)) {
- register struct edgelist *right;
-
- right = after->link;
- if (right->xvalues[0] >= edge->xvalues[0])
- break;
- before = right;
- after = before->link;
- }
-/*
-This is the picture at this point. 'L' indicates a left hand edge,
-'R' indicates the right hand edge.
-'<--->' indicates the degree of uncertainty as to its placement
-relative to other edges:
-:xmp atomic.
- before after
- R <---L----> R L R L R
- <---L---> <------R-------------------------->
- edge
-:exmp.
-In case the left of 'edge' touches 'before', we need to reduce
-the height by that amount.
-*/
- if (TOP(before) == TOP(edge))
- h -= touches(h, before->xvalues, edge->xvalues);
-
- rightedge = edge->link;
-
- if (after == NULL || TOP(after) != TOP(edge) ||
- after->xvalues[0] > rightedge->xvalues[0]) {
-/*
-On this side of the the above 'if', the new edge is disjoint from the
-existing edges in the swath. This is the picture:
-:xmp atomic.
- before after
- R L R L R L R
- L R
- edge
-:exmp.
-We will verify it remains disjoint for the entire height. If the
-situation changes somewhere down the edge, we split the edge at that
-point and recursively call ourselves (through 'SortSwath') to figure
-out the new situation:
-*/
- if (after != NULL && TOP(after) == TOP(edge))
- h -= touches(h, rightedge->xvalues, after->xvalues);
- if (h < h0)
- SortSwath(before0->link, splitedge(edge, edge->ymin + h), t1_SwathUnion);
- /* go to "return" this edge pair; it is totally disjoint */
- }
- else {
-/*
-At this point, at the 'else', we know that the
-new edge overlaps one or more pairs in the existing swath. Here is
-a picture of our knowledge and uncertainties:
-:xmp atomic.
- before after
- R L R L R L R
- <---L---> <---R------------------->
- edge
-:exmp.
-We need to move 'after' along until it is to the right of the
-right of 'edge'. ('After' should always point to a left edge of a pair:)
-*/
- register struct edgelist *left; /* variable to keep left edge in */
-
- do {
- left = after;
- after = (after->link)->link;
-
- } while (after != NULL && TOP(after) == TOP(edge)
- && after->xvalues[0] <= rightedge->xvalues[0]);
-/*
-At this point this is the picture:
-:xmp atomic.
- before left after
- R L R L R L R
- <---L---> <---R--->
- edge
-:exmp.
-We need to verify that the situation stays like this all the way
-down the edge. Again, if the
-situation changes somewhere down the edge, we split the edge at that
-point and recursively call ourselves (through 'SortSwath') to figure
-out the new situation:
-*/
-
- h -= crosses(h, left->xvalues, rightedge->xvalues);
- h -= crosses(h, edge->xvalues, ((before->link)->link)->xvalues);
-
- if (after != NULL && TOP(after) == TOP(edge))
-
- h -= touches(h, rightedge->xvalues, after->xvalues);
-
-/*
-OK, if we touched either of our neighbors we need to split at that point
-and recursively sort the split edge onto the list. One tricky part
-is that when we recursively sort, 'after' will change if it was not
-in our current swath:
-*/
- if (h < h0) {
- SortSwath(before0->link,
- splitedge(edge, edge->ymin + h),
- t1_SwathUnion);
-
- if (after == NULL || TOP(after) != TOP(edge))
- for (after = before0->link;
- TOP(after) == TOP(edge);
- after = after->link) { ; }
- }
-/*
-Now we need to augment 'edge' by the left and right of the overlapped
-swath, and to discard all edges between before and after, because they
-were overlapped and have been combined with the new incoming 'edge':
-*/
- edge->xmin = MIN(edge->xmin, (before->link)->xmin);
- edge->xmax = MIN(edge->xmax, (before->link)->xmax);
- edgemin(h, edge->xvalues, (before->link)->xvalues);
- rightedge->xmin = MAX(rightedge->xmin, (left->link)->xmin);
- rightedge->xmax = MAX(rightedge->xmax, (left->link)->xmax);
- edgemax(h, rightedge->xvalues, (left->link)->xvalues);
- discard(before, after);
- }
- return(before);
-}
-#ifdef notused
-/*
-:h3.swathrightmost() - Simply Sorts New Edge to Rightmost of Swath
-
-Like all swath functions, this function returns a pointer to the edge
-BEFORE the given edge in the sort.
-*/
-
-static struct edgelist *
-swathrightmost(struct edgelist *before, /* edge before this swath */
- struct edgelist *edge) /* input edge */
-{
- register struct edgelist *after;
-
- after = before->link;
-
- while (after != NULL && TOP(after) == TOP(edge)) {
- before = after;
- after = after->link;
- }
-
- return(before);
-
-}
-#endif
-/*
-:h3.touches() - Returns the Remaining Height When Two Edges Touch
-
-So, it will return 0 if they never touch. Allows incredibly(?) mnemonic
-if (touches(...)) construct.
-*/
-
-static int
-touches(int h, pel *left, pel *right)
-{
- for (; h > 0; h--)
- if (*left++ >= *right++)
- break;
- return(h);
-}
-/*
-:h3.crosses() - Returns the Remaining Height When Two Edges Cross
-
-So, it will return 0 if they never cross.
-*/
-
-static int
-crosses(int h, pel *left, pel *right)
-{
- for (; h > 0; h--)
- if (*left++ > *right++)
- break;
- return(h);
-}
-/*
-:h3.edgemin() - Stores the Mininum of Two Edges in First Edge
-*/
-
-static void
-edgemin(int h, pel *e1, pel *e2)
-{
- for (; --h >= 0; e1++,e2++)
- if (*e1 > *e2)
- *e1 = *e2;
-}
-/*
-:h3.edgemax() - Stores the Maximum of Two Edges in First Edge
-*/
-
-static void
-edgemax(int h, pel *e1, pel *e2)
-{
- for (; --h >= 0; e1++,e2++)
- if (*e1 < *e2)
- *e1 = *e2;
-}
-
-/*
-:h2.Miscelaneous Routines
-
-:h3.MoreWorkArea() - Allocate New Space for "edge"
-
-Our strategy is to temporarily allocate an array to hold this
-unexpectedly large edge. ChangeDirection frees this array any time
-it gets a shorter 'dy'.
-*/
-
-/*ARGSUSED*/
-void
-MoreWorkArea(struct region *R, /* region we are generating */
- fractpel x1, fractpel y1, /* starting point of line */
- fractpel x2, fractpel y2) /* ending point of line */
-{
- register int idy; /* integer dy of line */
-
- idy = NEARESTPEL(y1) - NEARESTPEL(y2);
- if (idy < 0) idy = - idy;
-
- /*
- * we must add one to the delta for the number of run ends we
- * need to store:
- */
- if (++idy > currentsize) {
- if (currentworkarea != workedge)
- NonObjectFree(currentworkarea);
- currentworkarea = (pel *)Allocate(0, NULL, idy * sizeof(pel));
- currentsize = idy;
- }
- ChangeDirection(CD_CONTINUE, R, x1, y1, y2 - y1);
-}
diff --git a/libXfont/src/Type1/regions.h b/libXfont/src/Type1/regions.h
deleted file mode 100644
index d869cf7e1..000000000
--- a/libXfont/src/Type1/regions.h
+++ /dev/null
@@ -1,224 +0,0 @@
-/* $Xorg: regions.h,v 1.3 2000/08/17 19:46:32 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/regions.h,v 1.7 2001/01/17 19:43:23 dawes Exp $ */
-/*SHARED*/
-
-#define Interior(p,rule) t1_Interior(p,rule)
-#define Union(a1,a2) t1_Union(a1,a2)
-#define Intersect(a1,a2) t1_Intersect(a1,a2)
-#define Complement(area) t1_Complement(area)
-#define Overlap(a1,a2) t1_OverLap(a1,a2)
-
-
-/* returns the interior of a closed path */
-extern struct region *t1_Interior ( struct segment *p, int fillrule );
-#if 0
-struct region *t1_Union(); /* set union of paths or regions */
-struct region *t1_Intersect(); /* set intersection of regions */
-struct region *t1_Complement(); /* complement of a region */
-int t1_Overlap(); /* returns a Boolean; TRUE if regions overlap */
-#endif
-
-#define TT_INFINITY t1_Infinity
-
-/*END SHARED*/
-/*SHARED*/
-
-#define ChangeDirection(type,R,x,y,dy) t1_ChangeDirection(type,R,x,y,dy)
-
-/* called when we change direction in Y */
-extern void t1_ChangeDirection ( int type, struct region *R, fractpel x,
- fractpel y, fractpel dy );
-#define CD_FIRST -1 /* enumeration of ChangeDirection type */
-#define CD_CONTINUE 0 /* enumeration of ChangeDirection type */
-#define CD_LAST 1 /* enumeration of ChangeDirection type */
-
-#define MoreWorkArea(R,x1,y1,x2,y2) t1_MoreWorkArea(R,x1,y1,x2,y2)
-#define KillRegion(area) t1_KillRegion(area)
-#define CopyRegion(area) t1_CopyRegion(area)
-#define BoxClip(R,xmin,ymin,xmax,ymax) t1_BoxClip(R,xmin,ymin,xmax,ymax)
-#define SortSwath(a,p,f) t1_SortSwath(a,p,f)
-#define SwathUnion(b,e) t1_SwathUnion(b,e)
-#define RegionBounds(r) t1_RegionBounds(r)
-#define CoerceRegion(p) t1_CoerceRegion(p)
-#define MoveEdges(R,dx,dy) t1_MoveEdges(R,dx,dy)
-#define UnJumble(R) t1_UnJumble(R)
-
-typedef struct edgelist *(*SwathFunc)(struct edgelist *, struct edgelist *);
-
-/* get longer edge list for stepping */
-extern void t1_MoreWorkArea ( struct region *R, fractpel x1, fractpel y1,
- fractpel x2, fractpel y2 );
-/* duplicate a region */
-extern struct region *t1_CopyRegion ( struct region *area );
-/* destroy a region */
-extern void t1_KillRegion ( struct region *area );
-
-/*END SHARED*/
-/*SHARED*/
-
-#define GOING_TO(R, x1, y1, x2, y2, dy) { \
- if (dy < 0) { \
- if (R->lastdy >= 0) \
- ChangeDirection(CD_CONTINUE, R, x1, y1, dy); \
- if (y2 < R->edgeYstop) \
- MoreWorkArea(R, x1, y1, x2, y2); \
- } \
- else if (dy > 0) { \
- if (R->lastdy <= 0) \
- ChangeDirection(CD_CONTINUE, R, x1, y1, dy); \
- if (y2 > R->edgeYstop) \
- MoreWorkArea(R, x1, y1, x2, y2); \
- } \
- else /* dy == 0 */ ChangeDirection(CD_CONTINUE, R, x1, y1, dy); \
- if (x2 < R->edgexmin) R->edgexmin = x2; \
- else if (x2 > R->edgexmax) R->edgexmax = x2; \
-}
-
-#ifndef FONTMODULE
-#ifndef __sxg__
-#include <limits.h>
-#endif
-#endif
-#ifdef SHRT_MIN
-#define MINPEL SHRT_MIN
-#else
-#define MINPEL ((pel)(-1<<(8*sizeof(pel)-1))) /* smallest value fitting in a pel */
-#endif
-#ifdef SHRT_MAX
-#define MAXPEL SHRT_MAX
-#else
-#define MAXPEL ((pel)((1<<(8*sizeof(pel)-1))-1))/* largest value fitting in a pel */
-#endif
-
-/*
-The "Unique"-type macro is different (unique?) for regions, because some
-regions structures are shared among several objects, and might have
-to be made unique for that reason (i.e., references > 1).
-*/
-
-#define ConsumeRegion(R) MAKECONSUME(R,KillRegion(R))
-#define UniqueRegion(R) MAKEUNIQUE(R,CopyRegion(R))
-
-
-/*END SHARED*/
-/*SHARED*/
-
-typedef void (*NewEdgeFunc)(struct region *,
- fractpel, fractpel, fractpel, fractpel, int);
-
-struct region {
- XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
- /* type = REGIONTYPE */
- struct fractpoint origin; /* beginning handle: X,Y origin of region */
- struct fractpoint ending; /* ending handle: X,Y change after painting region */
- pel xmin,ymin; /* minimum X,Y of region */
- pel xmax,ymax; /* mat1_mum X,Y of region */
- struct edgelist *anchor; /* list of edges that bound the region */
- struct picture *thresholded; /* region defined by thresholded picture*/
-/*
-Note that the ending handle and the bounding box values are stored
-relative to 'origin'.
-
-The above elements describe a region. The following elements are
-scratchpad areas used while the region is being built:
-*/
- fractpel lastdy; /* direction of last segment */
- fractpel firstx,firsty; /* starting point of current edge */
- fractpel edgexmin,edgexmax; /* x extent of current edge */
- struct edgelist *lastedge,*firstedge; /* last and first edges in subpath */
- pel *edge; /* pointer to array of X values for edge */
- fractpel edgeYstop; /* Y value where 'edges' array ends */
- NewEdgeFunc newedgefcn; /* function to use when building a new edge */
- struct strokeinfo *strokeinfo; /* scratchpad info during stroking only */
-} ;
-/*
-The ISCOMPLEMENT flag indicates the region is reversed--it is the
-"outside" of the nominal region.
-*/
-#define ISCOMPLEMENT(flag) ((flag)&0x80)
-/*
-The ISJUMBLED flag indicates the region is not sorted top-to-bottom.
-*/
-#define ISJUMBLED(flag) ((flag)&0x40)
-/*
-The ISINFINITE flag allows a quick check for an INFINITE region, which
-is frequently intersected.
-*/
-#define ISINFINITE(flag) ((flag)&0x20)
-
-/*END SHARED*/
-/*SHARED*/
-
-#define ISRECTANGULAR(flag) ((flag)&0x08)
-
-/*END SHARED*/
-/*SHARED*/
-
-#define EmptyRegion t1_EmptyRegion
-
-/*END SHARED*/
-/*SHARED*/
-
-struct edgelist {
- XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
- /* type = EDGETYPE */
- struct edgelist *link; /* pointer to next in linked list */
- struct edgelist *subpath; /* informational link for "same subpath" */
- pel xmin,xmax; /* range of edge in X */
- pel ymin,ymax; /* range of edge in Y */
- pel *xvalues; /* pointer to ymax-ymin X values */
-} ;
-/*
-The end of the list is marked by either "link" being NULL, or by
-ymin == ymax. See :hdref refid=discard.. We define the VALIDEDGE
-predicate to test for the opposite of these conditions:
-*/
-
-#define VALIDEDGE(p) ((p)!=NULL&&(p)->ymin<(p)->ymax)
-
-/*END SHARED*/
-/*SHARED*/
-
-#define ISDOWN(f) ((f)&0x80)
-
-#define ISAMBIGUOUS(f) ((f)&0x40)
-
-/*END SHARED*/
-/*SHARED*/
-
-/*
-Interior() rule enumerations:
-*/
-#define WINDINGRULE -2
-#define EVENODDRULE -3
-
-#define CONTINUITY 0x80 /* can be added to above rules; e.g. WINDINGRULE+CONTINUITY */
-
-/*END SHARED*/
diff --git a/libXfont/src/Type1/scanfont.c b/libXfont/src/Type1/scanfont.c
deleted file mode 100644
index 8cad57fcf..000000000
--- a/libXfont/src/Type1/scanfont.c
+++ /dev/null
@@ -1,1526 +0,0 @@
-/* $XdotOrg: xc/lib/font/Type1/scanfont.c,v 1.5 2005/07/09 23:18:27 keithp Exp $ */
-/* $Xorg: scanfont.c,v 1.3 2000/08/17 19:46:32 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */
-/* $XFree86: xc/lib/font/Type1/scanfont.c,v 1.16 2003/05/27 22:26:46 tsi Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifndef FONTMODULE
-#include <string.h>
-#else
-#include "Xdefs.h" /* Bool declaration */
-#include "Xmd.h" /* INT32 declaration */
-#include "xf86_ansic.h"
-#endif
-#include "t1stdio.h"
-#include "util.h"
-#include "token.h"
-#include "objects.h"
-#include "spaces.h"
-#include "fontfcn.h"
-#include "blues.h"
-
-#include <limits.h>
-
-static int rc;
-static boolean InPrivateDict;
-static boolean WantFontInfo;
-static boolean TwoSubrs;
-static psobj inputFile;
-static psobj filterFile;
-static psobj *inputP;
-
-
-/**********************************************************************/
-/* Init_BuiltInEncoding() */
-/* */
-/* Initializes the StandardEncoding and ISOLatin1Encoding vector. */
-/* */
-/**********************************************************************/
-typedef struct /* Builtin Standard Encoding */
-{
- int index;
- char *name;
-} EncodingTable;
-
-static EncodingTable StdEnc[] = {
- { 040 , "space" },
- { 041 , "exclam" },
- { 042 , "quotedbl" },
- { 043 , "numbersign" },
- { 044 , "dollar" },
- { 045 , "percent" },
- { 046 , "ampersand" },
- { 047 , "quoteright" },
- { 050 , "parenleft" },
- { 051 , "parenright" },
- { 052 , "asterisk" },
- { 053 , "plus" },
- { 054 , "comma" },
- { 055 , "hyphen" },
- { 056 , "period" },
- { 057 , "slash" },
- { 060 , "zero" },
- { 061 , "one" },
- { 062 , "two" },
- { 063 , "three" },
- { 064 , "four" },
- { 065 , "five" },
- { 066 , "six" },
- { 067 , "seven" },
- { 070 , "eight" },
- { 071 , "nine" },
- { 072 , "colon" },
- { 073 , "semicolon" },
- { 074 , "less" },
- { 075 , "equal" },
- { 076 , "greater" },
- { 077 , "question" },
- { 0100 , "at" },
- { 0101 , "A" },
- { 0102 , "B" },
- { 0103 , "C" },
- { 0104 , "D" },
- { 0105 , "E" },
- { 0106 , "F" },
- { 0107 , "G" },
- { 0110 , "H" },
- { 0111 , "I" },
- { 0112 , "J" },
- { 0113 , "K" },
- { 0114 , "L" },
- { 0115 , "M" },
- { 0116 , "N" },
- { 0117 , "O" },
- { 0120 , "P" },
- { 0121 , "Q" },
- { 0122 , "R" },
- { 0123 , "S" },
- { 0124 , "T" },
- { 0125 , "U" },
- { 0126 , "V" },
- { 0127 , "W" },
- { 0130 , "X" },
- { 0131 , "Y" },
- { 0132 , "Z" },
- { 0133 , "bracketleft" },
- { 0134 , "backslash" },
- { 0135 , "bracketright" },
- { 0136 , "asciicircum" },
- { 0137 , "underscore" },
- { 0140 , "quoteleft" },
- { 0141 , "a" },
- { 0142 , "b" },
- { 0143 , "c" },
- { 0144 , "d" },
- { 0145 , "e" },
- { 0146 , "f" },
- { 0147 , "g" },
- { 0150 , "h" },
- { 0151 , "i" },
- { 0152 , "j" },
- { 0153 , "k" },
- { 0154 , "l" },
- { 0155 , "m" },
- { 0156 , "n" },
- { 0157 , "o" },
- { 0160 , "p" },
- { 0161 , "q" },
- { 0162 , "r" },
- { 0163 , "s" },
- { 0164 , "t" },
- { 0165 , "u" },
- { 0166 , "v" },
- { 0167 , "w" },
- { 0170 , "x" },
- { 0171 , "y" },
- { 0172 , "z" },
- { 0173 , "braceleft" },
- { 0174 , "bar" },
- { 0175 , "braceright" },
- { 0176 , "asciitilde" },
- { 0241 , "exclamdown" },
- { 0242 , "cent" },
- { 0243 , "sterling" },
- { 0244 , "fraction" },
- { 0245 , "yen" },
- { 0246 , "florin" },
- { 0247 , "section" },
- { 0250 , "currency" },
- { 0251 , "quotesingle" },
- { 0252 , "quotedblleft" },
- { 0253 , "guillemotleft" },
- { 0254 , "guilsinglleft" },
- { 0255 , "guilsinglright" },
- { 0256 , "fi" },
- { 0257 , "fl" },
- { 0261 , "endash" },
- { 0262 , "dagger" },
- { 0263 , "daggerdbl" },
- { 0264 , "periodcentered" },
- { 0266 , "paragraph" },
- { 0267 , "bullet" },
- { 0270 , "quotesinglbase" },
- { 0271 , "quotedblbase" },
- { 0272 , "quotedblright" },
- { 0273 , "guillemotright" },
- { 0274 , "ellipsis" },
- { 0275 , "perthousand" },
- { 0277 , "questiondown" },
- { 0301 , "grave" },
- { 0302 , "acute" },
- { 0303 , "circumflex" },
- { 0304 , "tilde" },
- { 0305 , "macron" },
- { 0306 , "breve" },
- { 0307 , "dotaccent" },
- { 0310 , "dieresis" },
- { 0312 , "ring" },
- { 0313 , "cedilla" },
- { 0315 , "hungarumlaut" },
- { 0316 , "ogonek" },
- { 0317 , "caron" },
- { 0320 , "emdash" },
- { 0341 , "AE" },
- { 0343 , "ordfeminine" },
- { 0350 , "Lslash" },
- { 0351 , "Oslash" },
- { 0352 , "OE" },
- { 0353 , "ordmasculine" },
- { 0361 , "ae" },
- { 0365 , "dotlessi" },
- { 0370 , "lslash" },
- { 0371 , "oslash" },
- { 0372 , "oe" },
- { 0373 , "germandbls" },
- { 0, 0 }
-};
-
-static EncodingTable ISO8859Enc[] = {
- { 32, "space" },
- { 33, "exclam" },
- { 34, "quotedbl" },
- { 35, "numbersign" },
- { 36, "dollar" },
- { 37, "percent" },
- { 38, "ampersand" },
- { 39, "quoteright" },
- { 40, "parenleft" },
- { 41, "parenright" },
- { 42, "asterisk" },
- { 43, "plus" },
- { 44, "comma" },
- { 45, "minus" },
- { 46, "period" },
- { 47, "slash" },
- { 48, "zero" },
- { 49, "one" },
- { 50, "two" },
- { 51, "three" },
- { 52, "four" },
- { 53, "five" },
- { 54, "six" },
- { 55, "seven" },
- { 56, "eight" },
- { 57, "nine" },
- { 58, "colon" },
- { 59, "semicolon" },
- { 60, "less" },
- { 61, "equal" },
- { 62, "greater" },
- { 63, "question" },
- { 64, "at" },
- { 65, "A" },
- { 66, "B" },
- { 67, "C" },
- { 68, "D" },
- { 69, "E" },
- { 70, "F" },
- { 71, "G" },
- { 72, "H" },
- { 73, "I" },
- { 74, "J" },
- { 75, "K" },
- { 76, "L" },
- { 77, "M" },
- { 78, "N" },
- { 79, "O" },
- { 80, "P" },
- { 81, "Q" },
- { 82, "R" },
- { 83, "S" },
- { 84, "T" },
- { 85, "U" },
- { 86, "V" },
- { 87, "W" },
- { 88, "X" },
- { 89, "Y" },
- { 90, "Z" },
- { 91, "bracketleft" },
- { 92, "backslash" },
- { 93, "bracketright" },
- { 94, "asciicircum" },
- { 95, "underscore" },
- { 96, "quoteleft" },
- { 97, "a" },
- { 98, "b" },
- { 99, "c" },
- { 100, "d" },
- { 101, "e" },
- { 102, "f" },
- { 103, "g" },
- { 104, "h" },
- { 105, "i" },
- { 106, "j" },
- { 107, "k" },
- { 108, "l" },
- { 109, "m" },
- { 110, "n" },
- { 111, "o" },
- { 112, "p" },
- { 113, "q" },
- { 114, "r" },
- { 115, "s" },
- { 116, "t" },
- { 117, "u" },
- { 118, "v" },
- { 119, "w" },
- { 120, "x" },
- { 121, "y" },
- { 122, "z" },
- { 123, "braceleft" },
- { 124, "bar" },
- { 125, "braceright" },
- { 126, "asciitilde" },
- { 160, "space" },
- { 161, "exclamdown" },
- { 162, "cent" },
- { 163, "sterling" },
- { 164, "currency" },
- { 165, "yen" },
- { 166, "brokenbar" },
- { 167, "section" },
- { 168, "dieresis" },
- { 169, "copyright" },
- { 170, "ordfeminine" },
- { 171, "guillemotleft" },
- { 172, "logicalnot" },
- { 173, "hyphen" },
- { 174, "registered" },
- { 175, "macron" },
- { 176, "degree" },
- { 177, "plusminus" },
- { 178, "twosuperior" },
- { 179, "threesuperior" },
- { 180, "acute" },
- { 181, "mu" },
- { 182, "paragraph" },
- { 183, "periodcentered" },
- { 184, "cedilla" },
- { 185, "onesuperior" },
- { 186, "ordmasculine" },
- { 187, "guillemotright" },
- { 188, "onequarter" },
- { 189, "onehalf" },
- { 190, "threequarters" },
- { 191, "questiondown" },
- { 192, "Agrave" },
- { 193, "Aacute" },
- { 194, "Acircumflex" },
- { 195, "Atilde" },
- { 196, "Adieresis" },
- { 197, "Aring" },
- { 198, "AE" },
- { 199, "Ccedilla" },
- { 200, "Egrave" },
- { 201, "Eacute" },
- { 202, "Ecircumflex" },
- { 203, "Edieresis" },
- { 204, "Igrave" },
- { 205, "Iacute" },
- { 206, "Icircumflex" },
- { 207, "Idieresis" },
- { 208, "Eth" },
- { 209, "Ntilde" },
- { 210, "Ograve" },
- { 211, "Oacute" },
- { 212, "Ocircumflex" },
- { 213, "Otilde" },
- { 214, "Odieresis" },
- { 215, "multiply" },
- { 216, "Oslash" },
- { 217, "Ugrave" },
- { 218, "Uacute" },
- { 219, "Ucircumflex" },
- { 220, "Udieresis" },
- { 221, "Yacute" },
- { 222, "Thorn" },
- { 223, "germandbls" },
- { 224, "agrave" },
- { 225, "aacute" },
- { 226, "acircumflex" },
- { 227, "atilde" },
- { 228, "adieresis" },
- { 229, "aring" },
- { 230, "ae" },
- { 231, "ccedilla" },
- { 232, "egrave" },
- { 233, "eacute" },
- { 234, "ecircumflex" },
- { 235, "edieresis" },
- { 236, "igrave" },
- { 237, "iacute" },
- { 238, "icircumflex" },
- { 239, "idieresis" },
- { 240, "eth" },
- { 241, "ntilde" },
- { 242, "ograve" },
- { 243, "oacute" },
- { 244, "ocircumflex" },
- { 245, "otilde" },
- { 246, "odieresis" },
- { 247, "divide" },
- { 248, "oslash" },
- { 249, "ugrave" },
- { 250, "uacute" },
- { 251, "ucircumflex" },
- { 252, "udieresis" },
- { 253, "yacute" },
- { 254, "thorn" },
- { 255, "ydieresis" },
- { 0, 0 }
-};
-
-static psobj *StdEncArrayP = NULL;
-static psobj *ISOLatin1EncArrayP = NULL;
-
-static psobj *
-MakeEncodingArrayP(EncodingTable *encodingTable)
-{
- int i;
- psobj *encodingArrayP;
-
- encodingArrayP = (psobj *)vm_alloc(256*(sizeof(psobj)));
- if (!encodingArrayP)
- return NULL;
-
- /* initialize everything to .notdef */
- for (i=0; i<256;i++)
- objFormatName(&(encodingArrayP[i]),7, ".notdef");
-
- for (i=0; encodingTable[i].name; i++)
- {
- objFormatName(&(encodingArrayP[encodingTable[i].index]),
- strlen(encodingTable[i].name),
- encodingTable[i].name);
- }
-
- return(encodingArrayP);
-}
-
-boolean
-Init_BuiltInEncoding(void)
-{
- StdEncArrayP = MakeEncodingArrayP(StdEnc);
- ISOLatin1EncArrayP = MakeEncodingArrayP(ISO8859Enc);
- return (StdEncArrayP && ISOLatin1EncArrayP);
-}
-
-/********************************************************************/
-/***================================================================***/
-static int
-getNextValue(int valueType)
-{
- scan_token(inputP);
- if (tokenType != valueType) {
- return(SCAN_ERROR);
- }
- return(SCAN_OK);
-
-}
-/***================================================================***/
-/* This routine will set the global rc if there is an error */
-/***================================================================***/
-static int
-getInt(void)
-{
- scan_token(inputP);
- if (tokenType != TOKEN_INTEGER) {
- rc = SCAN_ERROR;
- return(0);
- }
- else {
- return( tokenValue.integer);
- }
-
-}
-/***================================================================***/
-/*
- * See Sec 10.3 of ``Adobe Type 1 Font Format'' v1.1,
- * for parsing Encoding.
- */
-static int
-getEncoding(psobj *arrayP)
-{
- scan_token(inputP);
- if ((tokenType == TOKEN_NAME && (tokenLength==16 || tokenLength==17)))
- {
- if((tokenLength==16) && (!strncmp(tokenStartP,"StandardEncoding",16)))
- arrayP->data.valueP = (char *) StdEncArrayP;
- else
- arrayP->data.valueP = (char *) ISOLatin1EncArrayP;
- arrayP->len = 256;
- return(SCAN_OK);
- }
- else if ( (tokenType == TOKEN_LEFT_BRACE) ||
- (tokenType == TOKEN_LEFT_BRACKET) )
- {
- /* Array of literal names */
-
- psobj *objP;
- int i;
-
- objP = (psobj *)vm_alloc(256*(sizeof(psobj)));
- if (!(objP)) return(SCAN_OUT_OF_MEMORY);
-
- arrayP->data.valueP = (char *) objP;
- arrayP->len = 256;
-
- for (i=0; i<256; i++, objP++)
- {
- scan_token(inputP);
-
- if (tokenType != TOKEN_LITERAL_NAME)
- return(SCAN_ERROR);
-
- if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY);
- objFormatName(objP,tokenLength,tokenStartP);
- }
-
- scan_token(inputP);
- if ( (tokenType == TOKEN_RIGHT_BRACE) ||
- (tokenType == TOKEN_RIGHT_BRACKET) )
- return(SCAN_OK);
- }
- else
- {
- /* Must be sequences of ``dup <index> <charactername> put" */
-
- psobj *objP;
- int i;
-
- objP = (psobj *)vm_alloc(256*(sizeof(psobj)));
- if (!(objP)) return(SCAN_OUT_OF_MEMORY);
-
- arrayP->data.valueP = (char *) objP;
- arrayP->len = 256;
-
- for (i=0; i<256; i++)
- objFormatName(objP + i, 7, ".notdef");
-
- while (TRUE)
- {
- scan_token(inputP);
-
- switch (tokenType)
- {
- case TOKEN_NAME:
- if (tokenLength == 3)
- {
- if (strncmp(tokenStartP,"dup",3) == 0)
- {
- /* get <index> */
- scan_token(inputP);
- if (tokenType != TOKEN_INTEGER ||
- tokenValue.integer < 0 ||
- tokenValue.integer > 255)
- return (SCAN_ERROR);
- i = tokenValue.integer;
-
- /* get <characer_name> */
- scan_token(inputP);
- if (tokenType != TOKEN_LITERAL_NAME)
- return(SCAN_ERROR);
-
- if (!(vm_alloc(tokenLength)) )
- return(SCAN_OUT_OF_MEMORY);
- objFormatName(objP + i,tokenLength,tokenStartP);
-
- /* get "put" */
- scan_token(inputP);
- if (tokenType != TOKEN_NAME)
- return(SCAN_ERROR);
- }
- else if (strncmp(tokenStartP,"def",3) == 0)
- return (SCAN_OK);
- }
- break;
- case TOKEN_EOF:
- case TOKEN_NONE:
- case TOKEN_INVALID:
- return (SCAN_ERROR);
- }
- }
- }
-
- return (SCAN_ERROR);
-}
-/***================================================================***/
-static int
-getArray(psobj *arrayP)
-{
- int N; /* count the items in the array */
- psobj *objP;
-
- /* That is totally a kludge. If some stupid font file has
- * /foo/foo # ftp://ftp.cdrom.com/pub/os2/fonts/future.zip
- * we will treat it as /foo.
- * H.J. */
- char tmp [1024];
-
- strncpy (tmp, tokenStartP, sizeof (tmp));
- tmp [sizeof (tmp) - 1] = '\0';
-
-restart:
- scan_token(inputP);
- switch (tokenType)
- {
- case TOKEN_LEFT_BRACE:
- case TOKEN_LEFT_BRACKET:
- break;
-
- case TOKEN_LITERAL_NAME:
- tokenStartP[tokenLength] = '\0';
- if (strcmp (tokenStartP, tmp) == 0)
- {
- /* Ok, We see /foo/foo. Let's restart. */
- goto restart;
- }
-
- default:
- return(SCAN_ERROR);
- }
- /* format the array in memory, save pointer to the beginning */
- arrayP->data.valueP = tokenStartP;
- /* loop, picking up next object, until right BRACE or BRACKET */
- N = 0;
- do {
- scan_token(inputP);
- if ( (tokenType == TOKEN_RIGHT_BRACE) ||
- (tokenType == TOKEN_RIGHT_BRACKET) ) {
- /* save then number of items in the array */
- arrayP->len = N;
- return(SCAN_OK);
- }
- /* allocate the space for the object */
- objP = (psobj *)vm_alloc(sizeof(psobj));
- if (!(objP)) return(SCAN_OUT_OF_MEMORY);
-
- /* array is an array of numbers, (real or integer) */
- if (tokenType == TOKEN_REAL) {
- objFormatReal(objP, tokenValue.real);
- }
- else
- if (tokenType == TOKEN_INTEGER) {
- objFormatInteger(objP, tokenValue.integer);
- }
- else return(SCAN_ERROR);
- N++;
- } while ( 1>0 );
- /* NOTREACHED*/
-}
-/***================================================================***/
-static int
-getName(char *nameP)
-{
- do {
- scan_token(inputP);
- if (tokenType <= TOKEN_NONE) {
- if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
- return(SCAN_ERROR);
- }
- } while ((tokenType != TOKEN_NAME) ||
- (0 != strncmp(tokenStartP,nameP,strlen(nameP))) );
- /* found */
- return(SCAN_OK);
-}
-/***================================================================***/
-static int
-getNbytes(int N)
-{
- int I;
-
-
- tokenStartP = vm_next_byte();
- tokenMaxP = tokenStartP + MIN(vm_free_bytes(), MAX_STRING_LEN);
- if (N > vm_free_bytes()) {
- return(SCAN_OUT_OF_MEMORY);
- }
- I = T1Read(tokenStartP,1,N,inputP->data.fileP);
- if ( I != N ) return(SCAN_FILE_EOF);
- return(SCAN_OK);
-}
-
-/***================================================================***/
-/* getLiteralName(nameObjP) */
-/* scan for next literal. */
-/* if we encounter the name 'end' then terminate and say ok. */
-/* It means that the CharStrings does not have as many characters */
-/* as the dictionary said it would and that is ok. */
-/***================================================================***/
-static int
-getLiteralName(psobj *nameObjP)
-{
- do {
- scan_token(inputP);
- if (tokenType <= TOKEN_NONE) {
- if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
- return(SCAN_ERROR);
- }
- if (tokenType == TOKEN_NAME) {
- if (0 == strncmp(tokenStartP,"end",3) ) {
- return(SCAN_END);
- }
- }
- } while (tokenType != TOKEN_LITERAL_NAME) ;
- nameObjP->len = tokenLength;
- /* allocate all the names in the CharStrings Structure */
- if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY);
- nameObjP->data.valueP = tokenStartP;
- /* found */
- return(SCAN_OK);
-}
-
-/***================================================================***/
-/*
- * BuildSubrs routine
- */
-/***================================================================***/
-
-static int
-BuildSubrs(psfont *FontP)
-{
- int N; /* number of values in Subrs */
- int I; /* index into Subrs */
- int i; /* loop thru Subrs */
- int J; /* length of Subrs entry */
- psobj *arrayP;
-
- /* next token should be a positive int */
- /* note: rc is set by getInt. */
- N = getInt();
- if (rc) return(rc);
- if (N < 0 ) return(SCAN_ERROR);
- /* if we already have a Subrs, then skip the second one */
- /* The second one is for hiresolution devices. */
- if (FontP->Subrs.data.arrayP != NULL) {
- TwoSubrs = TRUE;
- /* process all the Subrs, but do not update anything */
- /* can not just skip them because of the binary data */
- for (i=0;i<N;i++) {
- /* look for dup */
- rc = getName("dup");
- if (rc) return(rc);
- /* get 2 integers */
- I = getInt();
- if (rc) return(rc);
- J = getInt();
- if (rc) return(rc);
- if ( (I < 0) || (J < 0 ) ) return (SCAN_ERROR);
- /* get the next token, it should be RD or -|, either is ok */
- rc = getNextValue(TOKEN_NAME);
- if ( rc != SCAN_OK ) return(rc);
- rc = getNbytes(J);
- if (rc) return(rc);
- }
- return(SCAN_OK);
- }
- if (N > INT_MAX / sizeof(psobj))
- return (SCAN_ERROR);
- arrayP = (psobj *)vm_alloc(N*sizeof(psobj));
- if (!(arrayP) ) return(SCAN_OUT_OF_MEMORY);
- FontP->Subrs.len = N;
- FontP->Subrs.data.arrayP = arrayP;
- /* get N values for Subrs */
- for (i=0;i<N;i++) {
- /* look for dup */
- rc = getName("dup");
- if (rc) return(rc);
- /* get 2 integers */
- I = getInt();
- if (rc) return(rc);
- J = getInt();
- if (rc) return(rc);
- if ( (I < 0) || (J < 0 ) ) return (SCAN_ERROR);
- arrayP[I].len = J;
- /* get the next token, it should be RD or -|, either is ok */
- rc = getNextValue(TOKEN_NAME);
- if ( rc != SCAN_OK ) return(rc);
- rc = getNbytes(J);
- if (rc == SCAN_OK) {
- arrayP[I].data.valueP = tokenStartP;
- if ( !(vm_alloc(J)) ) return(SCAN_OUT_OF_MEMORY);
- }
- else return(rc);
- }
- return(SCAN_OK);
-
-}
-/***================================================================***/
-/***================================================================***/
-/*
- * BuildCharStrings routine
- */
-/***================================================================***/
-
-static int
-BuildCharStrings(psfont *FontP)
-{
- int N; /* number of values in CharStrings */
- int i; /* loop thru Subrs */
- int J; /* length of Subrs entry */
- psdict *dictP;
-
- /* next token should be a positive int */
- N = getInt();
- if (rc) {
- /* check if file had TwoSubrs, hi resolution stuff is in file*/
- if (TwoSubrs) {
- do {
- scan_token(inputP);
- if (tokenType <= TOKEN_NONE) {
- if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
- return(SCAN_ERROR);
- }
- } while (tokenType != TOKEN_INTEGER);
- N = tokenValue.integer;
- }
- else return(rc); /* if next token was not an Int */
- }
- if (N<=0 || N > INT_MAX / sizeof(psdict)) return(SCAN_ERROR);
- /* save number of entries in the dictionary */
-
- dictP = (psdict *)vm_alloc((N+1)*sizeof(psdict));
- if (!(dictP)) return(SCAN_OUT_OF_MEMORY);
- FontP->CharStringsP = dictP;
- dictP[0].key.len = N;
- /* get N values for CharStrings */
- for (i=1;i<=N;i++) {
- /* look for next literal name */
- rc = getLiteralName(&(dictP[i].key));
- if (rc) return(rc);
- /* get 1 integer */
- J = getInt();
- if (rc) return(rc); /* if next token was not an Int */
- if (J<0) return (SCAN_ERROR);
- dictP[i].value.len = J;
- /* get the next token, it should be RD or -|, either is ok */
- rc = getNextValue(TOKEN_NAME);
- if ( rc != SCAN_OK ) return(rc);
- rc = getNbytes(J);
- if (rc == SCAN_OK) {
- dictP[i].value.data.valueP = tokenStartP;
- if ( !(vm_alloc(J)) ) return(SCAN_OUT_OF_MEMORY);
- }
- else return(rc);
- }
- return(SCAN_OK);
-
-}
-/***================================================================***/
-/*
- * BuildFontInfo Dictionary
- */
-/***================================================================***/
-static int
-BuildFontInfo(psfont *fontP)
-{
- psdict *dictP;
-
- /* allocate the private dictionary */
- dictP = (psdict *)vm_alloc(20*sizeof(psdict));
- if (!(dictP)) return(SCAN_OUT_OF_MEMORY);
-
- fontP->fontInfoP = dictP;
- fontP->fontInfoP[0].key.len = 17; /* number of actual entries */
- objFormatName(&(dictP[FONTNAME].key),8,"FontName");
- objFormatName(&(dictP[FONTNAME].value),0,NULL);
- objFormatName(&(dictP[PAINTTYPE].key),9,"PaintType");
- objFormatInteger(&(dictP[PAINTTYPE].value),0);
- objFormatName(&(dictP[FONTTYPENUM].key),8,"FontType");
- objFormatInteger(&(dictP[FONTTYPENUM].value),0);
- objFormatName(&(dictP[FONTMATRIX].key),10,"FontMatrix");
- objFormatArray(&(dictP[FONTMATRIX].value),0,NULL);
- objFormatName(&(dictP[FONTBBOX].key),8,"FontBBox");
- objFormatArray(&(dictP[FONTBBOX].value),0,NULL);
- objFormatName(&(dictP[ENCODING].key),8,"Encoding");
- objFormatEncoding(&(dictP[ENCODING].value),0,NULL);
- objFormatName(&(dictP[UNIQUEID].key),8,"UniqueID");
- objFormatInteger(&(dictP[UNIQUEID].value),0);
- objFormatName(&(dictP[STROKEWIDTH].key),11,"StrokeWidth");
- objFormatReal(&(dictP[STROKEWIDTH].value),0.0);
- objFormatName(&(dictP[VERSION].key),7,"version");
- objFormatString(&(dictP[VERSION].value),0,NULL);
- objFormatName(&(dictP[NOTICE].key),6,"Notice");
- objFormatString(&(dictP[NOTICE].value),0,NULL);
- objFormatName(&(dictP[FULLNAME].key),8,"FullName");
- objFormatString(&(dictP[FULLNAME].value),0,NULL);
- objFormatName(&(dictP[FAMILYNAME].key),10,"FamilyName");
- objFormatString(&(dictP[FAMILYNAME].value),0,NULL);
- objFormatName(&(dictP[WEIGHT].key),6,"Weight");
- objFormatString(&(dictP[WEIGHT].value),0,NULL);
- objFormatName(&(dictP[ITALICANGLE].key),11,"ItalicAngle");
- objFormatReal(&(dictP[ITALICANGLE].value),0.0);
- objFormatName(&(dictP[ISFIXEDPITCH].key),12,"isFixedPitch");
- objFormatBoolean(&(dictP[ISFIXEDPITCH].value),FALSE);
- objFormatName(&(dictP[UNDERLINEPOSITION].key),17,"UnderlinePosition");
- objFormatReal(&(dictP[UNDERLINEPOSITION].value),0.0);
- objFormatName(&(dictP[UNDERLINETHICKNESS].key),18,"UnderlineThickness");
- objFormatReal(&(dictP[UNDERLINETHICKNESS].value),0.0);
- return(SCAN_OK);
-}
-/***================================================================***/
-/*
- * BuildPrivate Dictionary
- */
-/***================================================================***/
-static int
-BuildPrivate(psfont *fontP)
-{
- psdict *Private;
-
- /* allocate the private dictionary */
- Private = (psdict *)vm_alloc(20*sizeof(psdict));
-
- if (!(Private)) return(SCAN_OUT_OF_MEMORY);
-
- fontP->Private = Private;
- fontP->Private[0].key.len = 16; /* number of actual entries */
-
- objFormatName(&(Private[BLUEVALUES].key),10,"BlueValues");
- objFormatArray(&(Private[BLUEVALUES].value),0,NULL);
- objFormatName(&(Private[OTHERBLUES].key),10,"OtherBlues");
- objFormatArray(&(Private[OTHERBLUES].value),0,NULL);
- objFormatName(&(Private[FAMILYBLUES].key),11,"FamilyBlues");
- objFormatArray(&(Private[FAMILYBLUES].value),0,NULL);
- objFormatName(&(Private[FAMILYOTHERBLUES].key),16,"FamilyOtherBlues");
- objFormatArray(&(Private[FAMILYOTHERBLUES].value),0,NULL);
- objFormatName(&(Private[BLUESCALE].key),9,"BlueScale");
- objFormatReal(&(Private[BLUESCALE].value),DEFAULTBLUESCALE);
- objFormatName(&(Private[BLUESHIFT].key),9,"BlueShift");
- objFormatInteger(&(Private[BLUESHIFT].value),DEFAULTBLUESHIFT);
- objFormatName(&(Private[BLUEFUZZ].key),8,"BlueFuzz");
- objFormatInteger(&(Private[BLUEFUZZ].value),DEFAULTBLUEFUZZ);
- objFormatName(&(Private[STDHW].key),5,"StdHW");
- objFormatArray(&(Private[STDHW].value),0,NULL);
- objFormatName(&(Private[STDVW].key),5,"StdVW");
- objFormatArray(&(Private[STDVW].value),0,NULL);
- objFormatName(&(Private[STEMSNAPH].key),9,"StemSnapH");
- objFormatArray(&(Private[STEMSNAPH].value),0,NULL);
- objFormatName(&(Private[STEMSNAPV].key),9,"StemSnapV");
- objFormatArray(&(Private[STEMSNAPV].value),0,NULL);
- objFormatName(&(Private[FORCEBOLD].key),9,"ForceBold");
- objFormatBoolean(&(Private[FORCEBOLD].value),DEFAULTFORCEBOLD);
- objFormatName(&(Private[LANGUAGEGROUP].key),13,"LanguageGroup");
- objFormatInteger(&(Private[LANGUAGEGROUP].value),DEFAULTLANGUAGEGROUP);
- objFormatName(&(Private[LENIV].key),5,"lenIV");
- objFormatInteger(&(Private[LENIV].value),DEFAULTLENIV);
- objFormatName(&(Private[RNDSTEMUP].key),9,"RndStemUp");
- objFormatBoolean(&(Private[RNDSTEMUP].value),DEFAULTRNDSTEMUP);
- objFormatName(&(Private[EXPANSIONFACTOR].key),9,"ExpansionFactor");
- objFormatReal(&(Private[EXPANSIONFACTOR].value),
- DEFAULTEXPANSIONFACTOR);
- return(SCAN_OK);
-}
-/***================================================================***/
-/**********************************************************************/
-/* GetType1Blues(fontP) */
-/* */
-/* Routine to support font-level hints. */
-/* */
-/* Gets all the Blues information from the Private dictionary */
-/* for the font. */
-/* */
-/* */
-/**********************************************************************/
-static int
-GetType1Blues(psfont *fontP)
-{
- psdict *PrivateDictP; /* the Private dict relating to hints */
- struct blues_struct *blues; /* ptr for the blues struct we will allocate */
- int i;
- psobj *HintEntryP;
-
-
-
- /* get the Private dictionary pointer */
- PrivateDictP = fontP->Private;
-
- /* allocate the memory for the blues structure */
- blues = (struct blues_struct *) vm_alloc(sizeof(struct blues_struct));
-
- if (!blues) return(SCAN_OUT_OF_MEMORY);
-
- /* Make fontP's blues ptr point to this newly allocated structure. */
- fontP->BluesP = blues;
-
- /* fill in the BlueValues array */
- HintEntryP = &(PrivateDictP[BLUEVALUES].value);
- /* check to see if the entry exists and if it's an array */
- if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
- blues->numBlueValues = 0;
- else {
- /* get the number of values in the array */
- if (HintEntryP->len > NUMBLUEVALUES) {
- blues->numBlueValues = NUMBLUEVALUES;
- } else
- blues->numBlueValues = HintEntryP->len;
- for (i = 0; i<= blues->numBlueValues-1; ++i) {
- if (objPIsInteger(&HintEntryP->data.arrayP[i]))
- blues->BlueValues[i] =
- HintEntryP->data.arrayP[i].data.integer;
- else if (objPIsReal(&HintEntryP->data.arrayP[i]))
- blues->BlueValues[i] =
- HintEntryP->data.arrayP[i].data.real;
- else
- blues->BlueValues[i] = 0;
- }
- }
-
- /* fill in the OtherBlues array */
- HintEntryP = &(PrivateDictP[OTHERBLUES].value);
- /* check to see if the entry exists and if it's an array */
- if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
- blues->numOtherBlues = 0;
- else {
- /* get the number of values in the array */
- if (HintEntryP->len > NUMOTHERBLUES) {
- blues->numOtherBlues = NUMOTHERBLUES;
- } else
- blues->numOtherBlues = HintEntryP->len;
- for (i = 0; i<= blues->numOtherBlues-1; ++i) {
- if (objPIsInteger(&HintEntryP->data.arrayP[i]))
- blues->OtherBlues[i] =
- HintEntryP->data.arrayP[i].data.integer;
- else if (objPIsReal(&HintEntryP->data.arrayP[i]))
- blues->OtherBlues[i] =
- HintEntryP->data.arrayP[i].data.real;
- else
- blues->OtherBlues[i] = 0;
- }
- }
-
- /* fill in the FamilyBlues array */
- HintEntryP = &(PrivateDictP[FAMILYBLUES].value);
- /* check to see if the entry exists and if it's an array */
- if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
- blues->numFamilyBlues = 0;
- else {
- /* get the number of values in the array */
- if (HintEntryP->len > NUMFAMILYBLUES) {
- blues->numFamilyBlues = NUMFAMILYBLUES;
- } else
- blues->numFamilyBlues = HintEntryP->len;
- for (i = 0; i<= blues->numFamilyBlues-1; ++i) {
- if (objPIsInteger(&HintEntryP->data.arrayP[i]))
- blues->FamilyBlues[i] =
- HintEntryP->data.arrayP[i].data.integer;
- else if (objPIsReal(&HintEntryP->data.arrayP[i]))
- blues->FamilyBlues[i] =
- HintEntryP->data.arrayP[i].data.real;
- else
- blues->FamilyBlues[i] = 0;
- }
- }
-
- /* fill in the FamilyOtherBlues array */
- HintEntryP = &(PrivateDictP[FAMILYOTHERBLUES].value);
- /* check to see if the entry exists and if it's an array */
- if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
- blues->numFamilyOtherBlues = 0;
- else {
- /* get the number of values in the array */
- if (HintEntryP->len > NUMFAMILYOTHERBLUES) {
- blues->numFamilyOtherBlues = NUMFAMILYOTHERBLUES;
- } else
- blues->numFamilyOtherBlues = HintEntryP->len;
- for (i = 0; i<= blues->numFamilyOtherBlues-1; ++i) {
- if (objPIsInteger(&HintEntryP->data.arrayP[i]))
- blues->FamilyOtherBlues[i] =
- HintEntryP->data.arrayP[i].data.integer;
- else if (objPIsReal(&HintEntryP->data.arrayP[i]))
- blues->FamilyOtherBlues[i] =
- HintEntryP->data.arrayP[i].data.real;
- else
- blues->FamilyOtherBlues[i] = 0;
- }
- }
-
- /* fill in the StemSnapH array */
- HintEntryP = &(PrivateDictP[STEMSNAPH].value);
- /* check to see if the entry exists and if it's an array */
- if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
- blues->numStemSnapH = 0;
- else {
- /* get the number of values in the array */
- if (HintEntryP->len > NUMSTEMSNAPH) {
- blues->numStemSnapH = NUMSTEMSNAPH;
- } else
- blues->numStemSnapH = HintEntryP->len;
- for (i = 0; i<= blues->numStemSnapH-1; ++i) {
- if (objPIsInteger(&HintEntryP->data.arrayP[i]))
- blues->StemSnapH[i] =
- HintEntryP->data.arrayP[i].data.integer;
- else if (objPIsReal(&HintEntryP->data.arrayP[i]))
- blues->StemSnapH[i] =
- HintEntryP->data.arrayP[i].data.real;
- else
- blues->StemSnapH[i] = 0;
- }
- }
-
- /* fill in the StemSnapV array */
- HintEntryP = &(PrivateDictP[STEMSNAPV].value);
- /* check to see if the entry exists and if it's an array */
- if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
- blues->numStemSnapV = 0;
- else {
- /* get the number of values in the array */
- if (HintEntryP->len > NUMSTEMSNAPV) {
- blues->numStemSnapV = NUMSTEMSNAPV;
- } else
- blues->numStemSnapV = HintEntryP->len;
- for (i = 0; i<= blues->numStemSnapV-1; ++i) {
- if (objPIsInteger(&HintEntryP->data.arrayP[i]))
- blues->StemSnapV[i] =
- HintEntryP->data.arrayP[i].data.integer;
- else if (objPIsReal(&HintEntryP->data.arrayP[i]))
- blues->StemSnapV[i] =
- HintEntryP->data.arrayP[i].data.real;
- else
- blues->StemSnapV[i] = 0;
- }
- }
-
- /* fill in the StdVW array */
- HintEntryP = &(PrivateDictP[STDVW].value);
- /* check to see if the entry exists and if it's an array */
- if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
- /* a value of zero signifies no entry */
- blues->StdVW = 0;
- else {
- if (HintEntryP->len > NUMSTDVW) {
- }
- if (objPIsInteger(&HintEntryP->data.arrayP[0]))
- blues->StdVW = HintEntryP->data.arrayP[0].data.integer;
- else if (objPIsReal(&HintEntryP->data.arrayP[0]))
- blues->StdVW = HintEntryP->data.arrayP[0].data.real;
- else
- blues->StdVW = 0;
- }
-
- /* fill in the StdHW array */
- HintEntryP = &(PrivateDictP[STDHW].value);
- /* check to see if the entry exists and if it's an array */
- if ( !objPIsArray(HintEntryP) || (HintEntryP->len == 0 ))
- /* a value of zero signifies no entry */
- blues->StdHW = 0;
- else {
- if (HintEntryP->len > NUMSTDHW) {
- }
- if (objPIsInteger(&HintEntryP->data.arrayP[0]))
- blues->StdHW = HintEntryP->data.arrayP[0].data.integer;
- else if (objPIsReal(&HintEntryP->data.arrayP[0]))
- blues->StdHW = HintEntryP->data.arrayP[0].data.real;
- else
- blues->StdHW = 0;
- }
-
-
- /* get the ptr to the BlueScale entry */
- HintEntryP = &(PrivateDictP[BLUESCALE].value);
- /* put the BlueScale in the blues structure */
- if (objPIsInteger(HintEntryP)) /* Must be integer! */
- blues->BlueScale = HintEntryP->data.integer;
- else if (objPIsReal(HintEntryP)) /* Error? */
- blues->BlueScale = HintEntryP->data.real;
- else
- blues->BlueScale = DEFAULTBLUESCALE;
-
- /* get the ptr to the BlueShift entry */
- HintEntryP = &(PrivateDictP[BLUESHIFT].value);
- if (objPIsInteger(HintEntryP)) /* Must be integer! */
- blues->BlueShift = HintEntryP->data.integer;
- else if (objPIsReal(HintEntryP)) /* Error? */
- blues->BlueShift = HintEntryP->data.real;
- else
- blues->BlueShift = DEFAULTBLUESHIFT;
-
- /* get the ptr to the BlueFuzz entry */
- HintEntryP = &(PrivateDictP[BLUEFUZZ].value);
- if (objPIsInteger(HintEntryP)) /* Must be integer! */
- blues->BlueFuzz = HintEntryP->data.integer;
- else if (objPIsReal(HintEntryP)) /* Error? */
- blues->BlueFuzz = HintEntryP->data.real;
- else
- blues->BlueFuzz = DEFAULTBLUEFUZZ;
-
- /* get the ptr to the ForceBold entry */
- HintEntryP = &(PrivateDictP[FORCEBOLD].value);
- if (objPIsBoolean(HintEntryP)) /* Must be integer! */
- blues->ForceBold = HintEntryP->data.boolean;
- else
- blues->ForceBold = DEFAULTFORCEBOLD;
-
- /* get the ptr to the LanguageGroup entry */
- HintEntryP = &(PrivateDictP[LANGUAGEGROUP].value);
- if (objPIsInteger(HintEntryP)) /* Must be integer! */
- blues->LanguageGroup = HintEntryP->data.integer;
- else
- blues->LanguageGroup = DEFAULTLANGUAGEGROUP;
-
- /* get the ptr to the RndStemUp entry */
- HintEntryP = &(PrivateDictP[RNDSTEMUP].value);
- if (objPIsBoolean(HintEntryP)) /* Must be integer! */
- blues->RndStemUp = HintEntryP->data.boolean;
- else
- blues->RndStemUp = DEFAULTRNDSTEMUP;
-
- /* get the ptr to the lenIV entry */
- HintEntryP = &(PrivateDictP[LENIV].value);
- if (objPIsInteger(HintEntryP)) /* Must be integer! */
- blues->lenIV = HintEntryP->data.integer;
- else
- blues->lenIV = DEFAULTLENIV;
-
- /* get the ptr to the ExpansionFactor entry */
- HintEntryP = &(PrivateDictP[EXPANSIONFACTOR].value);
- if (objPIsInteger(HintEntryP))
- blues->ExpansionFactor = HintEntryP->data.integer;
- else if (objPIsReal(HintEntryP))
- blues->ExpansionFactor = HintEntryP->data.real;
- else
- blues->ExpansionFactor = DEFAULTEXPANSIONFACTOR;
- return(SCAN_OK);
-}
-/**********************************************************************/
-/* GetType1CharString(fontP,code) */
-/* */
-/* Look up code in the standard encoding vector and return */
-/* the charstring associated with the character name. */
-/* */
-/* fontP is the psfont structure. */
-/* */
-/* Returns a psobj (string) */
-/**********************************************************************/
-psobj *
-GetType1CharString(psfont *fontP, unsigned char code)
-{
- int N; /* the 'Nth' entry in the CharStrings */
- psobj *charnameP; /* points to psobj that is name of character*/
-
- psdict *CharStringsDictP; /* dictionary with char strings */
- psobj *theStringP; /* the definition for the code */
-
-
-
- if (StdEncArrayP == NULL) {
- return(NULL);
- }
- /* use the code to index into the standard encoding vector */
- charnameP = &(StdEncArrayP[code]);
-
- /* test if the encoding array points to a name */
- if (!(objPIsName(charnameP)) ) {
- return(NULL);
- }
-
- /* Now that we have the character name out of the standardencoding */
- /* get the character definition out of the current font */
- CharStringsDictP = fontP->CharStringsP;
-
- /* search the chars string for this charname as key */
- N = SearchDictName(CharStringsDictP,charnameP);
- if (N<=0) {
- return(NULL);
- }
- /* OK, the nth item is the psobj that is the string for this char */
- theStringP = &(CharStringsDictP[N].value);
-
- return(theStringP);
-}
-
-/***================================================================***/
-/*
- * FindDictValue
- */
-/***================================================================***/
-
-static int
-FindDictValue(psdict *dictP)
-{
- psobj LitName;
- int N;
- int V;
-
- /* we have just scanned a token and it is a literal name */
- /* need to check if that name is in Private dictionary */
- objFormatName(&LitName,tokenLength,tokenStartP);
- /* is it in the dictP */
- N = SearchDictName(dictP,&LitName);
- /* if found */
- if ( N > 0 ) {
- /* what type */
- switch (dictP[N].value.type) {
- case OBJ_ENCODING:
- V = getEncoding(&(dictP[N].value));
- if ( V != SCAN_OK ) return(V);
- break;
- case OBJ_ARRAY:
- V = getArray(&(dictP[N].value));
- if ( V != SCAN_OK ) return(V);
- break;
- case OBJ_INTEGER:
- /* next value in integer */
- dictP[N].value.data.integer = getInt();
- if (rc) return(rc); /* if next token was not an Int */
- break;
- case OBJ_REAL:
- /* next value must be real or int, store as a real */
- scan_token(inputP);
- if (tokenType == TOKEN_REAL) {
- dictP[N].value.data.real = tokenValue.real;
- }
- else
- if (tokenType == TOKEN_INTEGER) {
- dictP[N].value.data.real = tokenValue.integer;
- }
- else return(SCAN_ERROR);
- break;
- case OBJ_NAME:
- V = getNextValue(TOKEN_LITERAL_NAME);
- if ( V != SCAN_OK ) return(V);
- if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY);
- objFormatName(&(dictP[N].value),tokenLength,tokenStartP);
- break;
- case OBJ_STRING:
- V = getNextValue(TOKEN_STRING);
- if ( V != SCAN_OK ) return(V);
- if (!(vm_alloc(tokenLength)) ) return(SCAN_OUT_OF_MEMORY);
- objFormatString(&(dictP[N].value),tokenLength,tokenStartP);
- break;
- case OBJ_BOOLEAN:
- scan_token(inputP);
- if (tokenType != TOKEN_NAME) {
- return(SCAN_ERROR);
- }
- if (0 == strncmp(tokenStartP,"true",4) ) {
- dictP[N].value.data.boolean =TRUE;
- }
- else
- if (0 == strncmp(tokenStartP,"false",5) ) {
- dictP[N].value.data.boolean =FALSE;
- }
- else return(SCAN_ERROR);
- break;
-
- default:
- return(SCAN_ERROR);
- }
- }
- /* Name is not in dictionary. That is ok. */
- return(SCAN_OK);
-
-}
-/***================================================================***/
-
-/*
- * -------------------------------------------------------------------
- * Scan the next token and convert it into an object
- * Result is placed on the Operand Stack as next object
- * -------------------------------------------------------------------
- */
-int
-scan_font(psfont *FontP)
-{
-
-
- char filename[128];
- char filetype[3];
- FILE *fileP;
- char *nameP;
- int namelen;
- int V;
- int i;
- boolean starthex80;
-
- starthex80 = FALSE;
- filetype[0] = 'r';
- filetype[1] = 'b';
- filetype[2] = '\0';
- /* copy the filename and remove leading or trailing blanks */
- /* point to name and search for leading blanks */
- nameP= FontP->FontFileName.data.nameP;
- namelen = FontP->FontFileName.len;
- while (nameP[0] == ' ') {
- nameP++;
- namelen--;
- }
- /* now remove any trailing blanks */
- while ((namelen>0) && ( nameP[namelen-1] == ' ')) {
- namelen--;
- }
- strncpy(filename,nameP,namelen);
- filename[namelen] = '\0';
- /* file name is now constructed */
- inputFile.data.fileP = NULL;
- filterFile.data.fileP = NULL;
-
- inputP = &inputFile;
- if ((fileP = T1Open(filename,filetype))) {
- /* get the first byte of file */
- V = _XT1getc(fileP);
- /* if file starts with x'80' then skip next 5 bytes */
- if ( V == 0X80 ) {
- for (i=0;i<5;i++) V = _XT1getc(fileP);
- starthex80 = TRUE;
- }
- else T1Ungetc(V,fileP);
- objFormatFile(inputP,fileP);
- }
- else {
- return(SCAN_FILE_OPEN_ERROR);
- };
-
- WantFontInfo = TRUE;
- InPrivateDict = FALSE;
- TwoSubrs = FALSE;
- rc = BuildFontInfo(FontP);
- if (rc != 0) return(rc);
-
- /* Assume everything will be OK */
- rc = 0;
-
- /* Loop until complete font is read */
- do {
- /* Scan the next token */
- scan_token(inputP);
-
- /* ==> tokenLength, tokenTooLong, tokenType, and tokenValue are */
- /* now set */
-
- switch (tokenType) {
- case TOKEN_EOF:
- case TOKEN_NONE:
- case TOKEN_INVALID:
- /* in this case we are done */
- if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
- rc = SCAN_ERROR;
- break;
- case TOKEN_LITERAL_NAME:
- /* Look up the name */
- tokenStartP[tokenLength] = '\0';
- if (InPrivateDict ) {
- if (0== strncmp(tokenStartP,"Subrs",5) ) {
- rc = BuildSubrs(FontP);
- break;
- }
- if (0== strncmp(tokenStartP,"CharStrings",11) ) {
- rc = BuildCharStrings(FontP);
- if ( (rc == SCAN_OK) ||(rc == SCAN_END) ) {
- T1Close(inputP->data.fileP);
- /* Build the Blues Structure */
- rc = GetType1Blues(FontP);
- /* whatever the return code, return it */
- /* all the work is done. This is the normal exit.*/
- return(rc);
- }
- break;
- }
- rc = FindDictValue(FontP->Private);
- /* we are not going to report errors */
- /* Sometimes the font file may test a value such as */
- /* testing to see if the font is alreadly loaded with */
- /* same UniqueID. We would faile on /UniqueID get */
- /* because we are expecting a int to follow UniqueID*/
- /* If the correct object type does not follow a Name*/
- /* then we will skip over it without reporting error except */
- /* when out of memory */
- if (rc != SCAN_OUT_OF_MEMORY)
- rc = SCAN_OK;
- break;
- } /* end of reading Private dictionary */
- else
- if (0== strncmp(tokenStartP,"Private",7) ) {
- InPrivateDict = TRUE;
- rc = BuildPrivate(FontP);
- break;
- }
- else
- if (WantFontInfo) {
- rc = FindDictValue(FontP->fontInfoP);
- /* we are not going to report errors except out of memory */
- if (rc != SCAN_OUT_OF_MEMORY)
- rc = SCAN_OK;
- break;
- }
- break;
- case TOKEN_NAME:
- if (0 == strncmp(tokenStartP,"eexec",5) ) {
- /* if file started with x'80', check next 5 bytes */
- if (starthex80) {
- V = _XT1getc(fileP);
- if ( V == 0X80 ) {
- for (i=0;i<5;i++) V = _XT1getc(fileP);
- }
- else T1Ungetc(V,fileP);
- }
- filterFile.data.fileP = T1eexec(inputP->data.fileP);
- if (filterFile.data.fileP == NULL) {
- T1Close(inputFile.data.fileP);
- return(SCAN_FILE_OPEN_ERROR);
- }
- inputP = &filterFile;
-
- WantFontInfo = FALSE;
- }
- break;
- }
-
- }
- while (rc ==0);
- T1Close(inputP->data.fileP);
- if (tokenTooLong) return(SCAN_OUT_OF_MEMORY);
- return(rc);
-}
-
diff --git a/libXfont/src/Type1/spaces.c b/libXfont/src/Type1/spaces.c
deleted file mode 100644
index 1f5a321c1..000000000
--- a/libXfont/src/Type1/spaces.c
+++ /dev/null
@@ -1,941 +0,0 @@
-/* $Xorg: spaces.c,v 1.4 2000/08/17 19:46:32 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/spaces.c,v 3.10tsi Exp $ */
- /* SPACES CWEB V0021 ******** */
-/*
-:h1 id=spaces.SPACES Module - Handles Coordinate Spaces
-
-This module is responsible for handling the TYPE1IMAGER "XYspace" object.
-
-&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
-
-
-:h3.Include Files
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifdef FONTMODULE
-#include "Xdefs.h" /* Bool declaration ??? */
-#include "Xmd.h" /* INT32 declaration ??? */
-#include "os.h"
-#include "xf86_ansic.h"
-#else
-#include "X11/Xos.h"
-#include <stdio.h>
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "pictures.h"
-#include "fonts.h"
-#include "arith.h"
-#include "trig.h"
-
-static void FindFfcn ( double cx, double cy,
- convertFunc *fcnP );
-static void FindIfcn ( double cx, double cy,
- fractpel *icxP, fractpel *icyP,
- iconvertFunc *fcnP );
-
-/*
-:h3.MatrixMultiply() - Implements Multiplication of Two Matrices
-
-Implements matrix multiplication, A * B = C.
-
-To remind myself, matrix multiplication goes rows of A times columns
-of B.
-The output matrix may be the same as one of the input matrices.
-*/
-static void
-MatrixMultiply(double A[2][2], double B[2][2], /* input matrices */
- double C[2][2]) /* output matrix */
-{
- register double txx,txy,tyx,tyy;
-
- txx = A[0][0] * B[0][0] + A[0][1] * B[1][0];
- txy = A[1][0] * B[0][0] + A[1][1] * B[1][0];
- tyx = A[0][0] * B[0][1] + A[0][1] * B[1][1];
- tyy = A[1][0] * B[0][1] + A[1][1] * B[1][1];
-
- C[0][0] = txx;
- C[1][0] = txy;
- C[0][1] = tyx;
- C[1][1] = tyy;
-}
-
-/*
-:h3.MatrixInvert() - Invert a Matrix
-
-My reference for matrix inversion was :hp1/Elementary Linear Algebra/
-by Paul C. Shields, Worth Publishers, Inc., 1968.
-*/
-static void
-MatrixInvert(double M[2][2], /* input matrix */
- double Mprime[2][2]) /* output inverted matrix */
-{
- register double D; /* determinant of matrix M */
- register double txx,txy,tyx,tyy;
-
- txx = M[0][0];
- txy = M[1][0];
- tyx = M[0][1];
- tyy = M[1][1];
-
- D = M[1][1] * M[0][0] - M[1][0] * M[0][1];
- if (D == 0.0)
- Abort("MatrixInvert: can't");
-
- Mprime[0][0] = tyy / D;
- Mprime[1][0] = -txy / D;
- Mprime[0][1] = -tyx / D;
- Mprime[1][1] = txx / D;
-}
-
-/*
-:h3.Entry Points Provided to the TYPE1IMAGER User
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.Entry Points Provided to Other Modules
-*/
-
-/*
-In addition, other modules call the SPACES module through function
-vectors in the "XYspace" structure. The entry points accessed that
-way are "FConvert()", "IConvert()", and "ForceFloat()".
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h3.Macros and Typedefs Provided to Other Modules
-
-:h4.Duplicating and Killing Spaces
-
-Destroying XYspaces is so simple we can do it with a
-macro:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-On the other hand, duplicating XYspaces is slightly more difficult
-because of the need to keep a unique ID in the space, see
-:hdref refid=dupspace..
-
-:h4.Fixed Point Pel Representation
-
-We represent pel positions with fixed point numbers. This does NOT
-mean integer, but truly means fixed point, with a certain number
-of binary digits (FRACTBITS) representing the fractional part of the
-pel.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-/*
-:h2.Data Structures for Coordinate Spaces and Points
-*/
-/*
-:h3 id=matrix.Matrices
-
-TYPE1IMAGER uses 2x2 transformation matrices. We'll use C notation for
-such a matrix (M[2][2]), the first index being rows, the second columns.
-*/
-
-/*
-:h3.The "doublematrix" Structure
-
-We frequently find it desirable to store both a matrix and its
-inverse. We store these in a "doublematrix" structure.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.The "XYspace" Structure
-
-The XYspace structure represents the XYspace object.
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-#define RESERVED 10 /* 'n' IDs are reserved for invalid & immortal spaces */
-/*
-*/
-#define NEXTID ((SpaceID < RESERVED) ? (SpaceID = RESERVED) : ++SpaceID)
-
-static unsigned int SpaceID = 1;
-
-struct XYspace *
-CopySpace(struct XYspace *S)
-{
- S = (struct XYspace *)Allocate(sizeof(struct XYspace), S, 0);
- S->ID = NEXTID;
- return(S);
-}
-/*
-:h3.The "fractpoint" Structure
-
-A fractional point is just a "fractpel" x and y:
-*/
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.Lazy Evaluation of Matrix Inverses
-
-Calculating the inverse of a matrix is somewhat involved, and we usually
-do not need them. So, we flag whether or not the space has the inverse
-already calculated:
-*/
-
-#define HASINVERSE(flag) ((flag)&0x80)
-
-/*
-The following macro forces a space to have an inverse:
-*/
-
-#define CoerceInverse(S) if (!HASINVERSE((S)->flag)) { \
- MatrixInvert((S)->tofract.normal, (S)->tofract.inverse); (S)->flag |= HASINVERSE(ON); }
-/*
-:h3.IDENTITY Space
-
-IDENTITY space is (logically) the space corresponding to the identity
-transformation matrix. However, since all our transformation matrices
-have a common FRACTFLOAT scale factor to convert to 'fractpel's, that
-is actually what we store in 'tofract' matrix of IDENTITY:
-*/
-
-static struct XYspace identity = { SPACETYPE, ISPERMANENT(ON) + ISIMMORTAL(ON)
- + HASINVERSE(ON), 2, /* added 3-26-91 PNM */
- NULL, NULL,
- NULL, NULL, NULL, NULL,
- INVALIDID + 1, 0,
- {{{FRACTFLOAT, 0.0}, {0.0, FRACTFLOAT}},
- {{1.0/FRACTFLOAT, 0.0}, {0.0, 1.0/FRACTFLOAT}}},
- {{0, 0}, {0, 0}}};
-struct XYspace *IDENTITY = &identity;
-
-/*
-*/
-#define MAXCONTEXTS 16
-
-static struct doublematrix contexts[MAXCONTEXTS];
-
-#ifdef notdef
-
-static int nextcontext = 1;
-
-/*SHARED LINE(S) ORIGINATED HERE*/
-
-/*
-:h3.FindDeviceContext() - Find the Context Given a Device
-
-This routine, given a device, returns the index of the device's
-transformation matrix in the context array. If it cannot find it,
-it will allocate a new array entry and fill it out.
-*/
-
-static int
-FindDeviceContext(pointer device) /* device token */
-{
- double M[2][2]; /* temporary matrix */
- float Xres,Yres; /* device resolution */
- int orient = -1; /* device orientation */
- int rc = -1; /* return code for QueryDeviceState */
-
- if (rc != 0) /* we only bother with this check once */
- Abort("Context: QueryDeviceState didn't work");
-
- M[0][0] = M[1][0] = M[0][1] = M[1][1] = 0.0;
-
- switch (orient) {
- case 0:
- M[0][0] = Xres; M[1][1] = -Yres;
- break;
- case 1:
- M[1][0] = Yres; M[0][1] = Xres;
- break;
- case 2:
- M[0][0] = -Xres; M[1][1] = Yres;
- break;
- case 3:
- M[1][0] = -Yres; M[0][1] = -Xres;
- break;
- default:
- Abort("QueryDeviceState returned invalid orientation");
- }
- return(FindContext(M));
-}
-
-/*
-:h3.FindContext() - Find the Context Given a Matrix
-
-This routine, given a matrix, returns the index of that matrix matrix in
-the context array. If it cannot find it, it will allocate a new array
-entry and fill it out.
-*/
-
-int
-FindContext(double M[2][2]) /* array to search for */
-{
- register int i; /* loop variable for search */
- for (i=0; i < nextcontext; i++)
- if (M[0][0] == contexts[i].normal[0][0] && M[1][0] == contexts[i].normal[1][0]
- && M[0][1] == contexts[i].normal[0][1] && M[1][1] == contexts[i].normal[1][1])
- break;
-
- if (i >= nextcontext) {
- if (i >= MAXCONTEXTS)
- Abort("Context: out of them");
- LONGCOPY(contexts[i].normal, M, sizeof(contexts[i].normal));
- MatrixInvert(M, contexts[i].inverse);
- nextcontext++;
- }
-
- return(i);
-}
-
-/*
-:h3.Context() - Create a Coordinate Space for a Device
-
-This user operator is implemented by first finding the device context
-array index, then transforming IDENTITY space to create an appropriate
-cooridnate space.
-*/
-
-struct XYspace *
-Context(pointer device, /* device token */
- double units) /* multiples of one inch */
-{
- double M[2][2]; /* device transformation matrix */
- register int n; /* will hold device context number */
- register struct XYspace *S; /* XYspace constructed */
-
- ARGCHECK((device == NULL), "Context of NULLDEVICE not allowed",
- NULL, IDENTITY, (0), struct XYspace *);
- ARGCHECK((units == 0.0), "Context: bad units", NULL, IDENTITY, (0), struct XYspace *);
-
- n = FindDeviceContext(device);
-
- LONGCOPY(M, contexts[n].normal, sizeof(M));
-
- M[0][0] *= units;
- M[0][1] *= units;
- M[1][0] *= units;
- M[1][1] *= units;
-
- S = (struct XYspace *)Xform(IDENTITY, M);
-
- S->context = n;
- return(S);
-}
-#endif
-
-/*
-:h3.ConsiderContext() - Adjust a Matrix to Take Out Device Transform
-
-Remember, we have :f/x times U times D/ and :f/M/ and and we want :f/x
-times U times M times D/. An easy way to do this is to calculate
-:f/D sup <-1> times M times D/, because:
-:formula.
-x times U times D times D sup <-1> times M times D = x times U times M times D
-:formula.
-So this subroutine, given an :f/M/and an object, finds the :f/D/ for that
-object and modifies :f/M/ so it is :f/D sup <-1> times M times D/.
-*/
-
-static void
-ConsiderContext(struct xobject *obj, /* object to be transformed */
- double M[2][2]) /* matrix (may be changed) */
-{
- register int context = 0; /* index in contexts array */
-
- if (obj == NULL) return;
-
- if (ISPATHTYPE(obj->type)) {
- struct segment *path = (struct segment *) obj;
-
- context = path->context;
- }
- else if (obj->type == SPACETYPE) {
- struct XYspace *S = (struct XYspace *) obj;
-
- context = S->context;
- }
- else if (obj->type == PICTURETYPE) {
-
- }
- else
- context = NULLCONTEXT;
-
- if (context != NULLCONTEXT) {
- MatrixMultiply(contexts[context].inverse, M, M);
- MatrixMultiply(M, contexts[context].normal, M);
- }
-}
-
-/*
-:h2.Conversion from User's X,Y to "fractpel" X,Y
-
-When the user is building paths (lines, moves, curves, etc.) he passes
-the control points (x,y) for the paths together with an XYspace. We
-must convert from the user's (x,y) to our internal representation
-which is in pels (fractpels, actually). This involves transforming
-the user's (x,y) under the coordinate space transformation. It is
-important that we do this quickly. So, we store pointers to different
-conversion functions right in the XYspace structure. This allows us
-to have simpler special case functions for the more commonly
-encountered types of transformations.
-
-:h3.Convert(), IConvert(), and ForceFloat() - Called Through "XYspace" Structure
-
-These are functions that fit in the "convert" and "iconvert" function
-pointers in the XYspace structure. They call the "xconvert", "yconvert",
-"ixconvert", and "iyconvert" as appropriate to actually do the work.
-These secondary routines come in many flavors to handle different
-special cases as quickly as possible.
-*/
-
-static void
-FXYConvert(struct fractpoint *pt, /* point to set */
- struct XYspace *S, /* relevant coordinate space */
- double x, double y) /* user's coordinates of point */
-{
- pt->x = (*S->xconvert)(S->tofract.normal[0][0], S->tofract.normal[1][0], x, y);
- pt->y = (*S->yconvert)(S->tofract.normal[0][1], S->tofract.normal[1][1], x, y);
-}
-
-static void
-IXYConvert(struct fractpoint *pt, /* point to set */
- struct XYspace *S, /* relevant coordinate space */
- long x, long y) /* user's coordinates of point */
-{
- pt->x = (*S->ixconvert)(S->itofract[0][0], S->itofract[1][0], x, y);
- pt->y = (*S->iyconvert)(S->itofract[0][1], S->itofract[1][1], x, y);
-}
-
-/*
-ForceFloat is a substitute for IConvert(), when we just do not have
-enough significant digits in the coefficients to get high enough
-precision in the answer with fixed point arithmetic. So, we force the
-integers to floats, and do the arithmetic all with floats:
-*/
-
-static void
-ForceFloat(struct fractpoint *pt, /* point to set */
- struct XYspace *S, /* relevant coordinate space */
- long x, long y) /* user's coordinates of point */
-{
- (*S->convert)(pt, S, (double) x, (double) y);
-}
-
-/*
-:h3.FXYboth(), FXonly(), FYonly() - Floating Point Conversion
-
-These are the routines we use when the user has given us floating
-point numbers for x and y. FXYboth() is the general purpose routine;
-FXonly() and FYonly() are special cases when one of the coefficients
-is 0.0.
-*/
-
-static fractpel
-FXYboth(double cx, double cy, /* x and y coefficients */
- double x, double y) /* user x,y */
-{
- register double r; /* temporary float */
-
- r = x * cx + y * cy;
- return((fractpel) r);
-}
-
-/*ARGSUSED*/
-static fractpel
-FXonly(double cx, double cy, /* x and y coefficients */
- double x, double y) /* user x,y */
-{
- register double r; /* temporary float */
-
- r = x * cx;
- return((fractpel) r);
-}
-
-/*ARGSUSED*/
-static fractpel
-FYonly(double cx, double cy, /* x and y coefficients */
- double x, double y) /* user x,y */
-{
- register double r; /* temporary float */
-
- r = y * cy;
- return((fractpel) r);
-}
-
-/*
-:h3.IXYboth(), IXonly(), IYonly() - Simple Integer Conversion
-
-These are the routines we use when the user has given us integers for
-x and y, and the coefficients have enough significant digits to
-provide precise answers with only "long" (32 bit?) multiplication.
-IXYboth() is the general purpose routine; IXonly() and IYonly() are
-special cases when one of the coefficients is 0.
-*/
-
-static fractpel
-IXYboth(fractpel cx, fractpel cy, /* x and y coefficients */
- long x, long y) /* user x,y */
-{
- return(x * cx + y * cy);
-}
-
-/*ARGSUSED*/
-static fractpel
-IXonly(fractpel cx, fractpel cy, /* x and y coefficients */
- long x, long y) /* user x,y */
-{
- return(x * cx);
-}
-
-/*ARGSUSED*/
-static fractpel
-IYonly(fractpel cx, fractpel cy, /* x and y coefficients */
- long x, long y) /* user x,y */
-{
- return(y * cy);
-}
-
-
-/*
-:h3.FPXYboth(), FPXonly(), FPYonly() - More Involved Integer Conversion
-
-These are the routines we use when the user has given us integers for
-x and y, but the coefficients do not have enough significant digits to
-provide precise answers with only "long" (32 bit?) multiplication.
-We have increased the number of significant bits in the coefficients
-by FRACTBITS; therefore we must use "double long" (64 bit?)
-multiplication by calling FPmult(). FPXYboth() is the general purpose
-routine; FPXonly() and FPYonly() are special cases when one of the
-coefficients is 0.
-
-Note that it is perfectly possible for us to calculate X with the
-"FP" method and Y with the "I" method, or vice versa. It all depends
-on how the functions in the XYspace structure are filled out.
-*/
-
-static fractpel
-FPXYboth(fractpel cx, fractpel cy, /* x and y coefficients */
- long x, long y) /* user x,y */
-{
- return( FPmult(x, cx) + FPmult(y, cy) );
-}
-
-/*ARGSUSED*/
-static fractpel
-FPXonly(fractpel cx, fractpel cy, /* x and y coefficients */
- long x, long y) /* user x,y */
-{
- return( FPmult(x, cx) );
-}
-
-/*ARGSUSED*/
-static fractpel
-FPYonly(fractpel cx, fractpel cy, /* x and y coefficients */
- long x, long y) /* user x,y */
-{
- return( FPmult(y, cy) );
-}
-
-
-
-/*
-:h3.FillOutFcns() - Determine the Appropriate Functions to Use for Conversion
-
-This function fills out the "convert" and "iconvert" function pointers
-in an XYspace structure, and also fills the "helper"
-functions that actually do the work.
-*/
-
-static void
-FillOutFcns(struct XYspace *S) /* functions will be set in this structure */
-{
- S->convert = FXYConvert;
- S->iconvert = IXYConvert;
-
- FindFfcn(S->tofract.normal[0][0], S->tofract.normal[1][0], &S->xconvert);
- FindFfcn(S->tofract.normal[0][1], S->tofract.normal[1][1], &S->yconvert);
- FindIfcn(S->tofract.normal[0][0], S->tofract.normal[1][0],
- &S->itofract[0][0], &S->itofract[1][0], &S->ixconvert);
- FindIfcn(S->tofract.normal[0][1], S->tofract.normal[1][1],
- &S->itofract[0][1], &S->itofract[1][1], &S->iyconvert);
-
- if (S->ixconvert == NULL || S->iyconvert == NULL)
- S->iconvert = ForceFloat;
-}
-
-/*
-:h3.PseudoSpace() - Build a Coordinate Space from a Matrix
-
-Since we have built all this optimized code that, given an (x,y) and
-a coordinate space, yield transformed (x,y), it seems a shame not to
-use the same logic when we need to multiply an (x,y) by an arbitrary
-matrix that is not (initially) part of a coordinate space. This
-subroutine takes the arbitrary matrix and builds a coordinate
-space, with all its nifty function pointers.
-*/
-
-static void
-PseudoSpace(struct XYspace *S, /* coordinate space structure to fill out */
- double M[2][2]) /* matrix that will become 'tofract.normal' */
-{
- S->type = SPACETYPE;
- S->flag = ISPERMANENT(ON) + ISIMMORTAL(ON);
- S->references = 2; /* 3-26-91 added PNM */
- S->tofract.normal[0][0] = M[0][0];
- S->tofract.normal[1][0] = M[1][0];
- S->tofract.normal[0][1] = M[0][1];
- S->tofract.normal[1][1] = M[1][1];
-
- FillOutFcns(S);
-}
-
-/*
-:h4.FindFfcn() - Subroutine of FillOutFcns() to Fill Out Floating Functions
-
-This function tests for the special case of one of the coefficients
-being zero:
-*/
-
-static void
-FindFfcn(double cx, double cy, /* x and y coefficients */
- convertFunc *fcnP) /* pointer to function to set */
-{
- if (cx == 0.0)
- *fcnP = FYonly;
- else if (cy == 0.0)
- *fcnP = FXonly;
- else
- *fcnP = FXYboth;
-}
-
-/*
-:h4.FindIfcn() - Subroutine of FillOutFcns() to Fill Out Integer Functions
-
-There are two types of integer functions, the 'I' type and the 'FP' type.
-We use the I type functions when we are satisfied with simple integer
-arithmetic. We used the FP functions when we feel we need higher
-precision (but still fixed point) arithmetic. If all else fails,
-we store a NULL indicating that this we should do the conversion in
-floating point.
-*/
-
-static void
-FindIfcn(double cx, double cy, /* x and y coefficients */
- fractpel *icxP, fractpel *icyP, /* fixed point coefficients to set */
- iconvertFunc *fcnP) /* pointer to function to set */
-{
- register fractpel imax; /* maximum of cx and cy */
-
- *icxP = cx;
- *icyP = cy;
-
- if (cx != (float) (*icxP) || cy != (float) (*icyP)) {
-/*
-At this point we know our integer approximations of the coefficients
-are not exact. However, we will still use them if the maximum
-coefficient will not fit in a 'fractpel'. Of course, we have little
-choice at that point, but we haven't lost that much precision by
-staying with integer arithmetic. We have enough significant digits
-so that
-any error we introduce is less than one part in 2:sup/16/.
-*/
-
- imax = MAX(ABS(*icxP), ABS(*icyP));
- if (imax < (fractpel) (1<<(FRACTBITS-1)) ) {
-/*
-At this point we know our integer approximations just do not have
-enough significant digits for accuracy. We will add FRACTBITS
-significant digits to the coefficients (by multiplying them by
-1<<FRACTBITS) and go to the "FP" form of the functions. First, we
-check to see if we have ANY significant digits at all (that is, if
-imax == 0). If we don't, we suspect that adding FRACTBITS digits
-won't help, so we punt the whole thing.
-*/
- if (imax == 0) {
- *fcnP = NULL;
- return;
- }
- cx *= FRACTFLOAT;
- cy *= FRACTFLOAT;
- *icxP = cx;
- *icyP = cy;
- *fcnP = FPXYboth;
- }
- else
- *fcnP = IXYboth;
- }
- else
- *fcnP = IXYboth;
-/*
-Now we check for special cases where one coefficient is zero (after
-integer conversion):
-*/
- if (*icxP == 0)
- *fcnP = (*fcnP == FPXYboth) ? FPYonly : IYonly;
- else if (*icyP == 0)
- *fcnP = (*fcnP == FPXYboth) ? FPXonly : IXonly;
-}
-/*
-:h3.UnConvert() - Find User Coordinates From FractPoints
-
-The interesting thing with this routine is that we avoid calculating
-the matrix inverse of the device transformation until we really need
-it, which is to say, until this routine is called for the first time
-with a given coordinate space.
-
-We also only calculate it only once. If the inverted matrix is valid,
-we don't calculate it; if not, we do. We never expect matrices with
-zero determinants, so by convention, we mark the matrix is invalid by
-marking both X terms zero.
-*/
-
-void
-UnConvert(struct XYspace *S, /* relevant coordinate space */
- struct fractpoint *pt, /* device coordinates */
- double *xp, double *yp) /* where to store resulting x,y */
-{
- double x,y;
-
- CoerceInverse(S);
- x = pt->x;
- y = pt->y;
- *xp = S->tofract.inverse[0][0] * x + S->tofract.inverse[1][0] * y;
- *yp = S->tofract.inverse[0][1] * x + S->tofract.inverse[1][1] * y;
-}
-
-/*
-:h2.Transformations
-*/
-/*
-:h3 id=xform.Xform() - Transform Object in X and Y
-
-TYPE1IMAGER wants transformations of objects like paths to be identical
-to transformations of spaces. For example, if you scale a line(1,1)
-by 10 it should yield the same result as generating the line(1,1) in
-a coordinate space that has been scaled by 10.
-
-We handle fonts by storing the accumulated transform, for example, SR
-(accumulating on the right). Then when we map the font through space TD,
-for example, we multiply the accumulated font transform on the left by
-the space transform on the right, yielding SRTD in this case. We will
-get the same result if we did S, then R, then T on the space and mapping
-an unmodified font through that space.
-*/
-
-static struct xobject *
-t1_Xform(struct xobject *obj, /* object to transform */
- double M[2][2]) /* transformation matrix */
-{
- if (obj == NULL)
- return(NULL);
-
- if (obj->type == FONTTYPE) {
- register struct font *F = (struct font *) obj;
-
- F = UniqueFont(F);
- return((struct xobject*)F);
- }
- if (obj->type == PICTURETYPE) {
-/*
-In the case of a picture, we choose both to update the picture's
-transformation matrix and keep the handles up to date.
-*/
- register struct picture *P = (struct picture *) obj;
- register struct segment *handles; /* temporary path to transform handles */
-
- P = UniquePicture(P);
- handles = PathSegment(LINETYPE, P->origin.x, P->origin.y);
- handles = Join(handles,
- PathSegment(LINETYPE, P->ending.x, P->ending.y) );
- handles = (struct segment *)Xform((struct xobject *) handles, M);
- P->origin = handles->dest;
- P->ending = handles->link->dest;
- KillPath(handles);
- return((struct xobject *)P);
- }
-
- if (ISPATHTYPE(obj->type)) {
- struct XYspace pseudo; /* local temporary space */
- PseudoSpace(&pseudo, M);
- return((struct xobject *) PathTransform((struct segment *)obj,
- &pseudo));
- }
-
-
- if (obj->type == SPACETYPE) {
- register struct XYspace *S = (struct XYspace *) obj;
-
-/* replaced ISPERMANENT(S->flag) with S->references > 1 3-26-91 PNM */
- if (S->references > 1)
- S = CopySpace(S);
- else
- S->ID = NEXTID;
-
- MatrixMultiply(S->tofract.normal, M, S->tofract.normal);
- /*
- * mark inverted matrix invalid:
- */
- S->flag &= ~HASINVERSE(ON);
-
- FillOutFcns(S);
- return((struct xobject *) S);
- }
-
- return(ArgErr("Untransformable object", obj, obj));
-}
-
-/*
-:h3.Transform() - Transform an Object
-
-This is the external user's entry point.
-*/
-struct xobject *
-t1_Transform(struct xobject *obj,
- double cxx, double cyx, /* 2x2 transform matrix elements */
- double cxy, double cyy) /* in row order */
-{
- double M[2][2];
-
- M[0][0] = cxx;
- M[0][1] = cyx;
- M[1][0] = cxy;
- M[1][1] = cyy;
- ConsiderContext(obj, M);
- return(Xform(obj, M));
-}
-
-/*
-:h3 id=rotate.Rotate() - Special Case of Transform()
-
-We special-case different settings of 'degrees' for performance
-and accuracy within the DegreeSin() and DegreeCos() routines themselves.
-*/
-
-#ifdef notdef
-struct xobject *
-xiRotate(struct xobject *obj, /* object to be transformed */
- double degrees) /* degrees of COUNTER-clockwise rotation */
-{
- double M[2][2];
-
- M[0][0] = M[1][1] = DegreeCos(degrees);
- M[1][0] = - (M[0][1] = DegreeSin(degrees));
- ConsiderContext(obj, M);
- return(Xform(obj, M));
-}
-#endif
-
-
-/*
-:h2 id=matrixa.Matrix Arithmetic
-
-Following the convention in Newman and Sproull, :hp1/Interactive
-Computer Graphics/,
-matrices are organized:
-:xmp.
- | cxx cyx |
- | cxy cyy |
-:exmp.
-A point is horizontal, for example:
-:xmp.
- [ x y ]
-:exmp.
-This means that:
-:formula/x prime = cxx times x + cxy times y/
-:formula/y prime = cyx times x + cyy times y/
-I've seen the other convention, where transform matrices are
-transposed, equally often in the literature.
-*/
-
-/*
-:h2.Initialization, Queries, and Debug
-*/
-/*
-:h3.InitSpaces() - Initialize Constant Spaces
-
-For compatibility, we initialize a coordinate space called USER which
-maps 72nds of an inch to pels on the default device.
-*/
-
-static struct XYspace *USER = &identity;
-
-void
-InitSpaces(void)
-{
- IDENTITY->type = SPACETYPE;
- FillOutFcns(IDENTITY);
-
- contexts[NULLCONTEXT].normal[1][0]
- = contexts[NULLCONTEXT].normal[0][1]
- = contexts[NULLCONTEXT].inverse[1][0]
- = contexts[NULLCONTEXT].inverse[0][1] = 0.0;
- contexts[NULLCONTEXT].normal[0][0]
- = contexts[NULLCONTEXT].normal[1][1]
- = contexts[NULLCONTEXT].inverse[0][0]
- = contexts[NULLCONTEXT].inverse[1][1] = 1.0;
-
- USER->flag |= ISIMMORTAL(ON);
- CoerceInverse(USER);
-}
-/*
-:h3.QuerySpace() - Returns the Transformation Matrix of a Space
-
-Since the tofract matrix of an XYspace includes the scale factor
-necessary to produce fractpel results (i.e., FRACTFLOAT), this
-must be taken out before we return the matrix to the user. Fortunately,
-this is simple: just multiply by the inverse of IDENTITY!
-*/
-
-void
-QuerySpace(struct XYspace *S, /* space asked about */
- double *cxxP, double *cyxP, /* where to put answer */
- double *cxyP, double *cyyP)
-{
- double M[2][2]; /* temp matrix to build user's answer */
-
- if (S->type != SPACETYPE) {
- ArgErr("QuerySpace: not a space", S, NULL);
- return;
- }
- MatrixMultiply(S->tofract.normal, IDENTITY->tofract.inverse, M);
- *cxxP = M[0][0];
- *cxyP = M[1][0];
- *cyxP = M[0][1];
- *cyyP = M[1][1];
-}
diff --git a/libXfont/src/Type1/spaces.h b/libXfont/src/Type1/spaces.h
deleted file mode 100644
index 88d1b1524..000000000
--- a/libXfont/src/Type1/spaces.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/* $Xorg: spaces.h,v 1.3 2000/08/17 19:46:32 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/spaces.h,v 3.3 1999/08/22 08:58:53 dawes Exp $ */
-
-/*SHARED*/
-
-#define USER t1_User
-#define IDENTITY t1_Identity
-
-#define Context(d,u) t1_Context(d,u)
-#define Transform(o,f1,f2,f3,f4) t1_Transform(o,f1,f2,f3,f4)
-#define Rotate(o,d) t1_Rotate(o,d)
-#define Scale(o,sx,sy) t1_Scale(o,sx,sy)
-#define QuerySpace(S,f1,f2,f3,f4) t1_QuerySpace(S,f1,f2,f3,f4)
-#define Warp(s1,o,s2) t1_Warp(s1,o,s2)
-
-/* IDENTITY space */
-extern struct XYspace *IDENTITY;
-
-/* creates a coordinate space for a device */
-extern struct XYspace *Context(pointer device, double units);
-/* transform an object */
-extern struct xobject *t1_Transform ( struct xobject *obj, double cxx,
- double cyx, double cxy, double cyy );
-/* returns coordinate space matrix */
-extern void t1_QuerySpace ( struct XYspace *S, double *cxxP, double *cyxP,
- double *cxyP, double *cyyP );
-
-/*END SHARED*/
-/*SHARED*/
-
-/* #define KillSpace(s) Free(s)
-Note - redefined KillSpace() to check references !
-3-26-91 PNM */
-
-#define KillSpace(s) if ( (--(s->references) == 0) ||\
- ( (s->references == 1) && ISPERMANENT(s->flag) ) )\
- Free(s)
-
-#define ConsumeSpace(s) MAKECONSUME(s,KillSpace(s))
-#define UniqueSpace(s) MAKEUNIQUE(s,CopySpace(s))
-
-/*END SHARED*/
-/*SHARED*/
-
-typedef short pel; /* integer pel locations */
-typedef long fractpel; /* fractional pel locations */
-
-#define FRACTBITS 16 /* number of fractional bits in 'fractpel' */
-/*
-We define the following macros to convert from 'fractpel' to 'pel' and
-vice versa:
-*/
-#define TOFRACTPEL(p) (((fractpel)p)<<FRACTBITS)
-#define FPHALF (1<<(FRACTBITS-1))
-#define NEARESTPEL(fp) (((fp)+FPHALF)>>FRACTBITS)
-#define FRACTFLOAT (double)(1L<<FRACTBITS)
-
-/*END SHARED*/
-/*SHARED*/
-
-struct doublematrix {
- double normal[2][2];
- double inverse[2][2];
-} ;
-
-/*END SHARED*/
-/*SHARED*/
-
-struct fractpoint {
- fractpel x,y;
-} ;
-
-/*SHARED*/
-
-typedef fractpel (*convertFunc)(double, double, double, double);
-typedef fractpel (*iconvertFunc)(fractpel, fractpel, long, long);
-
-struct XYspace {
- XOBJ_COMMON /* xobject common data define 3-26-91 PNM */
- /* type = SPACETYPE */
- void (*convert)(struct fractpoint *, struct XYspace *, double, double); /* calculate "fractpoint" X,Y from float X,Y */
- void (*iconvert)(struct fractpoint *, struct XYspace *, long, long); /* calculate "fractpoint" X,Y from int X,Y */
- convertFunc xconvert; /* subroutine of convert */
- convertFunc yconvert; /* subroutine of convert */
- iconvertFunc ixconvert; /* subroutine of iconvert */
- iconvertFunc iyconvert; /* subroutine of iconvert */
- int ID; /* unique identifier (used in font caching) */
- unsigned char context; /* device context of coordinate space */
- struct doublematrix tofract; /* xform to get to fractional pels */
- fractpel itofract[2][2]; /* integer version of "tofract.normal" */
-} ;
-
-#define INVALIDID 0 /* no valid space will have this ID */
-
-/*END SHARED*/
-/*END SHARED*/
-/*SHARED*/
-
-#define DeviceResolution t1_DeviceResolution
-#define InitSpaces t1_InitSpaces
-#define CopySpace(s) t1_CopySpace(s)
-#define Xform(o,M) t1_Xform(o,M)
-#define UnConvert(S,pt,xp,yp) t1_UnConvert(S,pt,xp,yp)
-#define MatrixMultiply(A,B,C) t1_MMultiply(A,B,C)
-#define MatrixInvert(A,B) t1_MInvert(A,B)
-#define PseudoSpace(S,M) t1_PseudoSpace(S,M)
-#define FindContext(M) t1_FindContext(M)
-
-/* initialize pre-defined coordinate spaces */
-extern void t1_InitSpaces ( void );
-/* duplicate a coordinate space */
-extern struct XYspace *t1_CopySpace ( struct XYspace *S );
-/* return user coordinates from device coordinates */
-extern void t1_UnConvert ( struct XYspace *S, struct fractpoint *pt,
- double *xp, double *yp );
-/* return the "context" represented by a matrix */
-int t1_FindContext(double M[2][2]);
-
-/*END SHARED*/
-/*SHARED*/
-
-#define NULLCONTEXT 0
-
-/*END SHARED*/
diff --git a/libXfont/src/Type1/strokes.h b/libXfont/src/Type1/strokes.h
deleted file mode 100644
index c374e16db..000000000
--- a/libXfont/src/Type1/strokes.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/* $Xorg: strokes.h,v 1.3 2000/08/17 19:46:32 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/*STUB*/
-
-#define CopyLineStyle(s) s
-#define CopyStrokePath(p) p
-#define KillStrokePath(p)
-#define KillLineStyle(s)
-#define CoercePath(sp) sp
-#define DoStroke(sp) sp
-
diff --git a/libXfont/src/Type1/t1funcs.c b/libXfont/src/Type1/t1funcs.c
deleted file mode 100644
index e4b2209b0..000000000
--- a/libXfont/src/Type1/t1funcs.c
+++ /dev/null
@@ -1,754 +0,0 @@
-/* $Xorg: t1funcs.c,v 1.5 2001/02/09 02:04:01 xorgcvs Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License, subject to the license given below, to use,
- * copy, modify, and distribute this software * and its
- * documentation for any purpose and without fee is hereby
- * granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software
- * without specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- *
- * Author: Jeffrey B. Lotspiech, IBM Almaden Research Center
- * Modeled on spfuncs.c by Dave Lemke, Network Computing Devices, Inc
- * which contains the following copyright and permission notices:
- *
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices
- * or Digital not be used in advertising or publicity pertaining to
- * distribution of the software without specific, written prior permission.
- * Network Computing Devices or Digital make no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
- */
-/* $XFree86: xc/lib/font/Type1/t1funcs.c,v 3.33 2003/07/19 13:16:40 tsi Exp $ */
-
-/*
-
-Copyright 1987, 1994, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifndef FONTMODULE
-#include <string.h>
-#ifdef _XOPEN_SOURCE
-#include <math.h>
-#else
-#define _XOPEN_SOURCE /* to get prototype for hypot on some systems */
-#include <math.h>
-#undef _XOPEN_SOURCE
-#endif
-#include "X11/Xfuncs.h"
-#ifdef USE_MMAP
-#include <sys/types.h>
-#include <sys/mman.h>
-#endif
-#else
-#include "Xmd.h"
-#include "Xdefs.h"
-#endif
-
-#ifdef FONTMODULE
-#include "os.h"
-#include "xf86_ansic.h"
-#endif
-
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/fontutil.h>
-#include <X11/fonts/FSproto.h>
-#include <X11/fonts/fontenc.h>
-#include "t1unicode.h"
-
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "regions.h"
-#include "t1stdio.h"
-#include "util.h"
-#include "fontfcn.h"
-#include "t1intf.h"
-
-
-static int Type1GetGlyphs ( FontPtr pFont, unsigned long count,
- unsigned char *chars, FontEncoding charEncoding,
- unsigned long *glyphCount, CharInfoPtr *glyphs );
-
-static int Type1GetMetrics ( FontPtr pFont, unsigned long count,
- unsigned char *chars,
- FontEncoding charEncoding,
- unsigned long *glyphCount,
- xCharInfo **glyphs );
-
-
-#define minchar(p) ((p).min_char_low + ((p).min_char_high << 8))
-#define maxchar(p) ((p).max_char_low + ((p).max_char_high << 8))
-
-static void fillrun ( char *p, pel x0, pel x1, int bit );
-
-extern psfont *FontP;
-extern psobj *ISOLatin1EncArrayP;
-
-static void fill ( char *dest, int h, int w, struct region *area, int byte,
- int bit, int wordsize );
-
-static int
-Type1ReturnCodeToXReturnCode(int rc)
-{
- switch(rc) {
- case SCAN_OK:
- return Successful;
- case SCAN_FILE_EOF:
- /* fall through to BadFontFormat */
- case SCAN_ERROR:
- return BadFontFormat;
- case SCAN_OUT_OF_MEMORY:
- return AllocError;
- case SCAN_FILE_OPEN_ERROR:
- return BadFontName;
- case SCAN_TRUE:
- case SCAN_FALSE:
- case SCAN_END:
- /* fall through */
- default:
- /* this should not happen */
- ErrorF("Type1 return code not convertable to X return code: %d\n", rc);
- return rc;
- }
-}
-
-/*ARGSUSED*/
-int
-Type1OpenScalable (FontPathElementPtr fpe,
- FontPtr *ppFont,
- int flags,
- FontEntryPtr entry,
- char *fileName,
- FontScalablePtr vals,
- fsBitmapFormat format,
- fsBitmapFormatMask fmask,
- FontPtr non_cachable_font) /* We don't do licensing */
-{
- FontPtr pFont;
- int bit,
- byte,
- glyph,
- scan,
- image;
- int pad,wordsize; /* scan & image in bits */
- long *pool; /* memory pool for ximager objects */
- int size; /* for memory size calculations */
- struct XYspace *S; /* coordinate space for character */
- struct region *area;
- CharInfoRec *glyphs;
- int len, rc, count = 0, i = 0;
- struct type1font *type1;
- char *p;
- FontMapPtr mapping = NULL;
- int no_mapping;
- psobj *fontmatrix;
- long x0, total_width = 0, total_raw_width = 0;
- double x1, y1, t1 = .001, t2 = 0.0, t3 = 0.0, t4 = .001;
- double sxmult;
-
- /* Reject ridiculously small font sizes that will blow up the math */
- if (hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]) < 1.0 ||
- hypot(vals->pixel_matrix[2], vals->pixel_matrix[3]) < 1.0)
- return BadFontName;
-
- /* set up default values */
- FontDefaultFormat(&bit, &byte, &glyph, &scan);
- /* get any changes made from above */
- rc = CheckFSFormat(format, fmask, &bit, &byte, &scan, &glyph, &image);
- if (rc != Successful)
- return rc;
-
- pad = glyph * 8;
- wordsize = scan * 8;
-
-#define PAD(bits, pad) (((bits)+(pad)-1)&-(pad))
-
- pFont = CreateFontRec();
- if (pFont == NULL)
- return AllocError;
-
- type1 = (struct type1font *)xalloc(sizeof(struct type1font));
- if (type1 == NULL) {
- DestroyFontRec(pFont);
- return AllocError;
- }
- bzero(type1, sizeof(struct type1font));
-
- /* heuristic for "maximum" size of pool we'll need: */
- size = 200000 + 600 *
- (int)hypot(vals->pixel_matrix[2], vals->pixel_matrix[3])
- * sizeof(short);
- if (size < 0 || NULL == (pool = (long *) xalloc(size))) {
- xfree(type1);
- DestroyFontRec(pFont);
- return AllocError;
- }
-
- addmemory(pool, size);
-
-
- glyphs = type1->glyphs;
-
- /* load font if not already loaded */
- if (!fontfcnA(fileName, &rc)) {
- delmemory();
- xfree(type1);
- DestroyFontRec(pFont);
- xfree(pool);
- return Type1ReturnCodeToXReturnCode(rc);
- }
-
- fontmatrix = &FontP->fontInfoP[FONTMATRIX].value;
- if (objPIsArray(fontmatrix) && fontmatrix->len == 6)
- {
-#define assign(n,d,f) if (objPIsInteger(fontmatrix->data.arrayP + n)) \
- d = fontmatrix->data.arrayP[n].data.integer; \
- else if (objPIsReal(fontmatrix->data.arrayP + n)) \
- d = fontmatrix->data.arrayP[n].data.real; \
- else d = f;
-
- assign(0, t1, .001);
- assign(1, t2, 0.0);
- assign(2, t3, 0.0);
- assign(3, t4, .001);
- }
-
- S = (struct XYspace *) t1_Transform((struct xobject *)IDENTITY,
- t1, t2, t3, t4);
-
- S = (struct XYspace *) Permanent(t1_Transform((struct xobject *)S,
- vals->pixel_matrix[0],
- -vals->pixel_matrix[1],
- vals->pixel_matrix[2],
- -vals->pixel_matrix[3]));
-
-
- /* multiplier for computation of raw values */
- sxmult = hypot(vals->pixel_matrix[0], vals->pixel_matrix[1]);
- if (sxmult > EPS) sxmult = 1000.0 / sxmult;
-
- no_mapping=0;
- p = FontEncFromXLFD(entry->name.name, entry->name.length);
-
- if(p==0) { /* XLFD does not specify an encoding */
- mapping=0;
- no_mapping=2; /* ISO 8859-1 */
- }
-
- if(!strcmp(p, "adobe-fontspecific")) {
- mapping=0;
- no_mapping=1; /* font's native encoding vector */
- }
-
- pFont->info.firstCol = 255;
- pFont->info.lastCol = 0;
-
- if(!no_mapping) {
- mapping = FontEncMapFind(p,
- FONT_ENCODING_POSTSCRIPT, -1, -1,
- fileName);
- if(!mapping)
- mapping = FontEncMapFind(p,
- FONT_ENCODING_UNICODE, -1, -1,
- fileName);
- if(!mapping)
- goto NoEncoding;
- else
- no_mapping=0;
- }
-
- for (i=0; i < 256; i++) {
- long h,w;
- long paddedW;
- int j;
- char *codename;
-
- if(no_mapping == 1) {
- codename = FontP->fontInfoP[ENCODING].
- value.data.arrayP[i].data.valueP;
- len = FontP->fontInfoP[ENCODING].
- value.data.arrayP[i].len;
- } else if(no_mapping) {
- codename = unicodetoPSname(i);
- len = codename ? strlen(codename) : 0;
- } else {
- if(mapping->type == FONT_ENCODING_UNICODE) {
- codename = unicodetoPSname(FontEncRecode(i, mapping));
- } else
- codename = FontEncName(i, mapping);
- len=codename?strlen(codename):0;
- }
-
- /* Avoid multiply rasterising the undefined glyph */
- if(len==7 && !strncmp(codename, ".notdef", 7)) {
- len=0;
- codename=0;
- }
-
- /* But do rasterise it at least once */
- if(len==0) {
- if(i==0) {
- codename=".notdef";
- len=7;
- } else
- continue;
- }
-
- /* See if this character is in the list of ranges specified
- in the XLFD name */
- if(i!=0) {
- for (j = 0; j < vals->nranges; j++)
- if (i >= minchar(vals->ranges[j]) &&
- i <= maxchar(vals->ranges[j]))
- break;
-
- /* If not, don't realize it. */
- if (vals->nranges && j == vals->nranges)
- continue;
- }
-
- rc = 0;
- area = (struct region *)fontfcnB(S, (unsigned char *)codename,
- &len, &rc);
- if (rc < 0) {
- rc = Type1ReturnCodeToXReturnCode(rc);
- break;
- }
- else if (rc > 0)
- continue;
-
- if (area == NULL)
- continue;
-
- if (pFont->info.firstCol > i)
- pFont->info.firstCol = i;
- if (pFont->info.lastCol < i)
- pFont->info.lastCol = i;
-
- h = area->ymax - area->ymin;
- w = area->xmax - area->xmin;
- paddedW = PAD(w, pad);
-
- if (h > 0 && w > 0) {
- size = h * paddedW / 8;
- glyphs[i].bits = (char *)xalloc(size);
- if (glyphs[i].bits == NULL) {
- rc = AllocError;
- break;
- }
- }
- else {
- size = 0;
- h = w = 0;
- area->xmin = area->xmax = 0;
- area->ymax = area->ymax = 0;
- }
-
- glyphs[i].metrics.leftSideBearing = area->xmin;
- x1 = (double)(x0 = area->ending.x - area->origin.x);
- y1 = (double)(area->ending.y - area->origin.y);
- glyphs[i].metrics.characterWidth =
- (x0 + (x0 > 0 ? FPHALF : -FPHALF)) / (1 << FRACTBITS);
- if (!glyphs[i].metrics.characterWidth && size == 0)
- {
- /* Zero size and zero extents: presumably caused by
- the choice of transformation. Let's create a
- small bitmap so we're not mistaken for an undefined
- character. */
- h = w = 1;
- size = paddedW = PAD(w, pad);
- glyphs[i].bits = (char *)xalloc(size);
- if (glyphs[i].bits == NULL) {
- rc = AllocError;
- break;
- }
- }
- glyphs[i].metrics.attributes =
- NEARESTPEL((long)(hypot(x1, y1) * sxmult));
- total_width += glyphs[i].metrics.attributes;
- total_raw_width += abs((int)(INT16)glyphs[i].metrics.attributes);
- count++;
- glyphs[i].metrics.rightSideBearing = w + area->xmin;
- glyphs[i].metrics.descent = area->ymax - NEARESTPEL(area->origin.y);
- glyphs[i].metrics.ascent = h - glyphs[i].metrics.descent;
-
-
- bzero(glyphs[i].bits, size);
- if (h > 0 && w > 0) {
- fill(glyphs[i].bits, h, paddedW, area, byte, bit, wordsize );
- }
-
- Destroy(area);
- }
- NoEncoding:
-
- delmemory();
- xfree(pool);
-
- if (pFont->info.firstCol > pFont->info.lastCol)
- {
- xfree(type1);
- DestroyFontRec(pFont);
- return BadFontName;
- }
-
- if (i != 256) {
- for (i--; i >= 0; i--)
- if (glyphs[i].bits != NULL)
- xfree(glyphs[i].bits);
- xfree(type1);
- DestroyFontRec(pFont);
- return rc;
- }
- type1->pDefault = NULL;
-
- pFont->format = format;
-
- pFont->bit = bit;
- pFont->byte = byte;
- pFont->glyph = glyph;
- pFont->scan = scan;
-
- pFont->info.firstRow = 0;
- pFont->info.lastRow = 0;
-
- pFont->get_metrics = Type1GetMetrics;
- pFont->get_glyphs = Type1GetGlyphs;
- pFont->unload_font = Type1CloseFont;
- pFont->unload_glyphs = NULL;
- pFont->refcnt = 0;
-
- pFont->fontPrivate = (unsigned char *) type1;
-
- if (count)
- {
- total_raw_width = (total_raw_width * 10 + count / 2) / count;
- if (total_width < 0)
- {
- /* Predominant direction is R->L */
- total_raw_width = -total_raw_width;
- }
- vals->width = (int)((double)total_raw_width *
- vals->pixel_matrix[0] / 1000.0 +
- (vals->pixel_matrix[0] > 0 ? .5 : -.5));
- }
-
- T1FillFontInfo(pFont, vals, fileName, entry->name.name, total_raw_width);
-
- *ppFont = pFont;
- return Successful;
-}
-
-static int
-Type1GetGlyphs(FontPtr pFont,
- unsigned long count,
- unsigned char *chars,
- FontEncoding charEncoding,
- unsigned long *glyphCount, /* RETURN */
- CharInfoPtr *glyphs) /* RETURN */
-{
- unsigned int firstRow;
- unsigned int numRows;
- CharInfoPtr *glyphsBase;
- register unsigned int c;
- register CharInfoPtr pci;
- unsigned int r;
- CharInfoPtr pDefault;
- register struct type1font *type1Font;
- register int firstCol;
-
- type1Font = (struct type1font *) pFont->fontPrivate;
- firstCol = pFont->info.firstCol;
- pDefault = type1Font->pDefault;
- glyphsBase = glyphs;
-
- switch (charEncoding) {
-
-#define EXIST(pci) \
- ((pci)->metrics.attributes || \
- (pci)->metrics.ascent != -(pci)->metrics.descent || \
- (pci)->metrics.leftSideBearing != (pci)->metrics.rightSideBearing)
-
- case Linear8Bit:
- case TwoD8Bit:
- if (pFont->info.firstRow > 0)
- break;
- while (count--) {
- c = (*chars++);
- if (c >= firstCol &&
- (pci = &type1Font->glyphs[c]) &&
- EXIST(pci))
- *glyphs++ = pci;
- else if (pDefault)
- *glyphs++ = pDefault;
- }
- break;
- case Linear16Bit:
- while (count--) {
- c = *chars++ << 8;
- c = (c | *chars++);
- if (c < 256 && c >= firstCol &&
- (pci = &type1Font->glyphs[c]) &&
- EXIST(pci))
- *glyphs++ = pci;
- else if (pDefault)
- *glyphs++ = pDefault;
- }
- break;
-
- case TwoD16Bit:
- firstRow = pFont->info.firstRow;
- numRows = pFont->info.lastRow - firstRow + 1;
- while (count--) {
- r = (*chars++) - firstRow;
- c = (*chars++);
- if (r < numRows && c < 256 && c >= firstCol &&
- (pci = &type1Font->glyphs[(r << 8) + c]) &&
- EXIST(pci))
- *glyphs++ = pci;
- else if (pDefault)
- *glyphs++ = pDefault;
- }
- break;
- }
- *glyphCount = glyphs - glyphsBase;
- return Successful;
-
-#undef EXIST
-}
-
-static int
-Type1GetMetrics(FontPtr pFont,
- unsigned long count,
- unsigned char *chars,
- FontEncoding charEncoding,
- unsigned long *glyphCount, /* RETURN */
- xCharInfo **glyphs) /* RETURN */
-{
- static CharInfoRec nonExistantChar;
-
- int ret;
- struct type1font *type1Font;
- CharInfoPtr oldDefault;
-
- type1Font = (struct type1font *) pFont->fontPrivate;
- oldDefault = type1Font->pDefault;
- type1Font->pDefault = &nonExistantChar;
- ret = Type1GetGlyphs(pFont, count, chars, charEncoding, glyphCount, (CharInfoPtr *) glyphs);
- type1Font->pDefault = oldDefault;
- return ret;
-}
-
-void
-Type1CloseFont(FontPtr pFont)
-{
- register int i;
- struct type1font *type1;
-
- type1 = (struct type1font *) pFont->fontPrivate;
- for (i=0; i < 256; i++)
- if (type1->glyphs[i].bits != NULL)
- xfree(type1->glyphs[i].bits);
- xfree(type1);
-
- if (pFont->info.props)
- xfree(pFont->info.props);
-
- if (pFont->info.isStringProp)
- xfree(pFont->info.isStringProp);
-
- DestroyFontRec(pFont);
-}
-
-static void
-fill(char *dest, /* destination bitmap */
- int h, int w, /* dimensions of 'dest', w padded */
- struct region *area, /* region to write to 'dest' */
- int byte, int bit, /* flags; LSBFirst or MSBFirst */
- int wordsize) /* number of bits per word for LSB/MSB purposes */
-{
- register struct edgelist *edge; /* for looping through edges */
- register char *p; /* current scan line in 'dest' */
- register int y; /* for looping through scans */
- register int wbytes = w / 8; /* number of bytes in width */
- register pel *leftP,*rightP; /* pointers to X values, left and right */
- int xmin = area->xmin; /* upper left X */
- int ymin = area->ymin; /* upper left Y */
-
- for (edge = area->anchor; VALIDEDGE(edge); edge = edge->link->link) {
-
- p = dest + (edge->ymin - ymin) * wbytes;
- leftP = edge->xvalues;
- rightP = edge->link->xvalues;
-
- for (y = edge->ymin; y < edge->ymax; y++) {
- fillrun(p, *leftP++ - xmin, *rightP++ - xmin, bit);
- p += wbytes;
- }
- }
-/*
-Now, as an afterthought, we'll go reorganize if odd byte order requires
-it:
-*/
- if (byte == LSBFirst && wordsize != 8) {
- register int i;
-
- switch (wordsize) {
- case 16:
- {
- register unsigned short data,*p;
-
- p = (unsigned short *) dest;
-
- for (i = h * w /16; --i >= 0;) {
- data = *p;
- *p++ = (data << 8) + (data >> 8);
- }
- break;
- }
- case 64:
- case 32:
- {
- register unsigned long data,*p;
-
- p = (unsigned long *) dest;
-
- for (i = h * w / 32; --i >= 0;) {
- data = *p;
- *p++ = (data << 24) + (data >> 24)
- + (0xFF00 & (data >> 8))
- + (0xFF0000 & (data << 8));
- }
- if (wordsize == 64) {
-
- p = (unsigned long *) dest;
-
- for (i = h * w / 64; --i >= 0;) {
- data = *p++;
- p[-1] = p[0];
- *p++ = data;
- }
- }
- break;
- }
- default:
- Abort("xiFill: unknown format");
- }
- }
-
-}
-
-#define ALLONES 0xFF
-
-static void
-fillrun(char *p, /* address of this scan line */
- pel x0, pel x1, /* left and right X */
- int bit) /* format: LSBFirst or MSBFirst */
-{
- register int startmask,endmask; /* bits to set in first and last char*/
- register int middle; /* number of chars between start and end + 1 */
-
- if (x1 <= x0)
- return;
- middle = x1/8 - x0/8;
- p += x0/8;
- x0 &= 7; x1 &= 7;
- if (bit == LSBFirst) {
- startmask = ALLONES << x0;
- endmask = ~(ALLONES << x1);
- }
- else {
- startmask = ALLONES >> x0;
- endmask = ~(ALLONES >> x1);
- }
- if (middle == 0)
- *p++ |= startmask & endmask;
- else {
- *p++ |= startmask;
- while (--middle > 0)
- *p++ = (char)ALLONES;
- *p |= endmask;
- }
-}
-
-#define CAPABILITIES (CAP_MATRIX | CAP_CHARSUBSETTING)
-
-static FontRendererRec renderers[] = {
- { ".pfa", 4, NULL, Type1OpenScalable,
- NULL, Type1GetInfoScalable, 0, CAPABILITIES },
- { ".pfb", 4, NULL, Type1OpenScalable,
- NULL, Type1GetInfoScalable, 0, CAPABILITIES }
-};
-
-void
-Type1RegisterFontFileFunctions(void)
-{
- int i;
-
- T1InitStdProps();
- for (i=0; i < sizeof(renderers) / sizeof(FontRendererRec); i++)
- FontFilePriorityRegisterRenderer(&renderers[i], -10);
-}
diff --git a/libXfont/src/Type1/t1hdigit.h b/libXfont/src/Type1/t1hdigit.h
deleted file mode 100644
index e05f0de5d..000000000
--- a/libXfont/src/Type1/t1hdigit.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/* $Xorg: t1hdigit.h,v 1.3 2000/08/17 19:46:33 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* Indicators for special characters in the p_hdigit.h tables */
-#define HERROR (0xfe)
-#define HWHITE_SPACE (0xfd)
-#define HRIGHT_ANGLE (0xfc)
-#define LAST_HDIGIT (0xf0)
-
-/* Declarations for the tables */
-#define HighHexP (HighHex+1)
-extern unsigned char HighHex[];
-#define LowHexP (LowHex+1)
-extern unsigned char LowHex[];
diff --git a/libXfont/src/Type1/t1imager.h b/libXfont/src/Type1/t1imager.h
deleted file mode 100644
index 9730f9a47..000000000
--- a/libXfont/src/Type1/t1imager.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/* $Xorg: t1imager.h,v 1.3 2000/08/17 19:46:33 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/t1imager.h,v 1.4 2001/01/17 19:43:23 dawes Exp $ */
-
-
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "regions.h"
-
-typedef struct xobject *xobject;
-typedef struct segment *path;
-typedef struct region *region;
-typedef struct XYspace *XYspace;
-
-
-#ifndef NULL
-#include <stddef.h>
-#endif
-
-#ifndef TRUE
-#define TRUE 1
-#endif
-
-#ifndef FALSE
-#define FALSE 0
-#endif
-
-
-#define WINDINGRULE -2
-#define EVENODDRULE -3
-
-#define CONTINUITY 0x80 /* can be added to above rules; e.g. WINDINGRULE+CONTINUITY */
-
-
-/*
-Generic null object definition:
-*/
-#define NULLOBJECT ((xobject)NULL)
-
-/*
-Null path definition:
-*/
-#define NULLPATH NULLOBJECT
-
-/*
-Full page and null region definition:
-*/
-#define INFINITY t1_Infinity
-#ifndef NOEXTERNS
-extern region *INFINITY;
-#endif
-#define NULLREGION NULLOBJECT
-
-#define FF_PARSE_ERROR 5
-#define FF_PATH 1
-
diff --git a/libXfont/src/Type1/t1info.c b/libXfont/src/Type1/t1info.c
deleted file mode 100644
index eea22b307..000000000
--- a/libXfont/src/Type1/t1info.c
+++ /dev/null
@@ -1,496 +0,0 @@
-/* $Xorg: t1info.c,v 1.4 2001/02/09 02:04:01 xorgcvs Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License, subject to the license given below, to use,
- * copy, modify, and distribute this software * and its
- * documentation for any purpose and without fee is hereby
- * granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software
- * without specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- *
- * Author: Carol H. Thompson IBM Almaden Research Center
- * Modeled on spinfo.c by Dave Lemke, Network Computing Devices, Inc
- * which contains the following copyright and permission notices:
- *
- * Copyright 1990, 1991 Network Computing Devices;
- * Portions Copyright 1987 by Digital Equipment Corporation
- *
- * 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 names of Network Computing Devices or Digital
- * not be used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission. Network Computing
- * Devices and Digital make no representations about the suitability of this
- * software for any purpose. It is provided "as is" without express or
- * implied warranty.
- *
- * NETWORK COMPUTING DEVICES AND DIGITAL DISCLAIM ALL WARRANTIES WITH
- * REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS, IN NO EVENT SHALL NETWORK COMPUTING DEVICES OR DIGITAL 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.
- */
-
-/*
-
-Copyright 1987, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included
-in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall
-not be used in advertising or otherwise to promote the sale, use or
-other dealings in this Software without prior written authorization
-from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/Type1/t1info.c,v 1.18tsi Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/fontutil.h>
-#ifndef FONTMODULE
-#include <stdio.h>
-#include <math.h>
-#else
-#include "xf86_ansic.h"
-#endif
-#include <X11/fonts/FSproto.h>
-
-#include "objects.h"
-#include "spaces.h"
-#include "fontfcn.h"
-
-#include "t1intf.h"
-
-#define DECIPOINTSPERINCH 722.7
-#define DEFAULTRES 75
-#define DEFAULTPOINTSIZE 120
-
-enum scaleType {
- atom, truncate_atom, pixel_size, point_size, resolution_x,
- resolution_y, average_width
-};
-
-typedef struct _fontProp {
- char *name;
- long atom;
- enum scaleType type;
-} fontProp;
-
-static fontProp fontNamePropTable[] = { /* Example: */
- { "FOUNDRY", 0, atom }, /* adobe */
- { "FAMILY_NAME", 0, atom }, /* times roman */
- { "WEIGHT_NAME", 0, atom }, /* bold */
- { "SLANT", 0, atom }, /* i */
- { "SETWIDTH_NAME", 0, atom }, /* normal */
- { "ADD_STYLE_NAME", 0, atom }, /* */
- { "PIXEL_SIZE", 0, pixel_size }, /* 18 */
- { "POINT_SIZE", 0, point_size }, /* 180 */
- { "RESOLUTION_X", 0, resolution_x }, /* 72 */
- { "RESOLUTION_Y", 0, resolution_y }, /* 72 */
- { "SPACING", 0, atom }, /* p */
- { "AVERAGE_WIDTH", 0, average_width }, /* 0 */
- { "CHARSET_REGISTRY", 0, atom }, /* ISO8859 */
- { "CHARSET_ENCODING", 0, truncate_atom } /* 1 */
-};
-
-/* NOTICE: Following array is closely related to the sequence of defines
- following it. */
-static fontProp extraProps[] = {
- { "FONT", 0, },
- { "COPYRIGHT", 0, },
- { "RAW_PIXEL_SIZE", 0, },
- { "RAW_POINT_SIZE", 0, },
- { "RAW_ASCENT", 0, },
- { "RAW_DESCENT", 0, },
- { "RAW_AVERAGE_WIDTH", 0, },
- { "FACE_NAME", 0, },
- { "FONT_TYPE", 0, },
- { "RASTERIZER_NAME", 0, }
-};
-
-/* this is a bit kludgy */
-#define FONTPROP 0
-#define COPYRIGHTPROP 1
-#define RAWPIXELPROP 2
-#define RAWPOINTPROP 3
-#define RAWASCENTPROP 4
-#define RAWDESCENTPROP 5
-#define RAWWIDTHPROP 6
-#define FACE_NAMEPROP 7
-#define FONT_TYPEPROP 8
-#define RASTERIZER_NAMEPROP 9
-
-#define NNAMEPROPS (sizeof(fontNamePropTable) / sizeof(fontProp))
-#define NEXTRAPROPS (sizeof(extraProps) / sizeof(fontProp))
-
-#define NPROPS (NNAMEPROPS + NEXTRAPROPS)
-
-/*ARGSUSED*/
-static void
-FillHeader(FontInfoPtr pInfo, FontScalablePtr Vals)
-{
- /* OpenScalable in T1FUNCS sets the following:
- pInfo->firstCol,
- pInfo->firstRow,
- pInfo->lastCol, and
- pInfo->lastRow. */
- /* the following are ununsed
- pInfo->pad. */
-
- /* Items we should handle better someday +++ */
- pInfo->defaultCh = 0;
- pInfo->drawDirection = LeftToRight;
- if (Vals->point_matrix[0] == Vals->point_matrix[3])
- pInfo->anamorphic = 0;
- else
- pInfo->anamorphic = 1;
- pInfo->inkMetrics = 0; /* no ink metrics here */
- pInfo->cachable = 1; /* no licensing (yet) */
-}
-
-static void
-adjust_min_max(xCharInfo *minc, xCharInfo *maxc, xCharInfo *tmp)
-{
-#define MINMAX(field,ci) \
- if (minc->field > (ci)->field) \
- minc->field = (ci)->field; \
- if (maxc->field < (ci)->field) \
- maxc->field = (ci)->field;
-
- MINMAX(ascent, tmp);
- MINMAX(descent, tmp);
- MINMAX(leftSideBearing, tmp);
- MINMAX(rightSideBearing, tmp);
- MINMAX(characterWidth, tmp);
-
- /* Do MINMAX for attributes field. Since that field is CARD16,
- we'll cast to a signed integer */
- if ((INT16)minc->attributes > (INT16)tmp->attributes)
- minc->attributes = tmp->attributes;
- if ((INT16)maxc->attributes < (INT16)tmp->attributes)
- maxc->attributes = tmp->attributes;
-
-#undef MINMAX
-}
-
-static void
-ComputeBounds(FontInfoPtr pInfo, CharInfoPtr pChars, FontScalablePtr Vals)
-{
- int i;
- xCharInfo minchar, maxchar;
- int numchars = 0;
- int totchars;
- int overlap;
- int maxlap;
-
- minchar.ascent = minchar.descent =
- minchar.leftSideBearing = minchar.rightSideBearing =
- minchar.characterWidth = minchar.attributes = 32767;
- maxchar.ascent = maxchar.descent =
- maxchar.leftSideBearing = maxchar.rightSideBearing =
- maxchar.characterWidth = maxchar.attributes = -32767;
-
- maxlap = -32767;
- totchars = pInfo->lastCol - pInfo->firstCol + 1;
- pChars += pInfo->firstCol;
- pInfo->allExist = 1;
- for (i = 0; i < totchars; i++,pChars++) {
- xCharInfo *pmetrics = &pChars->metrics;
-
- if (pmetrics->attributes ||
- pmetrics->ascent != -pmetrics->descent ||
- pmetrics->leftSideBearing != pmetrics->rightSideBearing) {
- numchars++;
- adjust_min_max(&minchar, &maxchar, pmetrics);
- overlap = pmetrics->rightSideBearing - pmetrics->characterWidth;
- if (overlap > maxlap) maxlap = overlap;
- }
- else pInfo->allExist = 0;
- }
-
- /* If we're monospaced, round the average width field to the
- nearest pixel */
- if (minchar.characterWidth == maxchar.characterWidth)
- Vals->width = minchar.characterWidth * 10;
-
- pInfo->maxbounds = maxchar;
- pInfo->minbounds = minchar;
- pInfo->ink_maxbounds = maxchar;
- pInfo->ink_minbounds = minchar;
- pInfo->maxOverlap = maxlap + -(minchar.leftSideBearing);
-
- /* Set the pInfo flags */
- /* Properties set by FontComputeInfoAccelerators:
- pInfo->noOverlap;
- pInfo->terminalFont;
- pInfo->constantMetrics;
- pInfo->constantWidth;
- pInfo->inkInside;
-
- */
- FontComputeInfoAccelerators (pInfo);
-}
-
-static void
-ComputeProps(FontInfoPtr pInfo, FontScalablePtr Vals, char *Filename,
- long *sAscent, long *sDescent)
-{
- int infoint;
- int infoBBox[4];
- int rc;
-
- QueryFontLib(Filename, "isFixedPitch", &infoint, &rc);
- if (!rc) {
- pInfo->constantWidth = infoint;
- }
- QueryFontLib((char *)0, "FontBBox", infoBBox, &rc);
- if (!rc) {
- pInfo->fontAscent =
- (int)((double)infoBBox[3] * Vals->pixel_matrix[3] +
- (infoBBox[3] > 0 ? 500 : -500)) / 1000;
- pInfo->fontDescent =
- -(int)((double)infoBBox[1] * Vals->pixel_matrix[3] +
- (infoBBox[1] > 0 ? 500 : -500)) / 1000;
- *sAscent = infoBBox[3];
- *sDescent = -infoBBox[1];
- }
-}
-
-static void
-ComputeStdProps(FontInfoPtr pInfo, FontScalablePtr Vals,
- char *Filename, char *Fontname,
- long sAscent, long sDescent, long sWidth)
-{
- FontPropPtr pp;
- int i,
- nprops;
- fontProp *fpt;
- char *is_str;
- char *ptr1 = NULL,
- *ptr2;
- char *ptr3;
- char *infostrP;
- int rc;
- char scaledName[MAXFONTNAMELEN];
-
- strcpy (scaledName, Fontname);
- /* Fill in our copy of the fontname from the Vals structure */
- FontParseXLFDName (scaledName, Vals, FONT_XLFD_REPLACE_VALUE);
-
- /* This form of the properties is used by the X-client; the X-server
- doesn't care what they are. */
- nprops = pInfo->nprops = NPROPS;
- pInfo->isStringProp = (char *) xalloc(sizeof(char) * nprops);
- pInfo->props = (FontPropPtr) xalloc(sizeof(FontPropRec) * nprops);
- if (!pInfo->isStringProp || !pInfo->props) {
- xfree(pInfo->isStringProp);
- pInfo->isStringProp = (char *) 0;
- xfree(pInfo->props);
- pInfo->props = (FontPropPtr) 0;
- return;
- }
- bzero(pInfo->isStringProp, (sizeof(char) * nprops));
-
- ptr2 = scaledName;
- for (i = NNAMEPROPS, pp = pInfo->props, fpt = fontNamePropTable, is_str = pInfo->isStringProp;
- i;
- i--, pp++, fpt++, is_str++) {
-
- if (*ptr2)
- {
- ptr1 = ptr2 + 1;
- if (!(ptr2 = strchr(ptr1, '-'))) ptr2 = strchr(ptr1, '\0');
- }
-
- pp->name = fpt->atom;
- switch (fpt->type) {
- case atom: /* Just copy info from scaledName */
- *is_str = TRUE;
- pp->value = MakeAtom(ptr1, ptr2 - ptr1, TRUE);
- break;
- case truncate_atom:
- *is_str = TRUE;
- for (ptr3 = ptr1; *ptr3; ptr3++)
- if (*ptr3 == '[')
- break;
- pp->value = MakeAtom(ptr1, ptr3 - ptr1, TRUE);
- break;
- case pixel_size:
- pp->value = (int)(fabs(Vals->pixel_matrix[3]) + .5);
- break;
- case point_size:
- pp->value = (int)(fabs(Vals->point_matrix[3]) * 10.0 + .5);
- break;
- case resolution_x:
- pp->value = Vals->x;
- break;
- case resolution_y:
- pp->value = Vals->y;
- break;
- case average_width:
- pp->value = Vals->width;
- break;
- }
- }
-
- for (i = 0, fpt = extraProps;
- i < NEXTRAPROPS;
- i++, is_str++, pp++, fpt++) {
- pp->name = fpt->atom;
- switch (i) {
- case FONTPROP:
- *is_str = TRUE;
- pp->value = MakeAtom(scaledName, strlen(scaledName), TRUE);
- break;
- case COPYRIGHTPROP:
- *is_str = TRUE;
- QueryFontLib(Filename, "Notice", &infostrP, &rc);
- if (rc || !infostrP) {
- infostrP = "Copyright Notice not available";
- }
- pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE);
- break;
- case FACE_NAMEPROP:
- *is_str = TRUE;
- QueryFontLib(Filename, "FontName", &infostrP, &rc);
- if (rc || !infostrP) {
- infostrP = "(unknown)";
- }
- pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE);
- break;
- case FONT_TYPEPROP:
- *is_str = TRUE;
- infostrP = "Type 1";
- pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE);
- break;
- case RASTERIZER_NAMEPROP:
- *is_str = TRUE;
- infostrP = "X Consortium Type 1 Rasterizer";
- pp->value = MakeAtom(infostrP, strlen(infostrP), TRUE);
- break;
- case RAWPIXELPROP:
- *is_str = FALSE;
- pp->value = 1000;
- break;
- case RAWPOINTPROP:
- *is_str = FALSE;
- pp->value = (long)(72270.0 / (double)Vals->y + .5);
- break;
- case RAWASCENTPROP:
- *is_str = FALSE;
- pp->value = sAscent;
- break;
- case RAWDESCENTPROP:
- *is_str = FALSE;
- pp->value = sDescent;
- break;
- case RAWWIDTHPROP:
- *is_str = FALSE;
- pp->value = sWidth;
- break;
- }
- }
-}
-
-/*ARGSUSED*/
-int
-Type1GetInfoScalable(FontPathElementPtr fpe,
- FontInfoPtr pInfo,
- FontEntryPtr entry,
- FontNamePtr fontName,
- char *fileName,
- FontScalablePtr Vals)
-{
- FontPtr pfont;
- int flags = 0;
- long format = 0; /* It doesn't matter what format for just info */
- long fmask = 0;
- int ret;
-
- ret = Type1OpenScalable(fpe, &pfont, flags, entry, fileName, Vals,
- format, fmask , NULL);
- if (ret != Successful)
- return ret;
- *pInfo = pfont->info;
-
- /* XXX - Set pointers in pfont->info to NULL so they are not freed. */
- pfont->info.props = NULL;
- pfont->info.isStringProp = NULL;
-
- Type1CloseFont(pfont);
- return Successful;
-}
-
-void
-T1FillFontInfo(FontPtr pFont, FontScalablePtr Vals,
- char *Filename, char *Fontname, long sWidth)
-{
- FontInfoPtr pInfo = &pFont->info;
- struct type1font *p = (struct type1font *)pFont->fontPrivate;
- long sAscent = 0, sDescent = 0; /* Scalable 1000-pixel values */
-
- FillHeader(pInfo, Vals);
-
- ComputeBounds(pInfo, p->glyphs, Vals);
-
- ComputeProps(pInfo, Vals, Filename, &sAscent, &sDescent);
- ComputeStdProps(pInfo, Vals, Filename, Fontname, sAscent, sDescent, sWidth);
-}
-
-/* Called once, at renderer registration time */
-void
-T1InitStdProps(void)
-{
- int i;
- fontProp *t;
-
- i = sizeof(fontNamePropTable) / sizeof(fontProp);
- for (t = fontNamePropTable; i; i--, t++)
- t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE);
- i = sizeof(extraProps) / sizeof(fontProp);
- for (t = extraProps; i; i--, t++)
- t->atom = MakeAtom(t->name, (unsigned) strlen(t->name), TRUE);
-}
diff --git a/libXfont/src/Type1/t1intf.h b/libXfont/src/Type1/t1intf.h
deleted file mode 100644
index 371908090..000000000
--- a/libXfont/src/Type1/t1intf.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/* $Xorg: t1intf.h,v 1.3 2000/08/17 19:46:33 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/t1intf.h,v 1.6 2001/01/17 19:43:23 dawes Exp $ */
-
-struct type1font {
- CharInfoPtr pDefault;
- CharInfoRec glyphs[256];
-};
-
-/*
- * Function prototypes
- */
-/* t1funcs.c */
-extern int Type1OpenScalable ( FontPathElementPtr fpe, FontPtr *ppFont,
- int flags, FontEntryPtr entry, char *fileName,
- FontScalablePtr vals, fsBitmapFormat format,
- fsBitmapFormatMask fmask,
- FontPtr non_cachable_font );
-extern void Type1CloseFont ( FontPtr pFont );
-
-/* t1info.c */
-extern int Type1GetInfoScalable ( FontPathElementPtr fpe, FontInfoPtr pInfo,
- FontEntryPtr entry, FontNamePtr fontName,
- char *fileName, FontScalablePtr Vals );
-extern void T1FillFontInfo ( FontPtr pFont, FontScalablePtr Vals,
- char *Filename, char *Fontname, long sWidth );
-extern void Type1InitStdProps ( void );
diff --git a/libXfont/src/Type1/t1io.c b/libXfont/src/Type1/t1io.c
deleted file mode 100644
index ba2e580f8..000000000
--- a/libXfont/src/Type1/t1io.c
+++ /dev/null
@@ -1,299 +0,0 @@
-/* $Xorg: t1io.c,v 1.3 2000/08/17 19:46:33 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- * Author: Carol H. Thompson IBM Almaden Research Center
- */
-/* $XFree86: xc/lib/font/Type1/t1io.c,v 3.8 2001/01/17 19:43:23 dawes Exp $ */
-/*******************************************************************
-* I/O package for Type 1 font reading
-********************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifndef STATIC
-#define STATIC static
-#endif
-
-#ifndef FONTMODULE
-#include <fcntl.h>
-#include <unistd.h>
-#else
-#include "Xdefs.h"
-#include "Xmd.h" /* INT32 declaration */
-#include "xf86_ansic.h"
-#endif
-#include "t1stdio.h"
-#include "t1hdigit.h"
-#ifdef WIN32
-#include <X11/Xw32defs.h>
-#endif
-#include <X11/Xdefs.h>
-
-/* Constants and variables used in the decryption */
-#define c1 ((unsigned short)52845)
-#define c2 ((unsigned short)22719)
-static unsigned short r;
-static int asc, Decrypt;
-static int extrach;
-static int haveextrach;
-
-/* Our single FILE structure and buffer for this package */
-STATIC F_FILE TheFile;
-STATIC unsigned char TheBuffer[F_BUFSIZ];
-
-/* Our routines */
-static int T1Decrypt ( unsigned char *p, int len );
-static int T1Fill ( F_FILE *f );
-
-/* -------------------------------------------------------------- */
-/*ARGSUSED*/
-F_FILE *
-T1Open(char *fn, /* Pointer to filename */
- char *mode) /* Pointer to open mode string */
-{
- F_FILE *of = &TheFile;
- int oflags = O_RDONLY; /* We know we are only reading */
-
- Decrypt = 0;
-
-#ifdef O_BINARY /* VMS or DOS */
- oflags |= O_BINARY;
-#endif
- of->fd = open(fn, oflags, 0);
- if (of->fd < 0)
- return NULL;
-
- /* Initialize the buffer information of our file descriptor */
- of->b_base = TheBuffer;
- of->b_size = F_BUFSIZ;
- of->b_ptr = NULL;
- of->b_cnt = 0;
- of->flags = 0;
- of->error = 0;
- haveextrach = 0;
- return &TheFile;
-} /* end Open */
-
-/* -------------------------------------------------------------- */
-int /* Read one character */
-T1Getc(F_FILE *f) /* Stream descriptor */
-{
- if (f->b_base == NULL) return EOF; /* already closed */
-
- if (f->flags & UNGOTTENC) { /* there is an ungotten c */
- f->flags &= ~UNGOTTENC;
- return (int) f->ungotc;
- }
-
- if (f->b_cnt == 0) /* Buffer needs to be (re)filled */
- f->b_cnt = T1Fill(f);
- if (f->b_cnt > 0) return (f->b_cnt--, (int) *(f->b_ptr++));
- else {
- f->flags |= FIOEOF;
- return EOF;
- }
-} /* end Getc */
-
-/* -------------------------------------------------------------- */
-int /* Put back one character */
-T1Ungetc(int c,
- F_FILE *f) /* Stream descriptor */
-{
- if (c != EOF) {
- f->ungotc = c;
- f->flags |= UNGOTTENC; /* set flag */
- f->flags &= ~FIOEOF; /* reset EOF */
- }
- return c;
-} /* end Ungetc */
-
-/* -------------------------------------------------------------- */
-int /* Read n items into caller's buffer */
-T1Read(char *buffP, /* Buffer to be filled */
- int size, /* Size of each item */
- int n, /* Number of items to read */
- F_FILE *f) /* Stream descriptor */
-{
- int bytelen, cnt, i;
- F_char *p = (F_char *)buffP;
- int icnt; /* Number of characters to read */
-
- if (f->b_base == NULL) return 0; /* closed */
- icnt = (size!=1)?n*size:n; /* Number of bytes we want */
-
- if (f->flags & UNGOTTENC) { /* there is an ungotten c */
- f->flags &= ~UNGOTTENC;
- *(p++) = f->ungotc;
- icnt--; bytelen = 1;
- }
- else bytelen = 0;
-
- while (icnt > 0) {
- /* First use any bytes we have buffered in the stream buffer */
- if ((cnt=f->b_cnt) > 0) {
- if (cnt > icnt) cnt = icnt;
- for (i=0; i<cnt; i++) *(p++) = *(f->b_ptr++);
- f->b_cnt -= cnt;
- icnt -= cnt;
- bytelen += cnt;
- }
-
- if ((icnt == 0) || (f->flags & FIOEOF)) break;
-
- f->b_cnt = T1Fill(f);
- }
- return ((size!=1)?bytelen/size:bytelen);
-} /* end Read */
-
-/* -------------------------------------------------------------- */
-int /* Close the file */
-T1Close(F_FILE *f) /* Stream descriptor */
-{
- if (f->b_base == NULL) return 0; /* already closed */
- f->b_base = NULL; /* no valid stream */
- return close(f->fd);
-} /* end Close */
-
-
-/* -------------------------------------------------------------- */
-F_FILE * /* Initialization */
-T1eexec(F_FILE *f) /* Stream descriptor */
-{
- int i, c;
- int H;
- unsigned char *p;
- unsigned char randomP[8];
-
- r = 55665; /* initial key */
- asc = 1; /* indicate ASCII form */
-
- /* Consume the 4 random bytes, determining if we are also to
- ASCIIDecodeHex as we process our input. (See pages 63-64
- of the Adobe Type 1 Font Format book.) */
-
- /* Skip over any initial white space chars */
- while (HighHexP[c=_XT1getc(f)] == HWHITE_SPACE) ;
-
- /* If ASCII, the next 7 chars are guaranteed consecutive */
- randomP[0] = c; /* store first non white space char */
- T1Read((pointer)(randomP+1), 1, 3, f); /* read 3 more, for a total of 4 */
- /* store first four chars */
- for (i=0,p=randomP; i<4; i++) { /* Check 4 valid ASCIIEncode chars */
- if (HighHexP[*p++] > LAST_HDIGIT) { /* non-ASCII byte */
- asc = 0;
- break;
- }
- }
- if (asc) { /* ASCII form, convert first eight bytes to binary */
- T1Read((pointer)(randomP+4), 1, 4, f); /* Need four more */
- for (i=0,p=randomP; i<4; i++) { /* Convert */
- H = HighHexP[*p++];
- randomP[i] = H | LowHexP[*p++];
- }
- }
-
- /* Adjust our key */
- for (i=0,p=randomP; i<4; i++) {
- r = (*p++ + r) * c1 + c2;
- }
-
- /* Decrypt the remaining buffered bytes */
- f->b_cnt = T1Decrypt(f->b_ptr, f->b_cnt);
- Decrypt = 1;
- return (T1Feof(f))?NULL:f;
-} /* end eexec */
-
-/* -------------------------------------------------------------- */
-STATIC int
-T1Decrypt(unsigned char *p, int len)
-{
- int n;
- int H = 0, L;
- unsigned char *inp = p;
- unsigned char *tblP;
-
- if (asc) {
- if (haveextrach) {
- H = extrach;
- tblP = LowHexP;
- }
- else tblP = HighHexP;
- for (n=0; len>0; len--) {
- L = tblP[*inp++];
- if (L == HWHITE_SPACE) continue;
- if (L > LAST_HDIGIT) break;
- if (tblP == HighHexP) { /* Got first hexit value */
- H = L;
- tblP = LowHexP;
- } else { /* Got second hexit value; compute value and store it */
- n++;
- tblP = HighHexP;
- H |= L;
- /* H is an int, 0 <= H <= 255, so all of this will work */
- *p++ = H ^ (r >> 8);
- r = (H + r) * c1 + c2;
- }
- }
- if (tblP != HighHexP) { /* We had an odd number of hexits */
- extrach = H;
- haveextrach = 1;
- } else haveextrach = 0;
- return n;
- } else {
- for (n = len; n>0; n--) {
- H = *inp++;
- *p++ = H ^ (r >> 8);
- r = (H + r) * c1 + c2;
- }
- return len;
- }
-} /* end Decrypt */
-
-/* -------------------------------------------------------------- */
-STATIC int /* Refill stream buffer */
-T1Fill(F_FILE *f) /* Stream descriptor */
-{
- int rc;
-
- rc = read(f->fd, f->b_base, F_BUFSIZ);
- /* propagate any error or eof to current file */
- if (rc <= 0) {
- if (rc == 0) /* means EOF */
- f->flags |= FIOEOF;
- else {
- f->error = (short)-rc;
- f->flags |= FIOERROR;
- rc = 0;
- }
- }
- f->b_ptr = f->b_base;
- if (Decrypt) rc = T1Decrypt(f->b_base, rc);
- return rc;
-} /* end Fill */
diff --git a/libXfont/src/Type1/t1malloc.c b/libXfont/src/Type1/t1malloc.c
deleted file mode 100644
index df863a234..000000000
--- a/libXfont/src/Type1/t1malloc.c
+++ /dev/null
@@ -1,759 +0,0 @@
-/* $Xorg: t1malloc.c,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark not be
- * used in advertising or publicity pertaining to distribution of the
- * software without specific, written prior permission.
- *
- * IBM AND LEXMARK PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES OF
- * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO ANY
- * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
- * AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE
- * QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF THE
- * SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM OR LEXMARK) ASSUMES THE
- * ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN NO EVENT SHALL
- * IBM OR LEXMARK 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.
- */
-/* $XFree86: xc/lib/font/Type1/t1malloc.c,v 1.11 2002/02/18 20:51:57 herrb Exp $ */
- /* MALLOC CWEB V0004 LOTS */
-/*
-:h1.MALLOC - Fast Memory Allocation
-
-This module is meant to provide portable C-style memory allocation
-routines (malloc/free).
-
-&author. Jeffrey B. Lotspiech (lotspiech@almaden.ibm.com)
-
-*/
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#ifndef FONTMODULE
-#include <stdio.h>
-#else
-#include "Xdefs.h" /* Bool declaration */
-#include "Xmd.h" /* INT32 declaration */
-#include "os.h"
-#include "xf86_ansic.h"
-#endif
-#include "objects.h" /* get #define for Abort() */
-
-
-/*
-:h3.Define NULL
-
-In the beginning, C compilers made no assumptions about NULL. It was
-even theoretically possible that NULL would not be 0. ANSI has tied
-this down a bit. The following definition seems to be the most
-popular (in terms of reducing compiler complaints), however, if your
-compiler is unhappy about it, you can redefine it on the command line:
-*/
-#ifndef NULL
-#include <stddef.h>
-#endif
-/*
-Of course, NULL is important because xiMalloc() is defined to return
-NULL when out of memory.
-
-:h2.Data Structures Used to Manage Free Memory
-
-:h3.The "freeblock" Structure
-
-The list of available memory blocks is a doubly-linked list. Each
-block begins with the following structure:
-*/
-
-struct freeblock {
- long size; /* number of 'longs' in block,
- including this header */
- struct freeblock *fore; /* forward in doubly-linked list */
- struct freeblock *back; /* backward in doubly-linked list */
-} ;
-/*
-In addition, each free block has a TRAILER that is simply the 'size'
-repeated. Thus 'size' is found at the beginning of the block and at the
-end of the block (size-1 longs away). 'size' includes both the header
-and the trailer.
-
-When a block is allocated, its 'size' is turned negative (both at the
-beginning and at the end). Thus, checking whether two blocks may be
-combined is very simple. We merely examine both neighboring blocks'
-size to see if they are positive (and hence available for combination).
-
-The memory address returned to the user is therefore one "long" below the
-size, and one extra "long" is added to the end of the block (beyond what
-the user requested) to store the trailing size.
-
-:h3."firstfree" and "lastfree", the Anchors to the Free List
-
-"firstfree" points to the first available free block; "lastfree" points
-to the end of the chain of available blocks. These are linked together
-by initialization code; see :hdref refid=addmem..
-*/
-
-static struct freeblock firstfree = { 0L, NULL, NULL };
-static struct freeblock lastfree = { 0L, NULL, NULL };
-
-/*
-:h3."firstcombined" and "uncombined", Keeping Track of Uncombined Blocks
-
-This module is designed to make the combining of adjacent free memory
-blocks be very fast. Nonetheless, combining blocks is naturally the
-most expensive part of any memory system. In an X system,
-it is worthwhile to defer the combination for a while, because
-frequently we will end up asking for a block of exactly the same
-size that we recently returned and we can save ourselves some work.
-
-"MAXUNCOMBINED" is the maximum number of uncombined blocks that we will
-allow at any time:
-*/
-
-#define MAXUNCOMBINED 3
-
-/*
-"firstcombined" is a pointer into the free list. The uncombined blocks
-are always at the front of the list. "firstcombined" points to the
-first block that has been combined.
-*/
-static struct freeblock *firstcombined = &lastfree;
-static short uncombined = 0; /* current number of uncombined blocks */
-
-/*
-Uncombined blocks have a negative 'size'; in this they are like
-allocated blocks.
-
-We store a distinctive hex pattern in 'size' when we combine a block
-to help us debug:
-*/
-#define COMBINED 0xBADBAD
-
-/*
-:h3.DEBUGWORDS - Extra Memory Saved With Each Block for Debug
-
-We add 'DEBUGWORDS' words to each allocated block to put interesting
-debug information:
-*/
-#ifndef DEBUGWORDS
-#define DEBUGWORDS 0
-#endif
-
-/*
-:h3.MINEXCESS - Amount of "Excess" We Would be Willing to Ignore
-
-When we search the free list to find memory for a user request, we
-frequently find an area that is bigger than what the user has asked for.
-Normally we put the remaining words (the excess) back on the free list.
-However, if the area is just slightly bigger than what the user needs,
-it is counter-productive to do this, as the small amount recovered tends
-to hurt by increasing memory fragmentation rather than help by providing
-more available memory. "MINEXCESS" is the number of words that must be
-recovered before we would bother to put the excess back on the free
-list. If there is not enough excess, we just give the user more than he
-asked for.
-*/
-
-#define MINEXCESS (7 + DEBUGWORDS)
-
-/*
-:h3.Some Flags for Debug
-*/
-
-static long AvailableWords = 0; /* number of words available in memory */
-static char mallocdebug = 0; /* a flag that enables some chatty printf's */
-
-/*
-:h3.Prototypes of static functions
-*/
-
-static void combine ( void );
-static void freeuncombinable ( long *addr, long size );
-static void unhook ( struct freeblock *p );
-static void dumpchain ( void );
-#ifdef notused
-static void reportarea ( long *area );
-#endif
-
-/*
-:h3.whocalledme() - Debug for Memory Leaks
-
-This routine is 68000-specific; it copies the value of the application's
-curOper variable (which is often a pointer to a character string), and
-the first part of the stack at the time malloc was called into the
-DEBUGWORDS area reserved with each block.
-We use it to see who is malloc-ing memory without free-ing it.
-*/
-
-#if DEBUGWORDS
-
-static void
-whocalledme(long *addr, /* address of memory block */
- long *stack) /* address of malloc's parameter on stack */
-{
- register long size; /* size of memory block */
- register int i; /* loop index */
- extern char *curOper; /* ptr to last operator (kept by appl.) */
-
- stack--;
- size = - *addr;
-
- addr += size - 1 - DEBUGWORDS;
- *addr++ = (long) curOper;
- for (i=0; i < DEBUGWORDS-1; i++)
- *addr++ = *stack++;
-}
-#else
-
-#define whocalledme(addr, stack)
-
-#endif
-/*
-:h2.xiFree() - User-Callable "Return Memory" Routine
-
-The actual beginning of the block is one 'long' before the address we
-gave to the user. The block begins and ends with '-size' in words.
-*/
-
-void
-xiFree(long *addr) /* user's memory to be returned */
-{
- register long size; /* amount of memory in this block */
- register struct freeblock *p; /* identical to 'addr' */
-
- if (addr == NULL) { /* common "mistake", so allow it (CHT) */
- printf("\nxiFree(NULL)?\n");
- return;
- }
-
- size = *--addr;
-/*
-Make sure this address looks OK; 'size' must be less than zero (meaning
-the block is allocated) and should be repeated at the end of the block.
-*/
- if (size >= 0)
- Abort("free: bad size");
- if (addr[-1 - size] != size)
- Abort("free: mismatched size");
-/*
-Now make this a 'freeblock' structure and tack it on the FRONT of the
-free list (where uncombined blocks go):
-*/
- AvailableWords -= size; /* actually INCREASES AvailableWords */
- p = (struct freeblock *) addr;
- p->back = &firstfree;
- (p->fore = firstfree.fore)->back = p;
- firstfree.fore = p;
-/*
-If we have too many uncombined blocks, call combine() to combine one.
-*/
- if (++uncombined > MAXUNCOMBINED) {
- combine();
- if (mallocdebug) {
- printf("xiFree(%p) with combine, ", (void *)addr);
- dumpchain();
- }
- }
- else {
- if (mallocdebug) {
- printf("xiFree(%p), ", (void *)addr);
- dumpchain();
- }
- }
-
- return;
-}
-
-/*
-:h3.combine() - Subroutine of xiFree() to Combine Blocks
-
-This routine tries to combine the block just before 'firstcombined'.
-In any event, that block will be moved to the end of the list (after
-'firstcombined').
-*/
-
-static void
-combine(void)
-{
- register struct freeblock *p; /* block we will try to combine */
- register long *addr; /* identical to 'p' for 'long' access */
- register long size; /* size of this block */
- register long size2; /* size of potential combinee */
-
- p = firstcombined->back;
- if (p == &firstfree)
- Abort("why are we combining?");
-
- addr = (long *) p;
- size = - p->size;
- if (--uncombined < 0)
- Abort("too many combine()s");
-
- if (addr[-1] < 0 && addr[size] < 0) {
-/*
-We special case the situation where no combining can be done. Then, we
-just mark the chain "combined" (i.e., positive size), move the
-'firstcombined' pointer back in the chain, and return.
-*/
- addr[0] = addr[size - 1] = size;
- firstcombined = (struct freeblock *) addr;
- return;
- }
-/*
-Otherwise, we unhook this pointer from the chain:
-*/
- unhook(p);
-/*
-First we attempt to combine this with the block immediately above:
-*/
- size2 = addr[-1];
- if (size2 > 0) { /* i.e., block above is free */
- *addr = COMBINED; /* might help debug */
- addr -= size2;
- if (addr[0] != size2)
- Abort("bad block above");
- unhook((struct freeblock *)addr);
- size += size2;
- }
-/*
-At this point 'addr' and 'size' may be the original block, or it may be
-the newly combined block. Now we attempt to combine it with the block
-below:
-*/
- p = (struct freeblock *) (addr + size);
- size2 = p->size;
-
- if (size2 > 0) { /* i.e., block below is free */
- p->size = COMBINED;
- if (size2 != ((long *) p)[size2 - 1])
- Abort("bad block below");
- unhook(p);
- size += size2;
- }
-/*
-Finally we take the newly combined block and put it on the end of the
-chain by calling the "freeuncombinable" subroutine:
-*/
- freeuncombinable(addr, size);
-}
-
-/*
-:h3.freeuncombinable() - Free a Block That Need Not be Combined
-
-This block is "uncombinable" either because we have already combined
-it with its eligible neighbors, or perhaps because we know it has
-no neighbors.
-*/
-
-static void
-freeuncombinable(long *addr, /* address of the block to be freed */
- long size) /* size of block in words */
-{
- register struct freeblock *p; /* a convenient synonym for 'addr' */
-
-/*
-Mark block allocated and combined by setting its 'size' positive:
-*/
- addr[size - 1] = addr[0] = size;
-/*
-Now tack the block on the end of the doubly-linked free list:
-*/
- p = (struct freeblock *) addr;
- p->fore = &lastfree;
- (p->back = lastfree.back)->fore = p;
- lastfree.back = p;
-/*
-If we have previously had no combined blocks, we must update
-'firstcombined' to point to this block:
-*/
- if (firstcombined->fore == NULL)
- firstcombined = p;
-}
-
-/*
-:h3.unhook() - Unhook a Block from the Doubly-linked List
-
-The only tricky thing here is to make sure that 'firstcombined' is
-updated if this block happened to be the old 'firstcombined'. (We
-would never be unhooking 'firstfree' or 'lastfree', so we do not
-have to worry about the end cases.)
-*/
-
-static void
-unhook(struct freeblock *p) /* block to unhook */
-{
- p->back->fore = p->fore;
- p->fore->back = p->back;
-
- if (firstcombined == p)
- firstcombined = p->fore;
-}
-/*
-:h2.xiMalloc() - Main User Entry Point for Getting Memory
-
-We have two slightly different versions of xiMalloc(). In the case
-where we have TYPE1IMAGER and a font cache, we are prepared, when nominally
-out of memory, to loop calling TYPE1IMAGER's GimeSpace() to release font
-cache.
-*/
-
-/* The following code put in by MDC on 11/10/90 */
-
-#ifdef TYPE1IMAGER
-
-static char *malloc_local(unsigned size);
-
-char *
-xiMalloc(unsigned size)
-{
- char *memaddr;
-
- while ( (memaddr = malloc_local(size)) == NULL ) {
- /* Ask TYPE1IMAGER to give us some of its cache back */
- if ( I_GimeSpace() == 0 ) break; /* We are really, really, out of memory */
- }
-
- return(memaddr);
-}
-#endif
-
-/*
-Now begins the real workhorse xiMalloc() (called 'malloc_local' if
-we are taking advantage of TYPE1IMAGER). Its argument is an unsigned;
-at least that lets users with 16-bit integers get a 64K chunk of
-memory, and it is also compatible with the definition of a "size_t"
-in most systems.
-*/
-#ifdef TYPE1IMAGER
-static char *
-malloc_local(unsigned Size) /* number of bytes the user requested */
-#else
-char *
-xiMalloc(unsigned Size)
-#endif
-{
- register long size = (long)Size; /* a working register for size */
- register struct freeblock *p; /* tentative block to be returned */
- register long excess; /* words in excess of user request */
- register long *area; /* a convenient synonym for 'p' */
-
-/*
-First, we increase 'size' to allow for the two size fields we will
-save with the block, plus any information for debug purposes.
-Then we ensure that the block will be large enough to hold our
-'freeblock' information. Finally we convert it to be in words
-(longs), not bytes, increased to span an integral number of double
-words, so that all memory blocks dispensed with be properly aligned.
-*/
- size += 2*sizeof(long) + DEBUGWORDS*sizeof(long);
- if (size < sizeof(struct freeblock) + sizeof(long))
- size = sizeof(struct freeblock) + sizeof(long);
- size = ((unsigned) (size + sizeof(double) - 1) / sizeof(double)) * (sizeof(double)/sizeof(long));
-
-/*
-For speed, we will try first to give the user back a very recently
-returned block--one that is on the front of the chain before
-'firstcombined'. These blocks still have negative sizes, and need
-only to be "unhook"ed:
-*/
- size = -size;
- for (p=firstfree.fore; p != firstcombined; p=p->fore) {
- if (p->size == size) {
- unhook(p);
- uncombined--;
- if (mallocdebug) {
- printf("fast xiMalloc(%ld) = %p, ", size,
- (void *)p);
- dumpchain();
- }
- AvailableWords += size; /* decreases AvailableWords */
- whocalledme(p, &Size);
- return((char *)&p->fore);
- }
- }
-/*
-Well, if we get here, there are no uncombined blocks matching the user's
-request. So, we search the rest of the chain for a block that is big
-enough. ('size' becomes positive again):
-*/
- size = -size;
- for (;; p = p->fore) {
-/*
-If we hit the end of the chain (p->size == 0), we are probably out of
-memory. However, we should first try to combine any memory that has
-not yet been combined before we give that pessimistic answer. If
-we succeed in combining, we can call ourselves recursively to try to
-allocate the requested amount:
-*/
- if (p->size == 0) {
- if (uncombined <= 0)
- return(NULL);
- while (firstfree.fore != firstcombined)
- combine();
- return(xiMalloc(sizeof(long) * (size - 2 - DEBUGWORDS)));
- }
-/*
-Otherwise, we keep searching until we find a big enough block:
-*/
- if (p->size >= size)
- break;
- }
-/*
-At this point, 'p' contains a block at least as big as what the user
-requested, so we take it off the free chain. If it is excessively big,
-we return the excess to the free chain:
-*/
- unhook(p);
- excess = p->size - size;
- area = (long *) p;
-
- if (excess > MINEXCESS)
- freeuncombinable(area + size, excess);
- else
- size = p->size;
-
- AvailableWords -= size;
-/*
-Mark first and last word of block with the negative of the size, to
-flag that this block is allocated:
-*/
- area[size - 1] = area[0] = - size;
-
- if (mallocdebug) {
- printf("slow xiMalloc(%ld) @ %p, ", size, (void *)area);
- dumpchain();
- }
- whocalledme(area, &Size);
-/*
-The address we return to the user is one 'long' BELOW the address of
-the block. This protects our 'size' field, so we can tell the size
-of the block when he returns it to us with xiFree(). Also, he better not
-touch the 'size' field at the end of the block either. (That would be
-nasty of him, as he would be touching memory outside of the bytes he
-requested).
-*/
- return((char *) (area + 1));
-}
-
-/*
-:h2 id=addmem.addmemory() - Initialize Free Memory
-
-This routine should be called at initialization to initialize the
-free chain. There is no standard way to do this in C.
-We want the memory dispensed by malloc to be aligned on a double word
-boundary (because some machines either require alignment, or are
-more efficient if accesses are aligned). Since the total size of
-any block created by malloc is an integral number of double words,
-all we have to do to ensure alignment is to adjust each large block
-added to the free chain to start on an odd long-word boundary.
-(Malloc's size field will occupy the odd long and the user's memory
-will then begin on an even boundary.) Since we fill in additional
-size fields at the beginning and end of each of the large freeblocks,
-we need only adjust the address passed to addmemory to a double word
-boundary.
-*/
-
-#define MAXAREAS 10 /* there can be this many calls to addmemory() */
-
-static long *freearea[MAXAREAS] = { NULL }; /* so we can report later */
-
-void
-addmemory(long *addr, /* beginning of free area */
- long size) /* number of bytes of free area */
-{
- register int i; /* loop index variable */
- register long *aaddr; /* aligned beginning of free area */
-
-#if DEBUGWORDS
- printf("malloc has DEBUGWORDS=%d\n", DEBUGWORDS);
-#endif
-/*
-First link together firstfree and lastfree if necessary:
-*/
- if (firstfree.fore == NULL) {
- firstfree.fore = &lastfree;
- lastfree.back = &firstfree;
- }
-/*
-We'll record where the area was that was given to us for later reports:
-*/
- for (i=0; i < MAXAREAS; i++)
- if (freearea[i] == NULL) break;
- if (i >= MAXAREAS)
- Abort("too many addmemory()s");
- aaddr = (long *) ( ((long) addr + sizeof(double) - 1) & - (long)sizeof(double) );
- size -= (char *) aaddr - (char *) addr;
- freearea[i] = aaddr;
-/*
-Convert 'size' to number of longs, and store '-size' guards at the
-beginning and end of this area so we will not accidentally recombine the
-first or last block:
-*/
- size /= sizeof(long);
-
- AvailableWords += size - 2;
-
- aaddr[size - 1] = aaddr[0] = -size;
-/*
-Finally, call 'freeuncombinable' to put the remaining memory on the
-free list:
-*/
- freeuncombinable(aaddr + 1, size - 2);
-}
-
-/*
-:h3.delmemory() - Delete Memory Pool
-*/
-void
-delmemory(void)
-{
- register int i;
-
- AvailableWords = 0;
- firstfree.fore = &lastfree;
- lastfree.back = &firstfree;
- firstcombined = &lastfree;
- uncombined = 0;
- for (i=0; i<MAXAREAS; i++)
- freearea[i] = NULL;
-}
-
-/*
-:h2.Debug Routines
-
-:h3.dumpchain() - Print the Chain of Free Blocks
-*/
-
-static void
-dumpchain(void)
-{
- register struct freeblock *p; /* current free block */
- register long size; /* size of block */
- register struct freeblock *back; /* block before 'p' */
- register int i; /* temp variable for counting */
-
- printf("DUMPING FAST FREE LIST:\n");
- back = &firstfree;
- for (p = firstfree.fore, i=uncombined; p != firstcombined;
- p = p->fore) {
- if (--i < 0)
- Abort("too many uncombined areas");
- size = p->size;
- printf(". . . area @ %p, size = %ld\n", (void *)p, -size);
- if (size >= 0 || size != ((int *) p)[-1 - size])
- Abort("dumpchain: bad size");
- if (p->back != back)
- Abort("dumpchain: bad back");
- back = p;
- }
- printf("DUMPING COMBINED FREE LIST:\n");
- for (; p != &lastfree; p = p->fore) {
- size = p->size;
- printf(". . . area @ %p, size = %ld\n", (void *)p, size);
- if (size <= 0 || size != ((int *) p)[size - 1])
- Abort("dumpchain: bad size");
- if (p->back != back)
- Abort("dumpchain: bad back");
- back = p;
- }
- if (back != lastfree.back)
- Abort("dumpchain: bad lastfree");
-}
-
-#ifdef notused
-/*
-:h3.reportarea() - Display a Contiguous Set of Memory Blocks
-*/
-
-static void
-reportarea(long *area) /* start of blocks (from addmemory) */
-{
- register long size; /* size of current block */
- register long wholesize; /* size of original area */
- register struct freeblock *p; /* pointer to block */
-
- if (area == NULL)
- return;
- wholesize = - *area++;
- wholesize -= 2;
-
- while (wholesize > 0) {
- size = *area;
- if (size < 0) {
- register int i,j;
-
- size = -size;
- printf("Allocated %5ld bytes at %p, first words=%08lx %08lx\n",
- size * sizeof(long), area + 1, area[1], area[2]);
-#if DEBUGWORDS
- printf(" ...Last operator: %s\n",
- (char *)area[size-DEBUGWORDS-1]);
-#endif
- for (i = size - DEBUGWORDS; i < size - 2; i += 8) {
- printf(" ...");
- for (j=0; j<8; j++)
- printf(" %08lx", area[i+j]);
- printf("\n");
- }
-
- }
- else {
- printf("Free %ld bytes at %p\n", size * sizeof(long),
- area);
- if (size == 0)
- Abort("zero sized memory block");
-
- for (p = firstfree.fore; p != NULL; p = p->fore)
- if ((long *) p == area) break;
- if ((long *) p != area)
- Abort("not found on forward chain");
-
- for (p = lastfree.back; p != NULL; p = p->back)
- if ((long *) p == area) break;
- if ((long *) p != area)
- Abort("not found on backward chain");
- }
- if (area[0] != area[size - 1])
- Abort("unmatched check sizes");
- area += size;
- wholesize -= size;
- }
-}
-
-/*
-:h3.MemReport() - Display All of Memory
-*/
-
-void
-MemReport(void)
-{
- register int i;
-
- dumpchain();
-
- for (i=0; i<MAXAREAS; i++)
- reportarea(freearea[i]);
-}
-
-/*
-:h3.MemBytesAvail - Display Number of Bytes Now Available
-*/
-
-void
-MemBytesAvail(void)
-{
- printf("There are now %ld bytes available\n", AvailableWords *
- sizeof(long) );
-}
-#endif
diff --git a/libXfont/src/Type1/t1snap.c b/libXfont/src/Type1/t1snap.c
deleted file mode 100644
index 5618b581b..000000000
--- a/libXfont/src/Type1/t1snap.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* $Xorg: t1snap.c,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/t1snap.c,v 1.3 1999/08/22 08:58:54 dawes Exp $ */
-
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "pictures.h"
-
-/*
-:h2.Handle Functions
-
-:h3.Phantom() - Returns a Move Segment Equivalent to Handles
-
-This is a user operator. Its new name is QueryHandle.
-*/
-
-struct segment *
-t1_Phantom(struct segment *p) /* object to take the Phantom of */
-{
- struct fractpoint pt; /* handle size will built here */
-
- if (p == NULL)
- pt.x = pt.y = 0;
- else
- PathDelta(p, &pt);
-
- return(PathSegment(MOVETYPE, pt.x, pt.y));
-}
-
-/*
-:h3.Snap() - Force Ending Handle of Object to Origin
-
-This is a user operator.
-*/
-
-struct segment *
-t1_Snap(struct segment *p) /* path to snap */
-{
- struct fractpoint pt; /* for finding length of path */
-
- if (p == NULL)
- return(NULL);
- p = UniquePath(p);
-
- PathDelta(p, &pt);
- if (p->last->type == MOVETYPE) {
- p->last->dest.x -= pt.x;
- p->last->dest.y -= pt.y;
- }
- else
- p = JoinSegment(p, MOVETYPE, -pt.x, -pt.y, NULL);
- return(p);
-}
diff --git a/libXfont/src/Type1/t1stdio.h b/libXfont/src/Type1/t1stdio.h
deleted file mode 100644
index aa281c019..000000000
--- a/libXfont/src/Type1/t1stdio.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/* $Xorg: t1stdio.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/t1stdio.h,v 1.9 2001/01/17 19:43:24 dawes Exp $ */
-/* T1IO FILE structure and related stuff */
-
-#ifdef XFree86LOADER
-#undef FILE
-#endif
-#define FILE F_FILE
-typedef unsigned char F_char;
-
-typedef struct F_FILE {
- F_char *b_base; /* Pointer to beginning of buffer */
- long b_size; /* Size of the buffer */
- F_char *b_ptr; /* Pointer to next char in buffer */
- long b_cnt; /* Number of chars remaining in buffer */
- F_char flags; /* other flags; != 0 means getc must call fgetc */
- F_char ungotc; /* Place for ungotten char; flag set if present */
- short error; /* error status */
- int fd; /* underlying file descriptor */
-} F_FILE;
-
-
-/* defines for flags */
-#define UNGOTTENC (0x01)
-#define FIOEOF (0x80)
-#define FIOERROR (0x40)
-
-#ifndef NULL
-#include <stddef.h>
-#endif
-
-#define EOF (-1) /* end of file */
-#define F_BUFSIZ (512)
-
-#define _XT1getc(f) \
- ( \
- ( ((f)->b_cnt > 0) && ((f)->flags == 0) ) ? \
- ( (f)->b_cnt--, (unsigned int)*( (f)->b_ptr++ ) ) : \
- T1Getc(f) \
- )
-
-#define T1Feof(f) (((f)->flags & FIOEOF) && ((f)->b_cnt==0))
-
-extern FILE *T1Open ( char *fn, char *mode );
-extern int T1Getc ( FILE *f );
-extern int T1Ungetc ( int c, FILE *f );
-extern int T1Read ( char *buffP, int size, int n, FILE *f );
-extern int T1Close ( FILE *f );
-extern FILE *T1eexec ( FILE *f );
-extern void resetDecrypt ( void );
-
-#undef fclose
-#undef fopen
-#undef ungetc
-#undef fgetc
-#undef fread
-#undef feof
-#undef ferror
-#define fclose(f) T1Close(f)
-#define fopen(name,mode) T1Open(name,mode)
-#define ungetc(c,f) T1Ungetc(c,f)
-#define fgetc(f) T1Getc(f)
-
-#define fread(bufP,size,n,f) T1Read(bufP,size,n,f)
-#define feof(f) (((f)->flags & FIOEOF) && ((f)->b_cnt==0))
-#define ferror(f) (((f)->flags & FIOERROR)?(f)->error:0)
diff --git a/libXfont/src/Type1/t1unicode.c b/libXfont/src/Type1/t1unicode.c
deleted file mode 100644
index 136cc4441..000000000
--- a/libXfont/src/Type1/t1unicode.c
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-Copyright (c) 1998 by Juliusz Chroboczek
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/* $XFree86$ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "t1unicode.h"
-
-static char* table_32[] =
-{ "space", "exclam", "quotedbl", "numbersign", "dollar", "percent",
- "ampersand", "quotesingle", "parenleft", "parenright", "asterisk",
- "plus", "comma", "hyphen", "period", "slash", "zero", "one", "two",
- "three", "four", "five", "six", "seven", "eight", "nine", "colon",
- "semicolon", "less", "equal", "greater", "question", "at", "A", "B",
- "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
- "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "bracketleft",
- "backslash", "bracketright", "asciicircum", "underscore", "grave",
- "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n",
- "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
- "braceleft", "bar", "braceright", "asciitilde", 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, "space", "exclamdown", "cent", "sterling", "currency", "yen",
- "brokenbar", "section", "dieresis", "copyright", "ordfeminine",
- "guillemotleft", "logicalnot", "hyphen", "registered", "macron",
- "degree", "plusminus", "twosuperior", "threesuperior", "acute", "mu",
- "paragraph", "periodcentered", "cedilla", "onesuperior",
- "ordmasculine", "guillemotright", "onequarter", "onehalf",
- "threequarters", "questiondown", "Agrave", "Aacute", "Acircumflex",
- "Atilde", "Adieresis", "Aring", "AE", "Ccedilla", "Egrave", "Eacute",
- "Ecircumflex", "Edieresis", "Igrave", "Iacute", "Icircumflex",
- "Idieresis", "Eth", "Ntilde", "Ograve", "Oacute", "Ocircumflex",
- "Otilde", "Odieresis", "multiply", "Oslash", "Ugrave", "Uacute",
- "Ucircumflex", "Udieresis", "Yacute", "Thorn", "germandbls", "agrave",
- "aacute", "acircumflex", "atilde", "adieresis", "aring", "ae",
- "ccedilla", "egrave", "eacute", "ecircumflex", "edieresis", "igrave",
- "iacute", "icircumflex", "idieresis", "eth", "ntilde", "ograve",
- "oacute", "ocircumflex", "otilde", "odieresis", "divide", "oslash",
- "ugrave", "uacute", "ucircumflex", "udieresis", "yacute", "thorn",
- "ydieresis", "Amacron", "amacron", "Abreve", "abreve", "Aogonek",
- "aogonek", "Cacute", "cacute", "Ccircumflex", "ccircumflex",
- "Cdotaccent", "cdotaccent", "Ccaron", "ccaron", "Dcaron", "dcaron",
- "Dcroat", "dcroat", "Emacron", "emacron", "Ebreve", "ebreve",
- "Edotaccent", "edotaccent", "Eogonek", "eogonek", "Ecaron", "ecaron",
- "Gcircumflex", "gcircumflex", "Gbreve", "gbreve", "Gdotaccent",
- "gdotaccent", "Gcommaaccent", "gcommaaccent", "Hcircumflex",
- "hcircumflex", "Hbar", "hbar", "Itilde", "itilde", "Imacron",
- "imacron", "Ibreve", "ibreve", "Iogonek", "iogonek", "Idotaccent",
- "dotlessi", "IJ", "ij", "Jcircumflex", "jcircumflex", "Kcommaaccent",
- "kcommaaccent", "kgreenlandic", "Lacute", "lacute", "Lcommaaccent",
- "lcommaaccent", "Lcaron", "lcaron", "Ldot", "ldot", "Lslash",
- "lslash", "Nacute", "nacute", "Ncommaaccent", "ncommaaccent",
- "Ncaron", "ncaron", "napostrophe", "Eng", "eng", "Omacron", "omacron",
- "Obreve", "obreve", "Ohungarumlaut", "ohungarumlaut", "OE", "oe",
- "Racute", "racute", "Rcommaaccent", "rcommaaccent", "Rcaron",
- "rcaron", "Sacute", "sacute", "Scircumflex", "scircumflex",
- "Scommaaccent", "scommaaccent", "Scaron", "scaron", "Tcommaaccent",
- "tcommaaccent", "Tcaron", "tcaron", "Tbar", "tbar", "Utilde",
- "utilde", "Umacron", "umacron", "Ubreve", "ubreve", "Uring", "uring",
- "Uhungarumlaut", "uhungarumlaut", "Uogonek", "uogonek", "Wcircumflex",
- "wcircumflex", "Ycircumflex", "ycircumflex", "Ydieresis", "Zacute",
- "zacute", "Zdotaccent", "zdotaccent", "Zcaron", "zcaron", "longs", 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "florin", 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Ohorn", "ohorn", 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, "Uhorn", "uhorn", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "Gcaron",
- "gcaron", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- "Aringacute", "aringacute", "AEacute", "aeacute", "Oslashacute",
- "oslashacute", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57929", "afii64937", 0, 0, 0, 0, 0, 0,
- 0, 0, "circumflex", "caron", 0, "macron", 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, "breve", "dotaccent", "ring", "ogonek", "tilde",
- "hungarumlaut", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "gravecomb",
- "acutecomb", 0, "tildecomb", 0, 0, 0, 0, 0, "hookabovecomb", 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- "dotbelowcomb", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, "tonos", "dieresistonos", "Alphatonos",
- "anoteleia", "Epsilontonos", "Etatonos", "Iotatonos", 0,
- "Omicrontonos", 0, "Upsilontonos", "Omegatonos", "iotadieresistonos",
- "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta", "Theta",
- "Iota", "Kappa", "Lambda", "Mu", "Nu", "Xi", "Omicron", "Pi", "Rho",
- 0, "Sigma", "Tau", "Upsilon", "Phi", "Chi", "Psi", "Omega",
- "Iotadieresis", "Upsilondieresis", "alphatonos", "epsilontonos",
- "etatonos", "iotatonos", "upsilondieresistonos", "alpha", "beta",
- "gamma", "delta", "epsilon", "zeta", "eta", "theta", "iota", "kappa",
- "lambda", "mu", "nu", "xi", "omicron", "pi", "rho", "sigma1", "sigma",
- "tau", "upsilon", "phi", "chi", "psi", "omega", "iotadieresis",
- "upsilondieresis", "omicrontonos", "upsilontonos", "omegatonos", 0, 0,
- "theta1", "Upsilon1", 0, 0, "phi1", "omega1", 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii10023", "afii10051",
- "afii10052", "afii10053", "afii10054", "afii10055", "afii10056",
- "afii10057", "afii10058", "afii10059", "afii10060", "afii10061", 0,
- "afii10062", "afii10145", "afii10017", "afii10018", "afii10019",
- "afii10020", "afii10021", "afii10022", "afii10024", "afii10025",
- "afii10026", "afii10027", "afii10028", "afii10029", "afii10030",
- "afii10031", "afii10032", "afii10033", "afii10034", "afii10035",
- "afii10036", "afii10037", "afii10038", "afii10039", "afii10040",
- "afii10041", "afii10042", "afii10043", "afii10044", "afii10045",
- "afii10046", "afii10047", "afii10048", "afii10049", "afii10065",
- "afii10066", "afii10067", "afii10068", "afii10069", "afii10070",
- "afii10072", "afii10073", "afii10074", "afii10075", "afii10076",
- "afii10077", "afii10078", "afii10079", "afii10080", "afii10081",
- "afii10082", "afii10083", "afii10084", "afii10085", "afii10086",
- "afii10087", "afii10088", "afii10089", "afii10090", "afii10091",
- "afii10092", "afii10093", "afii10094", "afii10095", "afii10096",
- "afii10097", 0, "afii10071", "afii10099", "afii10100", "afii10101",
- "afii10102", "afii10103", "afii10104", "afii10105", "afii10106",
- "afii10107", "afii10108", "afii10109", 0, "afii10110", "afii10193", 0,
- 0, "afii10146", "afii10194", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- "afii10147", "afii10195", "afii10148", "afii10196", 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- "afii10050", "afii10098", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii10846", 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- "afii57799", "afii57801", "afii57800", "afii57802", "afii57793",
- "afii57794", "afii57795", "afii57798", "afii57797", "afii57806", 0,
- "afii57796", "afii57807", "afii57839", "afii57645", "afii57841",
- "afii57842", "afii57804", "afii57803", "afii57658", 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, "afii57664", "afii57665", "afii57666", "afii57667",
- "afii57668", "afii57669", "afii57670", "afii57671", "afii57672",
- "afii57673", "afii57674", "afii57675", "afii57676", "afii57677",
- "afii57678", "afii57679", "afii57680", "afii57681", "afii57682",
- "afii57683", "afii57684", "afii57685", "afii57686", "afii57687",
- "afii57688", "afii57689", "afii57690", 0, 0, 0, 0, 0, "afii57716",
- "afii57717", "afii57718", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57388", 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, "afii57403", 0, 0, 0, "afii57407", 0, "afii57409",
- "afii57410", "afii57411", "afii57412", "afii57413", "afii57414",
- "afii57415", "afii57416", "afii57417", "afii57418", "afii57419",
- "afii57420", "afii57421", "afii57422", "afii57423", "afii57424",
- "afii57425", "afii57426", "afii57427", "afii57428", "afii57429",
- "afii57430", "afii57431", "afii57432", "afii57433", "afii57434", 0, 0,
- 0, 0, 0, "afii57440", "afii57441", "afii57442", "afii57443",
- "afii57444", "afii57445", "afii57446", "afii57470", "afii57448",
- "afii57449", "afii57450", "afii57451", "afii57452", "afii57453",
- "afii57454", "afii57455", "afii57456", "afii57457", "afii57458", 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57392", "afii57393",
- "afii57394", "afii57395", "afii57396", "afii57397", "afii57398",
- "afii57399", "afii57400", "afii57401", "afii57381", 0, 0, "afii63167",
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57511", 0, 0, 0, 0, "afii57506",
- 0, 0, 0, 0, 0, 0, 0, "afii57507", 0, "afii57512", 0, 0, 0, 0, 0, 0, 0,
- 0, "afii57513", 0, 0, 0, 0, 0, 0, "afii57508", 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, "afii57505", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57509", 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, "afii57514", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57519", 0, 0, "afii57534", 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-
-static char* table_2000[] = /* general punctuation, s*scripts, currency */
-{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii61664", "afii301", "afii299",
- "afii300", 0, 0, "figuredash", "endash", "emdash", "afii00208", 0,
- "underscoredbl", "quoteleft", "quoteright", "quotesinglbase",
- "quotereversed", "quotedblleft", "quotedblright", "quotedblbase", 0,
- "dagger", "daggerdbl", "bullet", 0, "onedotenleader",
- "twodotenleader", "ellipsis", 0, 0, 0, 0, 0, "afii61573", "afii61574",
- "afii61575", 0, "perthousand", 0, "minute", "second", 0, 0, 0, 0, 0,
- "guilsinglleft", "guilsinglright", 0, "exclamdbl", 0, 0, 0, 0, 0, 0,
- 0, "fraction", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, "zerosuperior", 0, 0, 0, "foursuperior", "fivesuperior",
- "sixsuperior", "sevensuperior", "eightsuperior", "ninesuperior", 0, 0,
- 0, "parenleftsuperior", "parenrightsuperior", "nsuperior",
- "zeroinferior", "oneinferior", "twoinferior", "threeinferior",
- "fourinferior", "fiveinferior", "sixinferior", "seveninferior",
- "eightinferior", "nineinferior", 0, 0, 0, "parenleftinferior",
- "parenrightinferior", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, "colonmonetary", 0, "franc", "lira", 0, 0, "peseta", 0, 0,
- "afii57636", "dong", "Euro", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-
-static char* table_2500[]= /* line and box drawing */
-{ "SF100000", 0, "SF110000", 0, 0, 0, 0, 0, 0, 0, 0, 0, "SF010000", 0,
- 0, 0, "SF030000", 0, 0, 0, "SF020000", 0, 0, 0, "SF040000", 0, 0, 0,
- "SF080000", 0, 0, 0, 0, 0, 0, 0, "SF090000", 0, 0, 0, 0, 0, 0, 0,
- "SF060000", 0, 0, 0, 0, 0, 0, 0, "SF070000", 0, 0, 0, 0, 0, 0, 0,
- "SF050000", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- "SF430000", "SF240000", "SF510000", "SF520000", "SF390000",
- "SF220000", "SF210000", "SF250000", "SF500000", "SF490000",
- "SF380000", "SF280000", "SF270000", "SF260000", "SF360000",
- "SF370000", "SF420000", "SF190000", "SF200000", "SF230000",
- "SF470000", "SF480000", "SF410000", "SF450000", "SF460000",
- "SF400000", "SF540000", "SF530000", "SF440000", 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "upblock", 0, 0, 0, "dnblock", 0,
- 0, 0, "block", 0, 0, 0, "lfblock", 0, 0, 0, "rtblock", "ltshade",
- "shade", "dkshade", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
-
-static char* table_FB00[] = /* alphabetic presentation forms */
-{ "ff", "fi", "fl", "ffi", "ffl", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "afii57705", 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, "afii57694", "afii57695", 0, 0, 0, 0, 0, 0, 0, 0, 0,
- "afii57723", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, "afii57700", 0, 0, 0, 0 };
-
-char*
-unicodetoPSname(unsigned short code)
-{
- if(code<32) return 0;
- else if(code<0x6FF) return table_32[code-32];
- else if(code<0x2000) return 0;
- else if(code<0x20D0) return table_2000[code-0x2000];
- else if(code==0x2116) return "afii61352"; /* numero sign, for Koi */
- else if(code==0x2122) return "trademark";
- else if(code<0x2500) return 0;
- else if(code<0x25A0) return table_2500[code-0x2500];
- else if(code<0xFB00) return 0;
- else if(code<0xFB50) return table_FB00[code-0xFB00];
- else return 0;
-}
diff --git a/libXfont/src/Type1/t1unicode.h b/libXfont/src/Type1/t1unicode.h
deleted file mode 100644
index bad0274a0..000000000
--- a/libXfont/src/Type1/t1unicode.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-Copyright (c) 1998 by Juliusz Chroboczek
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-*/
-
-/* $XFree86$ */
-
-char *unicodetoPSname(unsigned short code);
diff --git a/libXfont/src/Type1/token.c b/libXfont/src/Type1/token.c
deleted file mode 100644
index 71a968b30..000000000
--- a/libXfont/src/Type1/token.c
+++ /dev/null
@@ -1,1208 +0,0 @@
-/* $Xorg: token.c,v 1.4 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/token.c,v 1.5tsi Exp $ */
-/* Authors: Sig Nin & Carol Thompson IBM Almaden Research Laboratory */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "t1stdio.h"
-#include "util.h"
-#include "digit.h"
-#include "token.h"
-#include "tokst.h"
-#include "hdigit.h"
-
-/*
- * -------------------------------------------------------------------
- * Globals
- * -------------------------------------------------------------------
- */
-
-/* These variables are set by the caller */
-char *tokenStartP; /* Pointer to token buffer in VM */
-char *tokenMaxP; /* Pointer to last byte in buffer + 1 */
-
-/* These variables are set by TOKEN */
-int tokenLength; /* Characters in token */
-boolean tokenTooLong; /* Token too long for buffer */
-int tokenType; /* Type of token identified */
-psvalue tokenValue; /* Token value */
-
-/*
- * -------------------------------------------------------------------
- * Private variables
- * -------------------------------------------------------------------
- */
-
-static FILE *inputFileP; /* Current input file */
-
-
-/* Token */
-static char *tokenCharP; /* Pointer to next character in token */
-
-/*
- * -------------------------------------------------------------------
- * Private routines for manipulating numbers
- * -------------------------------------------------------------------
- */
-
-#define Exp10(e) \
-((e) == 0\
- ? (double)(1.0)\
- : (-64 <= (e) && (e) <= 63\
- ? Exp10T[(e)+64]\
- : P10(e)\
- )\
-)
-
-static double Exp10T[128] = {
- 1e-64, 1e-63, 1e-62, 1e-61, 1e-60, 1e-59, 1e-58, 1e-57,
- 1e-56, 1e-55, 1e-54, 1e-53, 1e-52, 1e-51, 1e-50, 1e-49,
- 1e-48, 1e-47, 1e-46, 1e-45, 1e-44, 1e-43, 1e-42, 1e-41,
- 1e-40, 1e-39, 1e-38, 1e-37, 1e-36, 1e-35, 1e-34, 1e-33,
- 1e-32, 1e-31, 1e-30, 1e-29, 1e-28, 1e-27, 1e-26, 1e-25,
- 1e-24, 1e-23, 1e-22, 1e-21, 1e-20, 1e-19, 1e-18, 1e-17,
- 1e-16, 1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9,
- 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1,
- 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7,
- 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15,
- 1e16, 1e17, 1e18, 1e19, 1e20, 1e21, 1e22, 1e23,
- 1e24, 1e25, 1e26, 1e27, 1e28, 1e29, 1e30, 1e31,
- 1e32, 1e33, 1e34, 1e35, 1e36, 1e37, 1e38, 1e39,
- 1e40, 1e41, 1e42, 1e43, 1e44, 1e45, 1e46, 1e47,
- 1e48, 1e49, 1e50, 1e51, 1e52, 1e53, 1e54, 1e55,
- 1e56, 1e57, 1e58, 1e59, 1e60, 1e61, 1e62, 1e63
-};
-
-static double
-P10(long exponent)
-{
- double value, power;
-
- if (exponent < 0) {
- power = 0.1;
- value = (exponent & 1 ? power : 1.0);
- exponent++;
- exponent = -(exponent >> 1); /* portable C for -(exponent/2) */
- }
- else {
- power = 10.0;
- value = (exponent & 1 ? power : 1.0);
- exponent = exponent >> 1;
- }
-
- while(exponent > 0) {
- power *= power;
- if (exponent & 1)
- value *= power;
- exponent >>= 1;
- }
-
- return(value);
-}
-
-/*
- * -------------------------------------------------------------------
- * Private routines and macros for manipulating the input
- * -------------------------------------------------------------------
- */
-
-/* Get next character from the input --
- *
- */
-#define next_ch() (_XT1getc(inputFileP))
-
-/* Push a character back into the input --
- *
- * Ungetc of EOF will fail, but that's ok: the next getc will
- * return EOF.
- *
- * NOTE: These macros are presently written to return the character
- * pushed, or EOF if none was pushed. However, they are not
- * required to return anything in particular, and callers should
- * not rely on the returned value.
- */
-#define back_ch(ch) (T1Ungetc(ch, inputFileP))
-
-/* Push a character back into the input if it was not white space.
- * If it is a carriage return (\r) then check next char for
- * linefeed and consume them both, otherwise put next char back.
- *
- */
-#define back_ch_not_white(ch) \
-(\
-isWHITE_SPACE(ch)\
- ? ((ch == '\r')\
- ? (((ch = next_ch()) == '\n')\
- ? EOF\
- : back_ch(ch)\
- )\
- : EOF\
- )\
- : back_ch(ch)\
-)
-
-/*
- * -------------------------------------------------------------------
- * Private routines and macros for manipulating the token buffer
- * -------------------------------------------------------------------
- */
-
-/* Add a character to the token
- * ---- use ONLY when you KNOW that this character will
- * be stored within the token buffer.
- */
-#define save_unsafe_ch(ch) (*tokenCharP++ = ch)
-
-/* Add a character to the token, if not too long to fit */
-#define save_ch(ch) \
-((tokenCharP < tokenMaxP)\
- ? save_unsafe_ch(ch)\
- : (tokenTooLong = TRUE)\
-)
-
-#define save_ch_no_inc(ch) \
-if (tokenCharP < tokenMaxP) *tokenCharP = ch
-
-/*
- * -------------------------------------------------------------------
- * Action Routines
- *
- * These routines all
- * -- take int ch as a parameter
- * -- return int ch if no token was recognized, DONE otherwise
- * -- leave the next character in the input, if returning DONE
- * -------------------------------------------------------------------
- */
-
-#define DONE (256)
-
-/* Get the next input character */
-static int
-next_char(int ch)
-{
- return(next_ch());
-}
-
-/* Add character to token */
-static int
-add_char(int ch)
-{
- save_ch(ch);
- return(next_ch());
-}
-
-
-/* -------------------------------------------------------------------
- * Skip white space and comments
- */
-
-/* Skip white space */
-static int
-skip_space(int ch)
-{
- do {
- ch = next_ch();
- } while(isWHITE_SPACE(ch));
- return(ch);
-}
-
-/* Skip comments */
-static int
-skip_comment(int ch)
-{
- do {
- ch = next_ch();
- } while(isCOMMENT(ch));
- return(ch);
-}
-
-/* -------------------------------------------------------------------
- * Collect value elements for a number
- */
-
-/* decimal integer or real number mantissa */
-static int m_sign;
-static long m_value;
-static long m_scale;
-
-/* real number exponent */
-static int e_sign;
-static long e_value;
-
-/* radix number */
-static long r_base;
-static long r_value;
-static long r_scale;
-
-static int
-add_sign(int ch)
-{
- m_sign = ch;
- save_unsafe_ch(ch);
- return(next_ch());
-}
-
-static int
-add_1st_digits(int ch)
-{
- m_sign = '+';
- return(add_digits(ch));
-}
-
-static int
-add_digits(int ch)
-{
- long value, p_value, scale;
- int digit;
-
- /* On entry, expect m_sign to be set to '+' or '-';
- * ch is a decimal digit.
- * Expect at most one character saved at this point,
- * a sign. This routine will save up to 10 more
- * characters without checking the buffer boundary.
- */
-
- value = ch - '0';
- save_unsafe_ch(ch);
- ch = next_ch();
-
- while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) {
- value = (value << 3) + (value << 1) + (ch - '0');
- save_unsafe_ch(ch);
- ch = next_ch();
- }
-
- /* Quick exit for small integers --
- * |x| <= 10*((MAX_INTEGER/10)-1)+9
- * |x| <= 2,147,483,639 for 32 bit integers
- */
- if (isNUMBER_ENDER(ch)) {
- back_ch_not_white(ch);
- tokenValue.integer = (m_sign == '-' ? -value : value);
- tokenType = TOKEN_INTEGER;
- return(DONE);
- }
-
- /* Handle additional digits. Beyond the boundary case,
- * 10*(MAX_INTEGER/10) <= |number| <= MAX_INTEGER
- * just count the digits: the number is too large to
- * represent as an integer and will be returned as a real.
- * The mantissa of a real holds fewer bits than an integer.
- */
- p_value = value;
- value = (m_sign == '-' ? -value : value);
- scale = 0;
-
- if (isDECIMAL_DIGIT(ch)) {
-
- /* Handle the boundary case */
- if (p_value == (MAX_INTEGER/10)) {
- digit = ch - '0';
-
- /* Must handle positive and negative values separately */
- /* for 2's complement arithmetic */
- if (value > 0) {
- if (digit <= MAX_INTEGER%10)
- value = (value << 3) + (value << 1) + digit;
- else
- ++scale; /* Too big, just count it */
- }
- else {
- /* Use positive % operands for portability */
- if (digit <= -(MIN_INTEGER+10)%10)
- value = (value << 3) + (value << 1) - digit;
- else
- ++scale; /* Too big, just count it */
- }
- }
- else
- ++scale; /* Not boundary case, just count digit */
-
- save_unsafe_ch(ch);
- ch = next_ch();
-
- /* Continue scanning digits, but can't store them */
- while(isDECIMAL_DIGIT(ch)) {
- ++scale;
- save_ch(ch);
- ch = next_ch();
- }
- }
-
- /* Continue from here scanning radix integer or real */
- m_value = value;
- m_scale = scale;
-
- /* Initialize for possible real */
- e_sign = '+';
- e_value = 0;
-
- return(ch);
-}
-
-static int
-add_1st_decpt(int ch)
-{
- m_sign = '+';
- return(add_decpt(ch));
-}
-
-static int
-add_decpt(int ch)
-{
- /* On entry, expect m_sign to be set to '+' or '-' */
- m_value = 0;
- m_scale = 0;
- save_unsafe_ch(ch);
- return(next_ch());
-}
-
-static int
-add_fraction(int ch)
-{
- long value, scale;
- int digit;
-
- /* On entry, expect m_value and m_scale to be initialized,
- * and m_sign to be set to '+' or '-'. Expect m_value and m_sign
- * to be consistent (this is not checked).
- */
- value = m_value;
- scale = m_scale;
-
- /* Scan leading zeroes */
- if (value == 0) {
- while(ch == '0') {
- --scale;
- save_ch(ch);
- ch = next_ch();
- }
-
- /* Scan first significant digit */
- if (isDECIMAL_DIGIT(ch)) {
- --scale;
- value = ch - '0';
- value = (m_sign == '-' ? -value : value);
- save_ch(ch);
- ch = next_ch();
- }
- else
- /* no significant digits -- number is zero */
- scale = 0;
- }
- /* value != 0 || value == 0 && !isDECIMAL_DIGIT(ch) */
-
- /* Scan additional significant digits */
- if (isDECIMAL_DIGIT(ch)) {
- if (value > 0) {
- while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) {
- --scale;
- value = (value << 3) + (value << 1) + (ch - '0');
- save_ch(ch);
- ch = next_ch();
- }
- /* Check boundary case */
- if (isDECIMAL_DIGIT(ch) && value == (MAX_INTEGER/10)) {
- digit = ch - '0';
- if (digit <= MAX_INTEGER%10) {
- --scale;
- value = (value << 3) + (value << 1) + digit;
- save_ch(ch);
- ch = next_ch();
- }
- }
- }
- else {
- /* value < 0 */
- while(isDECIMAL_DIGIT(ch) && value > -(-(MIN_INTEGER+10)/10+1)) {
- /* Use positive / operands for portability */
- --scale;
- value = (value << 3) + (value << 1) - (ch - '0');
- save_ch(ch);
- ch = next_ch();
- }
- /* Check boundary case */
- if (isDECIMAL_DIGIT(ch)
- && value == -(-(MIN_INTEGER+10)/10+1)) {
- digit = ch - '0';
- if (digit <= -(MIN_INTEGER+10)%10) {
- /* Use positive % operands for portability */
- --scale;
- value = (value << 3) + (value << 1) - digit;
- save_ch(ch);
- ch = next_ch();
- }
- }
- }
-
- /* Additional digits can be discarded */
- while(isDECIMAL_DIGIT(ch)) {
- save_ch(ch);
- ch = next_ch();
- }
- }
-
- /* Store results */
- m_value = value;
- m_scale = scale;
-
- /* Initialize for possible real */
- e_sign = '+';
- e_value = 0;
-
- return(ch);
-}
-
-static int
-add_e_sign(int ch)
-{
- e_sign = ch;
- save_ch(ch);
- return(next_ch());
-}
-
-static int
-add_exponent(int ch)
-{
- long value, p_value;
- long scale = 0;
- int digit;
-
- /* On entry, expect e_sign to be set to '+' or '-' */
-
- value = ch - '0';
- save_ch(ch);
- ch = next_ch();
-
- while(isDECIMAL_DIGIT(ch) && value < (MAX_INTEGER/10)) {
- value = (value << 3) + (value << 1) + (ch - '0');
- save_ch(ch);
- ch = next_ch();
- }
-
- p_value = value;
- value = (e_sign == '-' ? -value : value);
-
- /* Handle additional digits. Beyond the boundary case,
- * 10*(MAX_INTEGER/10) <= |number| <= MAX_INTEGER
- * just count the digits: the number is too large to
- * represent as an integer.
- */
- if (isDECIMAL_DIGIT(ch)) {
-
- /* Examine boundary case */
- if (p_value == (MAX_INTEGER/10)) {
- digit = ch - '0';
-
- /* Must handle positive and negative values separately */
- /* for 2's complement arithmetic */
- if (value > 0) {
- if (digit <= MAX_INTEGER%10)
- value = (value << 3) + (value << 1) + digit;
- else
- ++scale; /* Too big, just count it */
- }
- else {
- /* Use positive % operands for portability */
- if (digit <= -(MIN_INTEGER+10)%10)
- value = (value << 3) + (value << 1) - digit;
- else
- ++scale; /* Too big, just count it */
- }
- }
- else
- ++scale; /* Not boundary case, just count digit */
-
- save_ch(ch);
- ch = next_ch();
-
- /* Continue scanning digits, but can't store any more */
- while(isDECIMAL_DIGIT(ch)) {
- ++scale;
- save_ch(ch);
- ch = next_ch();
- }
- }
-
- /* Store results */
- e_value = value;
-
- return(ch);
-}
-
-static int
-add_radix(int ch)
-{
- if (2 <= m_value && m_value <= 36 && m_scale == 0) {
- r_base = m_value;
- save_ch(ch);
- return(next_ch());
- }
- else {
- /* Radix invalid, complete a name token */
- return(AAH_NAME(ch));
- }
-}
-
-static int
-add_r_digits(int ch)
-{
- unsigned long value;
- long radix, scale;
- int digit;
-
- /* NOTE: The syntax of a radix number allows only for
- * values of zero or more. The value will be stored as
- * a 32 bit integer, which PostScript then interprets
- * as signed. This means, for example, that the numbers:
- *
- * 8#37777777777
- * 10#4294967295
- * 16#FFFFFFFF
- * 36#1Z141Z3
- *
- * are all interpreted as -1. This routine implements this
- * idea explicitly: it accumulates the number's value
- * as unsigned, then casts it to signed when done.
- */
-
- /* Expect r_base to be initialized */
- radix = r_base;
- value = 0;
- scale = 0;
-
- /* Scan leading zeroes */
- while(ch == '0') {
- save_ch(ch);
- ch = next_ch();
- }
-
- /* Handle first non-zero digit */
- if ((digit=digit_value[ch]) < radix) {
- value = digit;
- save_ch(ch);
- ch = next_ch();
-
- /* Add digits until boundary case reached */
- while((digit=digit_value[ch]) < radix
- && value < (MAX_ULONG / radix)) {
- value = value * radix + digit;
- save_ch(ch);
- ch = next_ch();
- };
-
- /* Scan remaining digits */
- if ((digit=digit_value[ch]) < radix) {
-
- /* Examine boundary case ---
- * radix*(MAX_ULONG/radix) <= number <= MAX_ULONG
- */
- if (value == (MAX_ULONG/radix) && digit <= MAX_ULONG%radix)
- value = value * radix + digit;
- else
- ++scale;
-
- /* Continue scanning digits, but can't store them */
- save_ch(ch);
- ch = next_ch();
- while(digit_value[ch] < radix) {
- ++scale;
- save_ch(ch);
- ch = next_ch();
- }
- }
- }
-
- /* Store result */
- r_value = (long) value; /* result is signed */
- r_scale = scale;
-
- return(ch);
-}
-
-/* -------------------------------------------------------------------
- * Complete a number; set token type and done flag.
- * Put current input character back, if it is not white space.
- */
-
-/* Done: Radix Number */
-static int
-RADIX_NUMBER(int ch)
-{
- back_ch_not_white(ch);
- if (r_scale == 0) {
- tokenValue.integer = r_value;
- tokenType = TOKEN_INTEGER;
- }
- else {
- tokenType = TOKEN_NAME;
- }
- return(DONE);
-}
-
-/* Done: Integer */
-static int
-INTEGER(int ch)
-{
- back_ch_not_white(ch);
- if (m_scale == 0) {
- tokenValue.integer = m_value;
- tokenType = TOKEN_INTEGER;
- }
- else {
- tokenValue.real = (double)(m_value) * Exp10(m_scale);
- tokenType = TOKEN_REAL;
- }
- return(DONE);
-}
-
-/* Done: Real */
-static int
-REAL(int ch)
-{
- double temp;
-
- back_ch_not_white(ch);
-
- /* HAZARD: exponent overflow of intermediate result
- * (e.g., in 370 floating point); this should not be a problem
- * with IEEE floating point. Reduce exponent overflow hazard by
- * combining m_scale and e_value first, if they have different signs,
- * or multiplying m_value and one of the other factors, if both
- * m_scale and e_value are negative.
- */
- if ((m_scale >= 0 && e_value <= 0)
- || (m_scale <= 0 && e_value >= 0)) {
- tokenValue.real = (double)(m_value) * Exp10(m_scale + e_value);
- }
- else {
- temp = (double)(m_value) * Exp10(m_scale);
- tokenValue.real = temp * Exp10(e_value);
- }
-
- tokenType = TOKEN_REAL;
- return(DONE);
-}
-
-
-/* -------------------------------------------------------------------
- * Assemble a hex string; set token type and done flag.
- */
-
-/* Done: Hex String */
-static int
-HEX_STRING(int ch)
-{
- int value;
-
- while(TRUE) {
-
- /* Process odd digit */
- ch = next_ch();
- if (!isHEX_DIGIT(ch)) {
-
- /* Skip white space */
- while(isWHITE_SPACE(ch))
- ch = next_ch();
-
- /* Check for terminator */
- if (!isHEX_DIGIT(ch)) {
- break;
- }
- }
- value = digit_value[ch] << 4;
-
- /* Process even digit */
- ch = next_ch();
- if (!isHEX_DIGIT(ch)) {
-
- /* Skip white space */
- while(isWHITE_SPACE(ch))
- ch = next_ch();
-
- /* Check for terminator */
- if (!isHEX_DIGIT(ch)) {
- save_ch(value);
- break;
- }
- }
- save_ch(value + digit_value[ch]);
- }
-
- /* Classify result, based on why loop ended */
- if (ch == '>')
- tokenType = TOKEN_HEX_STRING;
- else {
- /* save the invalid character for error reporting */
- save_ch(ch);
- tokenType = TOKEN_INVALID;
- }
-
- return(DONE);
-}
-
-/* -------------------------------------------------------------------
- * Assemble a string; set token type and done flag
- */
-
-/* Save a backslash-coded character in a string --
- *
- * Store the proper character for special cases
- * "\b", "\f", "\n", "\r", and "\t".
- *
- * Decode and store octal-coded character, up to
- * three octal digits, "\o", "\oo", and "\ooo".
- *
- * The sequence "\<newline>" is a line continuation,
- * so consume both without storing anything.
- *
- * The sequence "\<EOF>" is an error; exit without
- * storing anything and let the caller handle it.
- *
- * For other characters, including the sequences
- * "\\", "\(", and "\)", simply store the second
- * character.
- */
-static void
-save_digraph(int ch)
-{
- int value;
-
- switch (ch) {
-
- case 'b': /* backspace */
- ch = '\b';
- break;
-
- case 'f': /* formfeed */
- ch = '\f';
- break;
-
- case 'n': /* newline */
- ch = '\n';
- break;
-
- case 'r': /* carriage return */
- ch = '\r';
- break;
-
- case 't': /* horizontal tab */
- ch = '\t';
- break;
-
- case '\n': /* line continuation -- consume it */
- return;
-
- case '\r': /* carriage return -- consume it */
- ch = next_ch(); /* look at next character, is it \n? */
- if (ch == '\n') return;
- back_ch(ch); /* if not a line feed, then return it */
- return;
-
- case EOF: /* end of file -- forget it */
- return;
-
- default:
- /* scan up to three octal digits to get value */
- if (isOCTAL_DIGIT(ch)) {
- value = digit_value[ch];
- ch = next_ch();
- if (isOCTAL_DIGIT(ch)) {
- value = (value << 3) + digit_value[ch];
- ch = next_ch();
- if (isOCTAL_DIGIT(ch))
- value = (value << 3) + digit_value[ch];
- else
- back_ch(ch);
- }
- else
- back_ch(ch);
- ch = value;
- }
- }
-
- /* Found a character to save */
- save_ch(ch);
-}
-
-/* Done: String */
-static int
-STRING(int ch)
-{
- int nest_level = 1;
-
- tokenType = TOKEN_STRING;
-
- do {
-
- ch = next_ch();
- while(!isSTRING_SPECIAL(ch)) {
- save_ch(ch);
- ch = next_ch();
- };
-
- switch (ch) {
-
- case '(':
- ++nest_level;
- save_ch(ch);
- break;
-
- case ')':
- if (--nest_level > 0)
- save_ch(ch);
- break;
-
- case '\\':
- save_digraph(next_ch());
- break;
-
- case '\r':
- /* All carriage returns (\r) are turned into linefeeds (\n)*/
- ch = next_ch(); /* get the next one, is it \n? */
- if (ch != '\n') { /* if not, then put it back. */
- back_ch(ch);
- }
- save_ch('\n'); /* in either case, save a linefeed */
- break;
-
-
- case EOF:
- tokenType = TOKEN_INVALID; /* Unterminated string */
- nest_level = 0;
- break;
- }
-
- } while(nest_level > 0);
-
- /* If there's room, add a 0-byte termination without increasing string
- length. This fixes certain dependencies on 0-terminated strings */
- save_ch_no_inc(0);
-
- return(DONE);
-}
-
-
-/* -------------------------------------------------------------------
- * Assemble a name; set token type and done flag.
- * Put current input character back, if it is not white space.
- */
-
-/* Done: Name
- * (Safe version used to complete name tokens that
- * start out looking like something else).
- */
-
-static int
-AAH_NAME(int ch)
-{
- do {
- save_ch(ch);
- ch = next_ch();
- } while(isNAME(ch));
-
- back_ch_not_white(ch);
- tokenType = TOKEN_NAME;
- return(DONE);
-}
-
-/* Done: Name */
-static int
-NAME(int ch)
-{
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- while(isNAME(ch)) {
- save_ch(ch);
- ch = next_ch();
- }
- }
- }
- }
- }
- }
- }
-
- back_ch_not_white(ch);
- tokenType = TOKEN_NAME;
- return(DONE);
-}
-
-/* Done: Literal Name */
-static int
-LITERAL_NAME(int ch)
-{
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- while(isNAME(ch)) {
- save_ch(ch);
- ch = next_ch();
- }
- }
- }
- }
- }
- }
- }
-
- back_ch_not_white(ch);
- tokenType = TOKEN_LITERAL_NAME;
- return(DONE);
-}
-
-/* Done: immediate Name */
-static int
-IMMED_NAME(int ch)
-{
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- if (isNAME(ch)) {
- save_unsafe_ch(ch);
- ch = next_ch();
- while(isNAME(ch)) {
- save_ch(ch);
- ch = next_ch();
- }
- }
- }
- }
- }
- }
- }
-
- back_ch_not_white(ch);
- tokenType = TOKEN_IMMED_NAME;
- return(DONE);
-}
-
-/* Done: Name found while looking for something else */
-static int
-OOPS_NAME(int ch)
-{
- back_ch_not_white(ch);
- tokenType = TOKEN_NAME;
- return(DONE);
-}
-
-
-/* -------------------------------------------------------------------
- * Complete a miscellaneous token; set token type and done flag.
- */
-
-/* Done: Unmatched Right Angle-Bracket */
-static int
-RIGHT_ANGLE(int ch)
-{
- tokenType = TOKEN_RIGHT_ANGLE;
- return(DONE);
-}
-
-/* Done: Unmatched Right Parenthesis */
-static int
-RIGHT_PAREN(int ch)
-{
- tokenType = TOKEN_RIGHT_PAREN;
- return(DONE);
-}
-
-/* Done: Left Brace */
-static int
-LEFT_BRACE(int ch)
-{
- tokenType = TOKEN_LEFT_BRACE;
- return(DONE);
-}
-
-/* Done: Right Brace */
-static int
-RIGHT_BRACE(int ch)
-{
- tokenType = TOKEN_RIGHT_BRACE;
- return(DONE);
-}
-
-/* Done: Left Bracket */
-static int
-LEFT_BRACKET(int ch)
-{
- save_unsafe_ch(ch);
- tokenType = TOKEN_LEFT_BRACKET;
- return(DONE);
-}
-
-/* Done: Right Bracket */
-static int
-RIGHT_BRACKET(int ch)
-{
- save_unsafe_ch(ch);
- tokenType = TOKEN_RIGHT_BRACKET;
- return(DONE);
-}
-
-/* Done: Break */
-static int
-BREAK_SIGNAL(int ch)
-{
- tokenType = TOKEN_BREAK;
- return(DONE);
-}
-
-/* Done: No Token Found */
-static int
-NO_TOKEN(int ch)
-{
- tokenType = TOKEN_EOF;
- return(DONE);
-}
-
-
-/*
- * -------------------------------------------------------------------
- * scan_token -- scan one token from the input. It uses a simple
- * finite state machine to recognize token classes.
- *
- * The input is from a file.
- *
- * On entry --
- *
- * inputP -> input PostScript object, a file.
- * tokenStartP -> buffer in VM for accumulating the token.
- * tokenMaxP -> last character in the token buffer
- *
- * On exit --
- *
- * tokenLength = number of characters in the token
- * tokenTooLong = TRUE if the token did not fit in the buffer
- * tokenType = code for the type of token parsed.
- * tokenValue = converted value of a numeric token.
- *
- *
- * -------------------------------------------------------------------
- */
-void
-scan_token(psobj *inputP)
-{
- int ch;
- unsigned char *stateP = s0;
- unsigned char entry;
- int (*actionP)(int);
-
- /* Define input source */
- inputFileP = inputP->data.fileP;
- if (inputFileP == NULL) {
- tokenType = TOKEN_EOF;
- return;
- }
-
- /* Ensure enough space for most cases
- * (so we don't have to keep checking)
- * The length needs to cover the maximum number
- * of save_unsafe_ch() calls that might be executed.
- * That number is 11 (a sign and 10 decimal digits, e.g.,
- * when scanning -2147483648), but use MAX_NAME_LEN
- * in case someone changes that without checking.
- */
- tokenStartP = vm_next_byte();
- tokenMaxP = tokenStartP + MIN(vm_free_bytes(), MAX_STRING_LEN);
-
- if ((tokenMaxP-tokenStartP) < (MAX_NAME_LEN)) {
- tokenLength = 0;
- tokenTooLong = TRUE;
- tokenType = TOKEN_NONE;
- tokenValue.integer = 0;
- return;
- }
-
- /* Reset token */
- tokenCharP = tokenStartP;
- tokenTooLong = FALSE;
-
- /* Scan one token */
- ch = next_ch();
- do {
- entry = stateP[ch];
- stateP = classActionTable[entry].nextStateP;
- actionP = classActionTable[entry].actionRoutineP;
- ch = (*actionP)(ch);
- } while(ch != DONE);
-
-
- /* Return results */
- tokenLength = tokenCharP - tokenStartP;
-}
diff --git a/libXfont/src/Type1/token.h b/libXfont/src/Type1/token.h
deleted file mode 100644
index 663982889..000000000
--- a/libXfont/src/Type1/token.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* $Xorg: token.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/token.h,v 1.3 1999/08/22 08:58:54 dawes Exp $ */
-
-#ifndef TOKEN_H
-#define TOKEN_H
-
-/* Special characters */
-#define CONTROL_C (3)
-
-/* Token type codes */
-#define TOKEN_INVALID (-3)
-#define TOKEN_BREAK (-2)
-#define TOKEN_EOF (-1)
-#define TOKEN_NONE (0)
-#define TOKEN_LEFT_PAREN (1)
-#define TOKEN_RIGHT_PAREN (2)
-#define TOKEN_LEFT_ANGLE (3)
-#define TOKEN_RIGHT_ANGLE (4)
-#define TOKEN_LEFT_BRACE (5)
-#define TOKEN_RIGHT_BRACE (6)
-#define TOKEN_LEFT_BRACKET (7)
-#define TOKEN_RIGHT_BRACKET (8)
-#define TOKEN_NAME (9)
-#define TOKEN_LITERAL_NAME (10)
-#define TOKEN_INTEGER (11)
-#define TOKEN_REAL (12)
-#define TOKEN_RADIX_NUMBER (13)
-#define TOKEN_HEX_STRING (14)
-#define TOKEN_STRING (15)
-#define TOKEN_IMMED_NAME (16)
-
-/* Token routines */
-extern void scan_token( psobj *inputP );
-
-/*
- * -------------------------------------------------------------------------
- * Globals shared -- (everyone else KEEP YOUR MITTS OFF THEM!)
- * -------------------------------------------------------------------------
- */
-
-/* These variables are set by the caller */
-extern char *tokenStartP; /* Pointer to token buffer in VM */
-extern char *tokenMaxP; /* Pointer to end of VM we may use + 1 */
-
-/* These variables are set by P_TOKEN */
-extern int tokenLength; /* Characters in token */
-extern boolean tokenTooLong; /* Token too long for space available */
-extern int tokenType; /* Type of token identified */
-extern psvalue tokenValue; /* Token value */
-
-#endif /* TOKEN_H */
diff --git a/libXfont/src/Type1/tokst.h b/libXfont/src/Type1/tokst.h
deleted file mode 100644
index 02166afde..000000000
--- a/libXfont/src/Type1/tokst.h
+++ /dev/null
@@ -1,510 +0,0 @@
-/* $Xorg: tokst.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/tokst.h,v 1.3 1999/08/22 08:58:54 dawes Exp $ */
-
-/* -------------------------------------- */
-/* --- MACHINE GENERATED, DO NOT EDIT --- */
-/* -------------------------------------- */
-
-#ifndef TOKST
-#define TOKST 1
-
-/*
- * State Index Tables --
- *
- * These tables map the input character to the
- * proper entry in the Class Action Table.
- * There is one table for each state.
- *
- */
-#define s0 (si0+2)
-static unsigned char si0[258] = { 0x10,0x11,
- 0x02,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x02,0x02,0x0F,0x0F,0x02,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
- 0x02,0x0F,0x0F,0x0F,0x0F,0x03,0x0F,0x0F,0x05,0x0B,0x0F,0x0D,0x0F,0x0D,0x0E,0x04,
- 0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x0F,0x0F,0x08,0x0F,0x0C,0x0F,
- 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0F,0x0A,0x0F,0x0F,
- 0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x0F,0x09,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
- 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F
-};
-
-#define s1 (si1+2)
-static unsigned char si1[258] = { 0x14,0x15,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x12,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
- 0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13
-};
-
-#define s2 (si2+2)
-static unsigned char si2[258] = { 0x1B,0x1C,
- 0x16,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x16,0x16,0x1A,0x1A,0x16,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x16,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x1A,0x17,0x17,0x1A,0x1A,0x1A,0x1A,0x19,0x17,
- 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1A,0x1A,0x17,0x1A,0x17,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x17,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x17,0x1A,0x17,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
- 0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A
-};
-
-#define s3 (si3+2)
-static unsigned char si3[258] = { 0x23,0x24,
- 0x1D,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1D,0x1D,0x22,0x22,0x1D,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x1D,0x22,0x22,0x20,0x22,0x1E,0x22,0x22,0x1E,0x1E,0x22,0x22,0x22,0x22,0x1F,0x1E,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x21,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x1E,0x22,0x1E,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,
- 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22
-};
-
-#define s4 (si4+2)
-static unsigned char si4[258] = { 0x29,0x2A,
- 0x25,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x25,0x25,0x28,0x28,0x25,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x25,0x28,0x28,0x28,0x28,0x26,0x28,0x28,0x26,0x26,0x28,0x28,0x28,0x28,0x28,0x26,
- 0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x27,0x28,0x28,0x26,0x28,0x26,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x28,0x26,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x26,0x28,0x26,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,
- 0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28,0x28
-};
-
-#define s5 (si5+2)
-static unsigned char si5[258] = { 0x30,0x31,
- 0x2B,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2B,0x2B,0x2F,0x2F,0x2B,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2B,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2F,0x2C,0x2C,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C,
- 0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2E,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2D,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2C,0x2F,0x2C,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,
- 0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F,0x2F
-};
-
-#define s6 (si6+2)
-static unsigned char si6[258] = { 0x36,0x37,
- 0x32,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x32,0x32,0x35,0x35,0x32,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x32,0x35,0x35,0x35,0x35,0x33,0x35,0x35,0x33,0x33,0x35,0x35,0x35,0x35,0x35,0x33,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x34,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x33,0x35,0x33,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,
- 0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35,0x35
-};
-
-#define s7 (si7+2)
-static unsigned char si7[258] = { 0x3D,0x3E,
- 0x38,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x38,0x38,0x3C,0x3C,0x38,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x38,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x3C,0x39,0x39,0x3C,0x3A,0x3C,0x3A,0x3C,0x39,
- 0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3B,0x3C,0x3C,0x39,0x3C,0x39,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x39,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x39,0x3C,0x39,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,
- 0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C
-};
-
-#define s8 (si8+2)
-static unsigned char si8[258] = { 0x43,0x44,
- 0x3F,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3F,0x3F,0x42,0x42,0x3F,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x3F,0x42,0x42,0x42,0x42,0x40,0x42,0x42,0x40,0x40,0x42,0x42,0x42,0x42,0x42,0x40,
- 0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x41,0x42,0x42,0x40,0x42,0x40,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x42,0x40,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x40,0x42,0x40,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,
- 0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42
-};
-
-#define s9 (si9+2)
-static unsigned char si9[258] = { 0x48,0x49,
- 0x45,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x45,0x45,0x47,0x47,0x45,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x45,0x47,0x47,0x47,0x47,0x46,0x47,0x47,0x46,0x46,0x47,0x47,0x47,0x47,0x47,0x46,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x46,0x47,0x46,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,
- 0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47
-};
-
-#define s10 (si10+2)
-static unsigned char si10[258] = { 0x4E,0x4F,
- 0x4A,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4A,0x4A,0x4D,0x4D,0x4A,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
- 0x4A,0x4D,0x4D,0x4D,0x4D,0x4B,0x4D,0x4D,0x4B,0x4B,0x4D,0x4D,0x4D,0x4D,0x4D,0x4B,
- 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4D,0x4D,0x4B,0x4D,0x4B,0x4D,
- 0x4D,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,
- 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4B,0x4D,0x4B,0x4D,0x4D,
- 0x4D,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,
- 0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4C,0x4B,0x4D,0x4B,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,
- 0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D,0x4D
-};
-
-#define s11 (si11+2)
-static unsigned char si11[258] = { 0x53,0x54,
- 0x50,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x50,0x50,0x52,0x52,0x50,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x50,0x52,0x52,0x52,0x52,0x51,0x52,0x52,0x51,0x51,0x52,0x52,0x52,0x52,0x52,0x51,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x51,0x52,0x51,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,
- 0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52,0x52
-};
-
-/*
- * Class Action Table --
- *
- * The entries in the Class Action Table indicate the
- * action routine to be called, and the next state to
- * enter, for each relevant character class in each.
- * state. There are several entries for each state.
- *
- */
-static int AAH_NAME ( int ch );
-static int BREAK_SIGNAL ( int ch );
-static int HEX_STRING ( int ch );
-static int IMMED_NAME ( int ch );
-static int INTEGER ( int ch );
-static int LEFT_BRACE ( int ch );
-static int LEFT_BRACKET ( int ch );
-static int LITERAL_NAME ( int ch );
-static int NAME ( int ch );
-static int NO_TOKEN ( int ch );
-static int OOPS_NAME ( int ch );
-static int RADIX_NUMBER ( int ch );
-static int REAL ( int ch );
-static int RIGHT_ANGLE ( int ch );
-static int RIGHT_BRACE ( int ch );
-static int RIGHT_BRACKET ( int ch );
-static int RIGHT_PAREN ( int ch );
-static int STRING ( int ch );
-static int add_1st_decpt ( int ch );
-static int add_1st_digits ( int ch );
-static int add_char ( int ch );
-static int add_decpt ( int ch );
-static int add_digits ( int ch );
-static int add_exponent ( int ch );
-static int add_e_sign ( int ch );
-static int add_fraction ( int ch );
-static int add_radix ( int ch );
-static int add_r_digits ( int ch );
-static int add_sign ( int ch );
-static int next_char ( int ch );
-static int skip_comment ( int ch );
-static int skip_space ( int ch );
-
-static struct cat {
- int (*actionRoutineP)(int);
- unsigned char *nextStateP;
-} classActionTable[] = {
-
- /* s0: Classify initial character */
- /* 00 ALPHA */ {NAME, s0}, /* executable name */
- /* 01 DIGIT */ {add_1st_digits, s3}, /* number? */
- /* 02 WHITE_SPACE */ {skip_space, s0}, /* skip white space */
- /* 03 PERCENT */ {skip_comment, s0}, /* comment? */
- /* 04 SLASH */ {next_char, s1}, /* literal or imm name */
- /* 05 LEFT_PAREN */ {STRING, s0}, /* string */
- /* 06 LEFT_BRACE */ {LEFT_BRACE, s0}, /* begin procedure body */
- /* 07 LEFT_BRACKET */ {LEFT_BRACKET, s0}, /* begin array */
- /* 08 LEFT_ANGLE */ {HEX_STRING, s0}, /* hex string? */
- /* 09 RIGHT_BRACE */ {RIGHT_BRACE, s0}, /* end procedure body */
- /* 0A RIGHT_BRACKET */ {RIGHT_BRACKET, s0}, /* end array */
- /* 0B RIGHT_PAREN */ {RIGHT_PAREN, s0}, /* unmatched right paren */
- /* 0C RIGHT_ANGLE */ {RIGHT_ANGLE, s0}, /* unmatched right angle */
- /* 0D SIGN */ {add_sign, s2}, /* signed number? */
- /* 0E DECIMAL_POINT */ {add_1st_decpt, s4}, /* real number? */
- /* 0F ANY */ {NAME, s0}, /* executable name */
- /* 10 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 11 EOF */ {NO_TOKEN, s0}, /* no token found */
-
- /* s1: Further classify a '/' */
- /* 12 SLASH */ {IMMED_NAME, s0}, /* immediate name */
- /* 13 ANY */ {LITERAL_NAME, s0}, /* literal name */
- /* 14 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 15 EOF */ {OOPS_NAME, s0}, /* isolated sign */
-
- /* s2: sign */
- /* 16 WHITE_SPACE */ {OOPS_NAME, s0}, /* isolated sign */
- /* 17 SPECIAL */ {OOPS_NAME, s0}, /* isolated sign */
- /* 18 DIGIT */ {add_digits, s3}, /* number? */
- /* 19 DECIMAL_POINT */ {add_decpt, s4}, /* real number? */
- /* 1A ANY */ {NAME, s0}, /* executable name */
- /* 1B BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 1C EOF */ {OOPS_NAME, s0}, /* isolated sign */
-
- /* s3: sign? digit+ */
- /* 1D WHITE_SPACE */ {INTEGER, s0}, /* n-digit integer */
- /* 1E SPECIAL */ {INTEGER, s0}, /* n-digit integer */
- /* 1F DECIMAL_POINT */ {add_char, s5}, /* real number? */
- /* 20 POUND */ {add_radix, s10}, /* radix number? */
- /* 21 eE */ {add_char, s7}, /* real with exponent? */
- /* 22 ANY */ {AAH_NAME, s0}, /* executable name */
- /* 23 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 24 EOF */ {INTEGER, s0}, /* n-digit integer */
-
- /* s4: sign? . */
- /* 25 WHITE_SPACE */ {OOPS_NAME, s0}, /* isolated +. or -. */
- /* 26 SPECIAL */ {OOPS_NAME, s0}, /* isolated +. or -. */
- /* 27 DIGIT */ {add_fraction, s6}, /* number? */
- /* 28 ANY */ {NAME, s0}, /* executable name */
- /* 29 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 2A EOF */ {OOPS_NAME, s0}, /* isolated +. or -. */
-
- /* s5: sign? digit+ . */
- /* 2B WHITE_SPACE */ {REAL, s0}, /* real with fraction */
- /* 2C SPECIAL */ {REAL, s0}, /* real with fraction */
- /* 2D eE */ {add_char, s7}, /* real with exponent? */
- /* 2E DIGIT */ {add_fraction, s6}, /* number? */
- /* 2F ANY */ {AAH_NAME, s0}, /* executable name */
- /* 30 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 31 EOF */ {REAL, s0}, /* real with fraction */
-
- /* s6: sign? (digit+ . digit+) | (. digit+) */
- /* 32 WHITE_SPACE */ {REAL, s0}, /* real with fraction */
- /* 33 SPECIAL */ {REAL, s0}, /* real with fraction */
- /* 34 eE */ {add_char, s7}, /* real with exponent? */
- /* 35 ANY */ {AAH_NAME, s0}, /* executable name */
- /* 36 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 37 EOF */ {REAL, s0}, /* real with fraction */
-
- /* s7: sign? ((digit+ (. digit*)?) | (. digit+)) Ee */
- /* 38 WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid real number */
- /* 39 SPECIAL */ {OOPS_NAME, s0}, /* invalid real number */
- /* 3A SIGN */ {add_e_sign, s8}, /* real w signed exponent? */
- /* 3B DIGIT */ {add_exponent, s9}, /* real w exponent ? */
- /* 3C ANY */ {AAH_NAME, s0}, /* executable name */
- /* 3D BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 3E EOF */ {OOPS_NAME, s0}, /* invalid real number */
-
- /* s8: sign? (digit+ (. digit*)? | (digit* . digit+) Ee sign */
- /* 3F WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid real number */
- /* 40 SPECIAL */ {OOPS_NAME, s0}, /* invalid real number */
- /* 41 DIGIT */ {add_exponent, s9}, /* real w exponent? */
- /* 42 ANY */ {AAH_NAME, s0}, /* executable name */
- /* 43 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 44 EOF */ {OOPS_NAME, s0}, /* invalid real number */
-
- /* s9: sign? (digit+ (. digit*)? | (digit* . digit+) Ee sign? digit+ */
- /* 45 WHITE_SPACE */ {REAL, s0}, /* real w exponent */
- /* 46 SPECIAL */ {REAL, s0}, /* real w exponent */
- /* 47 ANY */ {AAH_NAME, s0}, /* executable name */
- /* 48 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 49 EOF */ {REAL, s0}, /* real w exponent */
-
- /* s10: digit+ # */
- /* 4A WHITE_SPACE */ {OOPS_NAME, s0}, /* invalid radix number */
- /* 4B SPECIAL */ {OOPS_NAME, s0}, /* invalid radix number */
- /* 4C R_DIGIT */ {add_r_digits, s11}, /* radix number? */
- /* 4D ANY */ {AAH_NAME, s0}, /* executable name */
- /* 4E BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 4F EOF */ {OOPS_NAME, s0}, /* invalid radix number */
-
- /* s11: digit+ # r_digit+ */
- /* 50 WHITE_SPACE */ {RADIX_NUMBER, s0}, /* radix number */
- /* 51 SPECIAL */ {RADIX_NUMBER, s0}, /* radix number */
- /* 52 ANY */ {AAH_NAME, s0}, /* executable name */
- /* 53 BREAK */ {BREAK_SIGNAL, s0}, /* break signalled */
- /* 54 EOF */ {RADIX_NUMBER, s0} /* radix number */
-};
-
-/*
- * Character Classification Tables --
- *
- * The entries in the Character Classification Tables
- * map character codes to character classes. The
- * tables contains one entry per code. The bits in
- * each entry indicate which classes the character
- * code belongs to.
- *
- * The macros 'isInCLASS(ch)' generate code to test
- * whether 'ch' is a character in 'CLASS'.
- *
- */
-/* Membership macros for classes defined in table 1 ... */
-#define isRADIX_DIGIT(c) ((isInP1[c] & 0x80) != 0)
-#define isHEX_DIGIT(c) ((isInP1[c] & 0x40) != 0)
-#define isDECIMAL_DIGIT(c) ((isInP1[c] & 0x10) != 0)
-#define isOCTAL_DIGIT(c) ((isInP1[c] & 0x20) != 0)
-
-/* Membership macros for classes defined in table 2 ... */
-#define isWHITE_SPACE(c) ((isInP2[c] & 0x80) != 0)
-#define isCOMMENT(c) ((isInP2[c] & 0x40) != 0)
-#define isNAME(c) ((isInP2[c] & 0x20) != 0)
-#define isSTRING_SPECIAL(c) ((isInP2[c] & 0x10) != 0)
-#define isNUMBER_ENDER(c) ((isInP2[c] & 0x08) != 0)
-
-#define isInP1 (isInT1+2)
-static unsigned char isInT1[258] = { 0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xD0,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
- 0x00,0xC0,0xC0,0xC0,0xC0,0xC0,0xC0,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
- 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
-};
-
-#define isInP2 (isInT2+2)
-static unsigned char isInT2[258] = { 0x18,0x18,
- 0xC8,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0xC8,0x88,0x60,0x60,0x98,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0xC8,0x60,0x60,0x60,0x60,0x48,0x60,0x60,0x58,0x58,0x60,0x60,0x60,0x60,0x60,0x48,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x60,0x48,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x70,0x48,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x48,0x60,0x48,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,
- 0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60,0x60
-};
-
-#endif
diff --git a/libXfont/src/Type1/trig.h b/libXfont/src/Type1/trig.h
deleted file mode 100644
index d569ed067..000000000
--- a/libXfont/src/Type1/trig.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* $Xorg: trig.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/*SHARED*/
-
-/* $XFree86: xc/lib/font/Type1/trig.h,v 1.2 1998/07/25 06:57:00 dawes Exp $ */
-
-#undef DegreeCos
-#undef DegreeSin
-#undef sqrt
-
-#define DegreeCos(d) xiStub()
-#define DegreeSin(d) xiStub()
-#define sqrt(d) xiStub()
-
diff --git a/libXfont/src/Type1/type1.c b/libXfont/src/Type1/type1.c
deleted file mode 100644
index 5515f461c..000000000
--- a/libXfont/src/Type1/type1.c
+++ /dev/null
@@ -1,1797 +0,0 @@
-/* $Xorg: type1.c,v 1.4 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines, Corp. 1991
- * All Rights Reserved
- * Copyright Lexmark International, Inc. 1991
- * All Rights Reserved
- * Portions Copyright (c) 1990 Adobe Systems Incorporated.
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted,
- * 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 IBM or Lexmark or Adobe
- * not be used in advertising or publicity pertaining to distribution of
- * the software without specific, written prior permission.
- *
- * IBM, LEXMARK, AND ADOBE PROVIDE THIS SOFTWARE "AS IS", WITHOUT ANY
- * WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE
- * ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE, INCLUDING
- * ANY DUTY TO SUPPORT OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY
- * PORTION OF THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM,
- * LEXMARK, OR ADOBE) ASSUMES THE ENTIRE COST OF ALL SERVICING, REPAIR AND
- * CORRECTION. IN NO EVENT SHALL IBM, LEXMARK, OR ADOBE 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.
- */
-/* $XFree86: xc/lib/font/Type1/type1.c,v 1.9tsi Exp $ */
-
-/*********************************************************************/
-/* */
-/* Type 1 module - Converting fonts in Adobe Type 1 Font Format */
-/* to scaled and hinted paths for rasterization. */
-/* Files: type1.c, type1.h, and blues.h. */
-/* */
-/* Authors: Sten F. Andler, IBM Almaden Research Center */
-/* (Type 1 interpreter, stem & flex hints) */
-/* */
-/* Patrick A. Casey, Lexmark International, Inc. */
-/* (Font level hints & stem hints) */
-/* */
-/*********************************************************************/
-
-/******************/
-/* Include Files: */
-/******************/
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifndef FONTMODULE
-#include <stdio.h> /* a system-dependent include, usually */
-#include <math.h>
-#else
-#include "Xdefs.h"
-#include "Xmd.h"
-#include "xf86_ansic.h"
-#endif
-#include "objects.h"
-#include "spaces.h"
-#include "paths.h"
-#include "fonts.h" /* understands about TEXTTYPEs */
-#include "pictures.h" /* understands about handles */
-
-typedef struct xobject xobject;
-#include "util.h" /* PostScript objects */
-#include "fontfcn.h"
-#include "blues.h" /* Blues structure for font-level hints */
-
-/**********************************/
-/* Type1 Constants and Structures */
-/**********************************/
-#define MAXSTACK 24 /* Adobe Type1 limit */
-#define MAXCALLSTACK 10 /* Adobe Type1 limit */
-#define MAXPSFAKESTACK 32 /* Max depth of fake PostScript stack (local) */
-#define MAXSTRLEN 512 /* Max length of a Type 1 string (local) */
-#define MAXLABEL 256 /* Maximum number of new hints */
-#define MAXSTEMS 128 /* Maximum number of VSTEM and HSTEM hints */
-#define EPS 0.001 /* Small number for comparisons */
-
-/************************************/
-/* Adobe Type 1 CharString commands */
-/************************************/
-#define HSTEM 1
-#define VSTEM 3
-#define VMOVETO 4
-#define RLINETO 5
-#define HLINETO 6
-#define VLINETO 7
-#define RRCURVETO 8
-#define CLOSEPATH 9
-#define CALLSUBR 10
-#define RETURN 11
-#define ESCAPE 12
-#define HSBW 13
-#define ENDCHAR 14
-#define RMOVETO 21
-#define HMOVETO 22
-#define VHCURVETO 30
-#define HVCURVETO 31
-
-/*******************************************/
-/* Adobe Type 1 CharString Escape commands */
-/*******************************************/
-#define DOTSECTION 0
-#define VSTEM3 1
-#define HSTEM3 2
-#define SEAC 6
-#define SBW 7
-#define DIV 12
-#define CALLOTHERSUBR 16
-#define POP 17
-#define SETCURRENTPOINT 33
-
-/*****************/
-/* Useful macros */
-/*****************/
-
-#define FABS(x) fabs(x)
-
-#define CEIL(x) ceil(x)
-
-#define FLOOR(x) floor(x)
-
-#define ROUND(x) FLOOR((x) + 0.5)
-
-#define ODD(x) (((int)(x)) & 01)
-
-#define Error {errflag = TRUE; return;}
-#define ErrorRet(ret) {errflag = TRUE; return (ret);}
-
-/********************/
-/* global variables */
-/********************/
-struct stem { /* representation of a STEM hint */
- int vertical; /* TRUE if vertical, FALSE otherwise */
- double x, dx; /* interval of vertical stem */
- double y, dy; /* interval of horizontal stem */
- struct segment *lbhint, *lbrevhint; /* left or bottom hint adjustment */
- struct segment *rthint, *rtrevhint; /* right or top hint adjustment */
-};
-
-struct xobject *Type1Char(char *env, struct XYspace *S,
- psobj *charstrP, psobj *subrsP, psobj *osubrsP,
- struct blues_struct *bluesP, int *modeP);
-
-static double escapementX, escapementY;
-static double sidebearingX, sidebearingY;
-static double accentoffsetX, accentoffsetY;
-
-static struct segment *path;
-static int errflag;
-
-/*************************************************/
-/* Global variables to hold Type1Char parameters */
-/*************************************************/
-static char *Environment;
-static struct XYspace *CharSpace;
-static psobj *CharStringP, *SubrsP;
-
-/************************/
-/* Forward declarations */
-/************************/
-static struct segment *Applyhint ( struct segment *p, int stemnumber,
- int half );
-static struct segment *Applyrevhint ( struct segment *p, int stemnumber,
- int half );
-static void CallOtherSubr ( int othersubrno );
-static void CallSubr ( int subrno );
-static struct segment *CenterStem ( double edge1, double edge2 );
-static void ClearCallStack ( void );
-static void ClearPSFakeStack ( void );
-static void ClearStack ( void );
-static void ComputeAlignmentZones ( void );
-static void ComputeStem ( int stemno );
-static void Decode ( int Code );
-static unsigned char Decrypt ( unsigned char cipher );
-static double Div ( double num1, double num2 );
-static void DoClosePath ( void );
-static void DoCommand ( int Code );
-static int DoRead ( int *CodeP );
-static void DotSection ( void );
-static void EndChar ( void );
-static void Escape ( int Code );
-static struct segment *FindStems ( double x, double y, double dx, double dy );
-static void FinitStems ( void );
-static void FlxProc ( double c1x2, double c1y2, double c3x0, double c3y0,
- double c3x1, double c3y1, double c3x2, double c3y2,
- double c4x0, double c4y0, double c4x1, double c4y1,
- double c4x2, double c4y2, double epY, double epX,
- int idmin );
-static void FlxProc1 ( void );
-static void FlxProc2 ( void );
-static void HintReplace ( void );
-static void HStem ( double y, double dy );
-static void InitStems ( void );
-static void PopCall ( psobj **CurrStrPP, int *CurrIndexP,
- unsigned short *CurrKeyP );
-static double PSFakePop ( void );
-static void PSFakePush ( double Num );
-static void Push ( double Num );
-static void PushCall ( psobj *CurrStrP, int CurrIndex,
- unsigned short CurrKey );
-static void Return ( void );
-static void RLineTo ( double dx, double dy );
-static void RMoveTo ( double dx, double dy );
-static void RRCurveTo ( double dx1, double dy1, double dx2, double dy2,
- double dx3, double dy3 );
-static void Sbw ( double sbx, double sby, double wx, double wy );
-static void Seac ( double asb, double adx, double ady, unsigned char bchar,
- unsigned char achar );
-static void SetCurrentPoint ( double x, double y );
-static void StartDecrypt ( void );
-static void VStem ( double x, double dx );
-
-/*****************************************/
-/* statics for Flex procedures (FlxProc) */
-/*****************************************/
-static struct segment *FlxOldPath; /* save path before Flex feature */
-
-/******************************************************/
-/* statics for Font level hints (Blues) (see blues.h) */
-/******************************************************/
-static struct blues_struct *blues; /* the blues structure */
-static struct alignmentzone alignmentzones[MAXALIGNMENTZONES];
-static int numalignmentzones; /* total number of alignment zones */
-
-/****************************************************************/
-/* Subroutines for the Font level hints (Alignment zones, etc.) */
-/****************************************************************/
-
-/******************************************/
-/* Fill in the alignment zone structures. */
-/******************************************/
-static void
-ComputeAlignmentZones(void)
-{
- int i;
- double dummy, bluezonepixels, familyzonepixels;
- struct segment *p;
-
- numalignmentzones = 0; /* initialize total # of zones */
-
- /* do the BlueValues zones */
- for (i = 0; i < blues->numBlueValues; i +=2, ++numalignmentzones) {
- /* the 0th & 1st numbers in BlueValues are for a bottom zone */
- /* the rest are topzones */
- if (i == 0) /* bottom zone */
- alignmentzones[numalignmentzones].topzone = FALSE;
- else /* top zone */
- alignmentzones[numalignmentzones].topzone = TRUE;
- if (i < blues->numFamilyBlues) { /* we must consider FamilyBlues */
- p = ILoc(CharSpace,0,blues->BlueValues[i] - blues->BlueValues[i+1]);
- QueryLoc(p, IDENTITY, &dummy, &bluezonepixels);
- Destroy(p);
- p = ILoc(CharSpace,0,blues->FamilyBlues[i]-blues->FamilyBlues[i+1]);
- QueryLoc(p, IDENTITY, &dummy, &familyzonepixels);
- Destroy(p);
- /* is the difference in size of the zones less than 1 pixel? */
- if (FABS(bluezonepixels - familyzonepixels) < 1.0) {
- /* use the Family zones */
- alignmentzones[numalignmentzones].bottomy =
- blues->FamilyBlues[i];
- alignmentzones[numalignmentzones].topy =
- blues->FamilyBlues[i+1];
- continue;
- }
- }
- /* use this font's Blue zones */
- alignmentzones[numalignmentzones].bottomy = blues->BlueValues[i];
- alignmentzones[numalignmentzones].topy = blues->BlueValues[i+1];
- }
-
- /* do the OtherBlues zones */
- for (i = 0; i < blues->numOtherBlues; i +=2, ++numalignmentzones) {
- /* all of the OtherBlues zones are bottom zones */
- alignmentzones[numalignmentzones].topzone = FALSE;
- if (i < blues->numFamilyOtherBlues) {/* consider FamilyOtherBlues */
- p = ILoc(CharSpace,0,blues->OtherBlues[i] - blues->OtherBlues[i+1]);
- QueryLoc(p, IDENTITY, &dummy, &bluezonepixels);
- Destroy(p);
- p = ILoc(CharSpace,0,blues->FamilyOtherBlues[i] -
- blues->FamilyOtherBlues[i+1]);
- QueryLoc(p, IDENTITY, &dummy, &familyzonepixels);
- Destroy(p);
- /* is the difference in size of the zones less than 1 pixel? */
- if (FABS(bluezonepixels - familyzonepixels) < 1.0) {
- /* use the Family zones */
- alignmentzones[numalignmentzones].bottomy =
- blues->FamilyOtherBlues[i];
- alignmentzones[numalignmentzones].topy =
- blues->FamilyOtherBlues[i+1];
- continue;
- }
- }
- /* use this font's Blue zones (as opposed to the Family Blues */
- alignmentzones[numalignmentzones].bottomy = blues->OtherBlues[i];
- alignmentzones[numalignmentzones].topy = blues->OtherBlues[i+1];
- }
-}
-
-/**********************************************************************/
-/* Subroutines and statics for handling of the VSTEM and HSTEM hints. */
-/**********************************************************************/
-static int InDotSection; /* DotSection flag */
-static struct stem stems[MAXSTEMS]; /* All STEM hints */
-static int numstems; /* Number of STEM hints */
-static int currstartstem; /* The current starting stem. */
-static int oldvert, oldhor; /* Remember hint in effect */
-static int oldhorhalf, oldverthalf; /* Remember which half of the stem */
-static double wsoffsetX, wsoffsetY; /* White space offset - for VSTEM3,HSTEM3 */
-static int wsset; /* Flag for whether we've set wsoffsetX,Y */
-
-static void
-InitStems(void) /* Initialize the STEM hint data structures */
-{
- InDotSection = FALSE;
- currstartstem = numstems = 0;
- oldvert = oldhor = -1;
-}
-
-static void
-FinitStems(void) /* Terminate the STEM hint data structures */
-{
- int i;
-
- for (i = 0; i < numstems; i++) {
- Destroy(stems[i].lbhint);
- Destroy(stems[i].lbrevhint);
- Destroy(stems[i].rthint);
- Destroy(stems[i].rtrevhint);
- }
-}
-
-/*******************************************************************/
-/* Compute the dislocation that a stemhint should cause for points */
-/* inside the stem. */
-/*******************************************************************/
-static void
-ComputeStem(int stemno)
-{
- int verticalondevice, idealwidth;
- double stemstart, stemwidth;
- struct segment *p;
- int i;
- double stembottom, stemtop, flatposition;
- double Xpixels, Ypixels;
- double unitpixels, onepixel;
- int suppressovershoot, enforceovershoot;
- double stemshift, flatpospixels, overshoot;
- double widthdiff; /* Number of character space units to adjust width */
- double lbhintvalue, rthintvalue;
- double cxx, cyx, cxy, cyy; /* Transformation matrix */
- int rotated; /* TRUE if character is on the side, FALSE if upright */
-
- /************************************************/
- /* DETERMINE ORIENTATION OF CHARACTER ON DEVICE */
- /************************************************/
-
- QuerySpace(CharSpace, &cxx, &cyx, &cxy, &cyy); /* Transformation matrix */
-
- if (FABS(cxx) < 0.00001 || FABS(cyy) < 0.00001)
- rotated = TRUE; /* Char is on side (90 or 270 degrees), possibly oblique. */
- else if (FABS(cyx) < 0.00001 || FABS(cxy) < 0.00001)
- rotated = FALSE; /* Char is upright (0 or 180 degrees), possibly oblique. */
- else {
- stems[stemno].lbhint = NULL; /* Char is at non-axial angle, ignore hints. */
- stems[stemno].lbrevhint = NULL;
- stems[stemno].rthint = NULL;
- stems[stemno].rtrevhint = NULL;
- return;
- }
-
- /* Determine orientation of stem */
-
- if (stems[stemno].vertical) {
- verticalondevice = !rotated;
- stemstart = stems[stemno].x;
- stemwidth = stems[stemno].dx;
- } else {
- verticalondevice = rotated;
- stemstart = stems[stemno].y;
- stemwidth = stems[stemno].dy;
- }
-
- /* Determine how many pixels (non-negative) correspond to 1 character space
- unit (unitpixels), and how many character space units (non-negative)
- correspond to one pixel (onepixel). */
-
- if (stems[stemno].vertical)
- p = ILoc(CharSpace, 1, 0);
- else
- p = ILoc(CharSpace, 0, 1);
- QueryLoc(p, IDENTITY, &Xpixels, &Ypixels);
- Destroy(p);
- if (verticalondevice)
- unitpixels = FABS(Xpixels);
- else
- unitpixels = FABS(Ypixels);
-
- onepixel = 1.0 / unitpixels;
-
- /**********************/
- /* ADJUST STEM WIDTHS */
- /**********************/
-
- widthdiff = 0.0;
-
- /* Find standard stem with smallest width difference from this stem */
- if (stems[stemno].vertical) { /* vertical stem */
- if (blues->StdVW != 0) /* there is an entry for StdVW */
- widthdiff = blues->StdVW - stemwidth;
- for (i = 0; i < blues->numStemSnapV; ++i) { /* now look at StemSnapV */
- if (blues->StemSnapV[i] - stemwidth < widthdiff)
- /* this standard width is the best match so far for this stem */
- widthdiff = blues->StemSnapV[i] - stemwidth;
- }
- } else { /* horizontal stem */
- if (blues->StdHW != 0) /* there is an entry for StdHW */
- widthdiff = blues->StdHW - stemwidth;
- for (i = 0; i < blues->numStemSnapH; ++i) { /* now look at StemSnapH */
- if (blues->StemSnapH[i] - stemwidth < widthdiff)
- /* this standard width is the best match so far for this stem */
- widthdiff = blues->StemSnapH[i] - stemwidth;
- }
- }
-
- /* Only expand or contract stems if they differ by less than 1 pixel from
- the closest standard width, otherwise make the width difference = 0. */
- if (FABS(widthdiff) > onepixel)
- widthdiff = 0.0;
-
- /* Expand or contract stem to the nearest integral number of pixels. */
- idealwidth = ROUND((stemwidth + widthdiff) * unitpixels);
- /* Ensure that all stems are at least one pixel wide. */
- if (idealwidth == 0)
- idealwidth = 1;
- /* Apply ForceBold to vertical stems. */
- if (blues->ForceBold && stems[stemno].vertical)
- /* Force this vertical stem to be at least DEFAULTBOLDSTEMWIDTH wide. */
- if (idealwidth < DEFAULTBOLDSTEMWIDTH)
- idealwidth = DEFAULTBOLDSTEMWIDTH;
- /* Now compute the number of character space units necessary */
- widthdiff = idealwidth * onepixel - stemwidth;
-
- /*********************************************************************/
- /* ALIGNMENT ZONES AND OVERSHOOT SUPPRESSION - HORIZONTAL STEMS ONLY */
- /*********************************************************************/
-
- stemshift = 0.0;
-
- if (!stems[stemno].vertical) {
-
- /* Get bottom and top boundaries of the stem. */
- stembottom = stemstart;
- stemtop = stemstart + stemwidth;
-
- /* Find out if this stem intersects an alignment zone (the BlueFuzz */
- /* entry in the Private dictionary specifies the number of character */
- /* units to extend (in both directions) the effect of an alignment */
- /* zone on a horizontal stem. The default value of BlueFuzz is 1. */
- for (i = 0; i < numalignmentzones; ++i) {
- if (alignmentzones[i].topzone) {
- if (stemtop >= alignmentzones[i].bottomy &&
- stemtop <= alignmentzones[i].topy + blues->BlueFuzz) {
- break; /* We found a top-zone */
- }
- } else {
- if (stembottom <= alignmentzones[i].topy &&
- stembottom >= alignmentzones[i].bottomy - blues->BlueFuzz) {
- break; /* We found a bottom-zone */
- }
- }
- }
-
- if (i < numalignmentzones) { /* We found an intersecting zone (number i). */
- suppressovershoot = FALSE;
- enforceovershoot = FALSE;
-
- /* When 1 character space unit is rendered smaller than BlueScale
- device units (pixels), we must SUPPRESS overshoots. Otherwise,
- if the top (or bottom) of this stem is more than BlueShift character
- space units away from the flat position, we must ENFORCE overshoot. */
-
- if (unitpixels < blues->BlueScale)
- suppressovershoot = TRUE;
- else
- if (alignmentzones[i].topzone) {
- if (stemtop >= alignmentzones[i].bottomy + blues->BlueShift)
- enforceovershoot = TRUE;
- } else
- if (stembottom <= alignmentzones[i].topy - blues->BlueShift)
- enforceovershoot = TRUE;
-
- /*************************************************/
- /* ALIGN THE FLAT POSITION OF THE ALIGNMENT ZONE */
- /*************************************************/
-
- /* Compute the position of the alignment zone's flat position in
- device space and the amount of shift needed to align it on a
- pixel boundary. Move all stems this amount. */
-
- if (alignmentzones[i].topzone)
- flatposition = alignmentzones[i].bottomy;
- else
- flatposition = alignmentzones[i].topy;
-
- /* Find the flat position in pixels */
- flatpospixels = flatposition * unitpixels;
-
- /* Find the stem shift necessary to align the flat
- position on a pixel boundary, and use this shift for all stems */
- stemshift = (ROUND(flatpospixels) - flatpospixels) * onepixel;
-
- /************************************************/
- /* HANDLE OVERSHOOT ENFORCEMENT AND SUPPRESSION */
- /************************************************/
-
- /* Compute overshoot amount (non-negative) */
- if (alignmentzones[i].topzone)
- overshoot = stemtop - flatposition;
- else
- overshoot = flatposition - stembottom;
-
- if (overshoot > 0.0) {
- /* ENFORCE overshoot by shifting the entire stem (if necessary) so that
- it falls at least one pixel beyond the flat position. */
-
- if (enforceovershoot)
- if (overshoot < onepixel) {
- if (alignmentzones[i].topzone)
- stemshift += onepixel - overshoot;
- else
- stemshift -= onepixel - overshoot;
- }
- /* SUPPRESS overshoot by aligning the stem to the alignment zone's
- flat position. */
-
- if (suppressovershoot) {
- if (alignmentzones[i].topzone)
- stemshift -= overshoot;
- else
- stemshift += overshoot;
- }
- }
-
- /************************************************************/
- /* COMPUTE HINT VALUES FOR EACH SIDE OF THE HORIZONTAL STEM */
- /************************************************************/
-
- /* If the stem was aligned by a topzone, we expand or contract the stem
- only at the bottom - since the stem top was aligned by the zone.
- If the stem was aligned by a bottomzone, we expand or contract the stem
- only at the top - since the stem bottom was aligned by the zone. */
- if (alignmentzones[i].topzone) {
- lbhintvalue = stemshift - widthdiff; /* bottom */
- rthintvalue = stemshift; /* top */
- } else {
- lbhintvalue = stemshift; /* bottom */
- rthintvalue = stemshift + widthdiff; /* top */
- }
-
- stems[stemno].lbhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, lbhintvalue));
- stems[stemno].lbrevhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, -lbhintvalue));
- stems[stemno].rthint = (struct segment *)Permanent(Loc(CharSpace, 0.0, rthintvalue));
- stems[stemno].rtrevhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, -rthintvalue));
-
- return;
-
- } /* endif (i < numalignmentzones) */
-
- /* We didn't find any alignment zones intersecting this stem, so
- proceed with normal stem alignment below. */
-
- } /* endif (!stems[stemno].vertical) */
-
- /* Align stem with pixel boundaries on device */
- stemstart = stemstart - widthdiff / 2;
- stemshift = ROUND(stemstart * unitpixels) * onepixel - stemstart;
-
- /* Adjust the boundaries of the stem */
- lbhintvalue = stemshift - widthdiff / 2; /* left or bottom */
- rthintvalue = stemshift + widthdiff / 2; /* right or top */
-
- if (stems[stemno].vertical) {
- stems[stemno].lbhint = (struct segment *)Permanent(Loc(CharSpace, lbhintvalue, 0.0));
- stems[stemno].lbrevhint = (struct segment *)Permanent(Loc(CharSpace, -lbhintvalue, 0.0));
- stems[stemno].rthint = (struct segment *)Permanent(Loc(CharSpace, rthintvalue, 0.0));
- stems[stemno].rtrevhint = (struct segment *)Permanent(Loc(CharSpace, -rthintvalue, 0.0));
- } else {
- stems[stemno].lbhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, lbhintvalue));
- stems[stemno].lbrevhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, -lbhintvalue));
- stems[stemno].rthint = (struct segment *)Permanent(Loc(CharSpace, 0.0, rthintvalue));
- stems[stemno].rtrevhint = (struct segment *)Permanent(Loc(CharSpace, 0.0, -rthintvalue));
- }
-}
-
-#define LEFT 1
-#define RIGHT 2
-#define BOTTOM 3
-#define TOP 4
-
-/*********************************************************************/
-/* Adjust a point using the given stem hint. Use the left/bottom */
-/* hint value or the right/top hint value depending on where the */
-/* point lies in the stem. */
-/*********************************************************************/
-static struct segment *
-Applyhint(struct segment *p, int stemnumber, int half)
-{
- if (half == LEFT || half == BOTTOM)
- return Join(p, stems[stemnumber].lbhint); /* left or bottom hint */
- else
- return Join(p, stems[stemnumber].rthint); /* right or top hint */
-}
-
-/*********************************************************************/
-/* Adjust a point using the given reverse hint. Use the left/bottom */
-/* hint value or the right/top hint value depending on where the */
-/* point lies in the stem. */
-/*********************************************************************/
-static struct segment *
-Applyrevhint(struct segment *p, int stemnumber, int half)
-{
- if (half == LEFT || half == BOTTOM)
- return Join(p, stems[stemnumber].lbrevhint); /* left or bottom hint */
- else
- return Join(p, stems[stemnumber].rtrevhint); /* right or top hint */
-}
-
-/***********************************************************************/
-/* Find the vertical and horizontal stems that the current point */
-/* (x, y) may be involved in. At most one horizontal and one vertical */
-/* stem can apply to a single point, since there are no overlaps */
-/* allowed. */
-/* The actual hintvalue is returned as a location. */
-/* Hints are ignored inside a DotSection. */
-/***********************************************************************/
-static struct segment *
-FindStems(double x, double y, double dx, double dy)
-{
- int i;
- int newvert, newhor;
- struct segment *p;
- int newhorhalf, newverthalf;
-
- if (InDotSection) return(NULL);
-
- newvert = newhor = -1;
- newhorhalf = newverthalf = -1;
-
- for (i = currstartstem; i < numstems; i++) {
- if (stems[i].vertical) { /* VSTEM hint */
- if ((x >= stems[i].x - EPS) &&
- (x <= stems[i].x+stems[i].dx + EPS)) {
- newvert = i;
- if (dy != 0.0) {
- if (dy < 0) newverthalf = LEFT;
- else newverthalf = RIGHT;
- } else {
- if (x < stems[i].x+stems[i].dx / 2) newverthalf = LEFT;
- else newverthalf = RIGHT;
- }
- }
- } else { /* HSTEM hint */
- if ((y >= stems[i].y - EPS) &&
- (y <= stems[i].y+stems[i].dy + EPS)) {
- newhor = i;
- if (dx != 0.0) {
- if (dx < 0) newhorhalf = TOP;
- else newhorhalf = BOTTOM;
- } else {
- if (y < stems[i].y+stems[i].dy / 2) newhorhalf = BOTTOM;
- else newhorhalf = TOP;
- }
- }
- }
- }
-
- p = NULL;
-
- if (newvert == -1 && oldvert == -1) ; /* Outside of any hints */
- else if (newvert == oldvert &&
- newverthalf == oldverthalf); /* No hint change */
- else if (oldvert == -1) { /* New vertical hint in effect */
- p = Applyhint(p, newvert, newverthalf);
- } else if (newvert == -1) { /* Old vertical hint no longer in effect */
- p = Applyrevhint(p, oldvert, oldverthalf);
- } else { /* New vertical hint in effect, old hint no longer in effect */
- p = Applyrevhint(p, oldvert, oldverthalf);
- p = Applyhint(p, newvert, newverthalf);
- }
-
- if (newhor == -1 && oldhor == -1) ; /* Outside of any hints */
- else if (newhor == oldhor &&
- newhorhalf == oldhorhalf) ; /* No hint change */
- else if (oldhor == -1) { /* New horizontal hint in effect */
- p = Applyhint(p, newhor, newhorhalf);
- } else if (newhor == -1) { /* Old horizontal hint no longer in effect */
- p = Applyrevhint(p, oldhor, oldhorhalf);
- }
- else { /* New horizontal hint in effect, old hint no longer in effect */
- p = Applyrevhint(p, oldhor, oldhorhalf);
- p = Applyhint(p, newhor, newhorhalf);
- }
-
- oldvert = newvert; oldverthalf = newverthalf;
- oldhor = newhor; oldhorhalf = newhorhalf;
-
- return p;
-}
-
-/******************************************************/
-/* Subroutines and statics for the Type1Char routines */
-/******************************************************/
-
-static int strindex; /* index into PostScript string being interpreted */
-static double currx, curry; /* accumulated x and y values for hints */
-
-struct callstackentry {
- psobj *currstrP; /* current CharStringP */
- int currindex; /* current strindex */
- unsigned short currkey; /* current decryption key */
- };
-
-static double Stack[MAXSTACK];
-static int Top;
-static struct callstackentry CallStack[MAXCALLSTACK];
-static int CallTop;
-static double PSFakeStack[MAXPSFAKESTACK];
-static int PSFakeTop;
-
-static void
-ClearStack(void)
-{
- Top = -1;
-}
-
-static void
-Push(double Num)
-{
- if (++Top < MAXSTACK) Stack[Top] = Num;
- else Error;
-}
-
-static void
-ClearCallStack(void)
-{
- CallTop = -1;
-}
-
-static void
-PushCall(psobj *CurrStrP, int CurrIndex, unsigned short CurrKey)
-{
- if (++CallTop < MAXCALLSTACK) {
- CallStack[CallTop].currstrP = CurrStrP; /* save CharString pointer */
- CallStack[CallTop].currindex = CurrIndex; /* save CharString index */
- CallStack[CallTop].currkey = CurrKey; /* save decryption key */
- }
- else Error;
-}
-
-static void
-PopCall(psobj **CurrStrPP, int *CurrIndexP, unsigned short *CurrKeyP)
-{
- if (CallTop >= 0) {
- *CurrStrPP = CallStack[CallTop].currstrP; /* restore CharString pointer */
- *CurrIndexP = CallStack[CallTop].currindex; /* restore CharString index */
- *CurrKeyP = CallStack[CallTop--].currkey; /* restore decryption key */
- }
- else Error;
-}
-
-static void
-ClearPSFakeStack(void)
-{
- PSFakeTop = -1;
-}
-
-/* PSFakePush: Pushes a number onto the fake PostScript stack */
-static void
-PSFakePush(double Num)
-{
- if (++PSFakeTop < MAXPSFAKESTACK) PSFakeStack[PSFakeTop] = Num;
- else Error;
-}
-
-/* PSFakePop: Removes a number from the top of the fake PostScript stack */
-static double
-PSFakePop (void)
-{
- if (PSFakeTop >= 0) return(PSFakeStack[PSFakeTop--]);
- else ErrorRet(0.0);
- /*NOTREACHED*/
-}
-
-/***********************************************************************/
-/* Center a stem on the pixel grid -- used by HStem3 and VStem3 */
-/***********************************************************************/
-static struct segment *
-CenterStem(double edge1, double edge2)
-{
- int idealwidth, verticalondevice;
- double leftx, lefty, rightx, righty, center, width;
- double widthx, widthy;
- double shift, shiftx, shifty;
- double Xpixels, Ypixels;
- struct segment *p;
-
- p = Loc(CharSpace, edge1, 0.0);
- QueryLoc(p, IDENTITY, &leftx, &lefty);
-
- p = Join(p, Loc(CharSpace, edge2, 0.0));
- QueryLoc(p, IDENTITY, &rightx, &righty);
- Destroy(p);
-
- widthx = FABS(rightx - leftx);
- widthy = FABS(righty - lefty);
-
- if (widthy <= EPS) { /* verticalondevice hint */
- verticalondevice = TRUE;
- center = (rightx + leftx) / 2.0;
- width = widthx;
- }
- else if (widthx <= EPS) { /* horizontal hint */
- verticalondevice = FALSE;
- center = (righty + lefty) / 2.0;
- width = widthy;
- }
- else { /* neither horizontal nor verticalondevice and not oblique */
- return (NULL);
- }
-
- idealwidth = ROUND(width);
- if (idealwidth == 0) idealwidth = 1;
- if (ODD(idealwidth)) { /* is ideal width odd? */
- /* center stem over pixel */
- shift = FLOOR(center) + 0.5 - center;
- }
- else {
- /* align stem on pixel boundary */
- shift = ROUND(center) - center;
- }
-
- if (verticalondevice) {
- shiftx = shift;
- shifty = 0.0;
- } else {
- shifty = shift;
- shiftx = 0.0;
- }
-
- p = Loc(IDENTITY, shiftx, shifty);
- QueryLoc(p, CharSpace, &Xpixels, &Ypixels);
- wsoffsetX = Xpixels; wsoffsetY = Ypixels;
- currx += wsoffsetX; curry += wsoffsetY;
-
- return (p);
-}
-
-/*-----------------------------------------------------------------------
- Decrypt - From Adobe Type 1 book page 63, with some modifications
------------------------------------------------------------------------*/
-#define KEY 4330 /* Initial key (seed) for CharStrings decryption */
-#define C1 52845 /* Multiplier for pseudo-random number generator */
-#define C2 22719 /* Constant for pseudo-random number generator */
-
-static unsigned short r; /* Pseudo-random sequence of keys */
-
-static unsigned char
-Decrypt(unsigned char cipher)
-{
- unsigned char plain;
-
- plain = cipher ^ (r >> 8);
- r = (cipher + r) * C1 + C2;
- return plain;
-}
-
-/* Get the next byte from the codestring being interpreted */
-static int
-DoRead(int *CodeP)
-{
- if (strindex >= CharStringP->len) return(FALSE); /* end of string */
- *CodeP = Decrypt((unsigned char) CharStringP->data.stringP[strindex++]);
- return(TRUE);
-}
-
-/* Strip blues->lenIV bytes from CharString and update encryption key */
-/* (the lenIV entry in the Private dictionary specifies the number of */
-/* random bytes at the beginning of each CharString; default is 4) */
-static void
-StartDecrypt(void)
-{
- int Code;
-
- r = KEY; /* Initial key (seed) for CharStrings decryption */
- for (strindex = 0; strindex < blues->lenIV;)
- if (!DoRead(&Code)) /* Read a byte and update decryption key */
- Error;
-}
-
-static void
-Decode(int Code)
-{
- int Code1, Code2, Code3, Code4;
-
- if (Code <= 31) /* Code is [0,31] */
- DoCommand(Code);
- else if (Code <= 246) /* Code is [32,246] */
- Push((double)(Code - 139));
- else if (Code <= 250) { /* Code is [247,250] */
- if (!DoRead(&Code2)) goto ended;
- Push((double)(((Code - 247) << 8) + Code2 + 108));
- }
- else if (Code <= 254) { /* Code is [251,254] */
- if (!DoRead(&Code2)) goto ended;
- Push((double)( -((Code - 251) << 8) - Code2 - 108));
- }
- else { /* Code is 255 */
- if (!DoRead(&Code1)) goto ended;
- if (!DoRead(&Code2)) goto ended;
- if (!DoRead(&Code3)) goto ended;
- if (!DoRead(&Code4)) goto ended;
- Push((double)((((((Code1<<8) + Code2)<<8) + Code3)<<8) + Code4));
- }
- return;
-
-ended: Error;
-}
-
-/* Interpret a command code */
-static void
-DoCommand(int Code)
-{
- switch(Code) {
- case HSTEM: /* |- y dy HSTEM |- */
- /* Vertical range of a horizontal stem zone */
- if (Top < 1) Error;
- HStem(Stack[0], Stack[1]);
- ClearStack();
- break;
- case VSTEM: /* |- x dx VSTEM |- */
- /* Horizontal range of a vertical stem zone */
- if (Top < 1) Error;
- VStem(Stack[0], Stack[1]);
- ClearStack();
- break;
- case VMOVETO: /* |- dy VMOVETO |- */
- /* Vertical MOVETO, equivalent to 0 dy RMOVETO */
- if (Top < 0) Error;
- RMoveTo(0.0, Stack[0]);
- ClearStack();
- break;
- case RLINETO: /* |- dx dy RLINETO |- */
- /* Like RLINETO in PostScript */
- if (Top < 1) Error;
- RLineTo(Stack[0], Stack[1]);
- ClearStack();
- break;
- case HLINETO: /* |- dx HLINETO |- */
- /* Horizontal LINETO, equivalent to dx 0 RLINETO */
- if (Top < 0) Error;
- RLineTo(Stack[0], 0.0);
- ClearStack();
- break;
- case VLINETO: /* |- dy VLINETO |- */
- /* Vertical LINETO, equivalent to 0 dy RLINETO */
- if (Top < 0) Error;
- RLineTo(0.0, Stack[0]);
- ClearStack();
- break;
- case RRCURVETO:
- /* |- dx1 dy1 dx2 dy2 dx3 dy3 RRCURVETO |- */
- /* Relative RCURVETO, equivalent to dx1 dy1 */
- /* (dx1+dx2) (dy1+dy2) (dx1+dx2+dx3) */
- /* (dy1+dy2+dy3) RCURVETO in PostScript */
- if (Top < 5) Error;
- RRCurveTo(Stack[0], Stack[1], Stack[2], Stack[3],
- Stack[4], Stack[5]);
- ClearStack();
- break;
- case CLOSEPATH: /* - CLOSEPATH |- */
- /* Closes a subpath without repositioning the */
- /* current point */
- DoClosePath();
- ClearStack();
- break;
- case CALLSUBR: /* subr# CALLSUBR - */
- /* Calls a CharString subroutine with index */
- /* subr# from the Subrs array */
- if (Top < 0) Error;
- CallSubr((int)Stack[Top--]);
- break;
- case RETURN: /* - RETURN - */
- /* Returns from a Subrs array CharString */
- /* subroutine called with CALLSUBR */
- Return();
- break;
- case ESCAPE: /* ESCAPE to two-byte command code */
- if (!DoRead(&Code)) Error;
- Escape(Code);
- break;
- case HSBW: /* |- sbx wx HSBW |- */
- /* Set the left sidebearing point to (sbx,0), */
- /* set the character width vector to (wx,0). */
- /* Equivalent to sbx 0 wx 0 SBW. Space */
- /* character should have sbx = 0 */
- if (Top < 1) Error;
- Sbw(Stack[0], 0.0, Stack[1], 0.0);
- ClearStack();
- break;
- case ENDCHAR: /* - ENDCHAR |- */
- /* Finishes a CharString outline */
- EndChar();
- ClearStack();
- break;
- case RMOVETO: /* |- dx dy RMOVETO |- */
- /* Behaves like RMOVETO in PostScript */
- if (Top < 1) Error;
- RMoveTo(Stack[0], Stack[1]);
- ClearStack();
- break;
- case HMOVETO: /* |- dx HMOVETO |- */
- /* Horizontal MOVETO. Equivalent to dx 0 RMOVETO */
- if (Top < 0) Error;
- RMoveTo(Stack[0], 0.0);
- ClearStack();
- break;
- case VHCURVETO: /* |- dy1 dx2 dy2 dx3 VHCURVETO |- */
- /* Vertical-Horizontal CURVETO, equivalent to */
- /* 0 dy1 dx2 dy2 dx3 0 RRCURVETO */
- if (Top < 3) Error;
- RRCurveTo(0.0, Stack[0], Stack[1], Stack[2],
- Stack[3], 0.0);
- ClearStack();
- break;
- case HVCURVETO: /* |- dx1 dx2 dy2 dy3 HVCURVETO |- */
- /* Horizontal-Vertical CURVETO, equivalent to */
- /* dx1 0 dx2 dy2 0 dy3 RRCURVETO */
- if (Top < 3) Error;
- RRCurveTo(Stack[0], 0.0, Stack[1], Stack[2], 0.0, Stack[3]);
- ClearStack();
- break;
- default: /* Unassigned command code */
- ClearStack();
- Error;
- }
-}
-
-static void
-Escape(int Code)
-{
- int i, Num;
- struct segment *p;
-
- switch(Code) {
- case DOTSECTION: /* - DOTSECTION |- */
- /* Brackets an outline section for the dots in */
- /* letters such as "i", "j", and "!". */
- DotSection();
- ClearStack();
- break;
- case VSTEM3: /* |- x0 dx0 x1 dx1 x2 dx2 VSTEM3 |- */
- /* Declares the horizontal ranges of three */
- /* vertical stem zones between x0 and x0+dx0, */
- /* x1 and x1+dx1, and x2 and x2+dx2. */
- if (Top < 5) Error;
- if (!wsset && ProcessHints) {
- /* Shift the whole character so that the middle stem is centered. */
- p = CenterStem(Stack[2] + sidebearingX, Stack[3]);
- path = Join(path, p);
- wsset = 1;
- }
-
- VStem(Stack[0], Stack[1]);
- VStem(Stack[2], Stack[3]);
- VStem(Stack[4], Stack[5]);
- ClearStack();
- break;
- case HSTEM3: /* |- y0 dy0 y1 dy1 y2 dy2 HSTEM3 |- */
- /* Declares the vertical ranges of three hori- */
- /* zontal stem zones between y0 and y0+dy0, */
- /* y1 and y1+dy1, and y2 and y2+dy2. */
- if (Top < 5) Error;
- HStem(Stack[0], Stack[1]);
- HStem(Stack[2], Stack[3]);
- HStem(Stack[4], Stack[5]);
- ClearStack();
- break;
- case SEAC: /* |- asb adx ady bchar achar SEAC |- */
- /* Standard Encoding Accented Character. */
- if (Top < 4) Error;
- Seac(Stack[0], Stack[1], Stack[2],
- (unsigned char) Stack[3],
- (unsigned char) Stack[4]);
- ClearStack();
- break;
- case SBW: /* |- sbx sby wx wy SBW |- */
- /* Set the left sidebearing point to (sbx,sby), */
- /* set the character width vector to (wx,wy). */
- if (Top < 3) Error;
- Sbw(Stack[0], Stack[1], Stack[2], Stack[3]);
- ClearStack();
- break;
- case DIV: /* num1 num2 DIV quotient */
- /* Behaves like DIV in the PostScript language */
- if (Top < 1) Error;
- Stack[Top-1] = Div(Stack[Top-1], Stack[Top]);
- Top--;
- break;
- case CALLOTHERSUBR:
- /* arg1 ... argn n othersubr# CALLOTHERSUBR - */
- /* Make calls on the PostScript interpreter */
- if (Top < 1) Error;
- Num = Stack[Top-1];
- if (Top < Num+1) Error;
- for (i = 0; i < Num; i++) PSFakePush(Stack[Top - i - 2]);
- Top -= Num + 2;
- CallOtherSubr((int)Stack[Top + Num + 2]);
- break;
- case POP: /* - POP number */
- /* Removes a number from the top of the */
- /* PostScript interpreter stack and pushes it */
- /* onto the Type 1 BuildChar operand stack */
- Push(PSFakePop());
- break;
- case SETCURRENTPOINT: /* |- x y SETCURRENTPOINT |- */
- /* Sets the current point to (x,y) in absolute */
- /* character space coordinates without per- */
- /* forming a CharString MOVETO command */
- if (Top < 1) Error;
- SetCurrentPoint(Stack[0], Stack[1]);
- ClearStack();
- break;
- default: /* Unassigned escape code command */
- ClearStack();
- Error;
- }
-}
-
-/* |- y dy HSTEM |- */
-/* Declares the vertical range of a horizontal stem zone */
-/* between coordinates y and y + dy */
-/* y is relative to the left sidebearing point */
-static void
-HStem(double y, double dy)
-{
- if (ProcessHints) {
- if (numstems >= MAXSTEMS) Error;
- if (dy < 0.0) {y += dy; dy = -dy;}
- stems[numstems].vertical = FALSE;
- stems[numstems].x = 0.0;
- stems[numstems].y = sidebearingY + y + wsoffsetY;
- stems[numstems].dx = 0.0;
- stems[numstems].dy = dy;
- ComputeStem(numstems);
- numstems++;
- }
-}
-
-/* |- x dx VSTEM |- */
-/* Declares the horizontal range of a vertical stem zone */
-/* between coordinates x and x + dx */
-/* x is relative to the left sidebearing point */
-
-static void
-VStem(double x, double dx)
-{
- if (ProcessHints) {
- if (numstems >= MAXSTEMS) Error;
- if (dx < 0.0) {x += dx; dx = -dx;}
- stems[numstems].vertical = TRUE;
- stems[numstems].x = sidebearingX + x + wsoffsetX;
- stems[numstems].y = 0.0;
- stems[numstems].dx = dx;
- stems[numstems].dy = 0.0;
- ComputeStem(numstems);
- numstems++;
- }
-}
-
-/* |- dx dy RLINETO |- */
-/* Behaves like RLINETO in PostScript */
-static void
-RLineTo(double dx, double dy)
-{
- struct segment *B;
-
- B = Loc(CharSpace, dx, dy);
-
- if (ProcessHints) {
- currx += dx;
- curry += dy;
- /* B = Join(B, FindStems(currx, curry)); */
- B = Join(B, FindStems(currx, curry, dx, dy));
- }
-
- path = Join(path, Line(B));
-}
-
-/* |- dx1 dy1 dx2 dy2 dx3 dy3 RRCURVETO |- */
-/* Relative RCURVETO, equivalent to dx1 dy1 */
-/* (dx1+dx2) (dy1+dy2) (dx1+dx2+dx3) */
-/* (dy1+dy2+dy3) RCURVETO in PostScript */
-static void
-RRCurveTo(double dx1, double dy1, double dx2, double dy2,
- double dx3, double dy3)
-{
- struct segment *B, *C, *D;
-
- B = Loc(CharSpace, dx1, dy1);
- C = Loc(CharSpace, dx2, dy2);
- D = Loc(CharSpace, dx3, dy3);
-
- if (ProcessHints) {
- /* For a Bezier curve, we apply the full hint value to
- the Bezier C point (and thereby D point). */
- currx += dx1 + dx2 + dx3;
- curry += dy1 + dy2 + dy3;
- /* C = Join(C, FindStems(currx, curry)); */
- C = Join(C, FindStems(currx, curry, dx3, dy3));
- }
-
- /* Since XIMAGER is not completely relative, */
- /* we need to add up the delta values */
-
- C = Join(C, (struct segment *)Dup(B));
- D = Join(D, (struct segment *)Dup(C));
-
- path = Join(path, (struct segment *)Bezier(B, C, D));
-}
-
-/* - CLOSEPATH |- */
-/* Closes a subpath WITHOUT repositioning the */
-/* current point */
-static void
-DoClosePath(void)
-{
- struct segment *CurrentPoint;
-
- CurrentPoint = Phantom(path);
- path = ClosePath(path);
- path = Join(Snap(path), CurrentPoint);
-}
-
-/* subr# CALLSUBR - */
-/* Calls a CharString subroutine with index */
-/* subr# from the Subrs array */
-static void
-CallSubr(int subrno)
-{
- if ((subrno < 0) || (subrno >= SubrsP->len))
- Error;
- PushCall(CharStringP, strindex, r);
- CharStringP = &SubrsP->data.arrayP[subrno];
- StartDecrypt();
-}
-
-/* - RETURN - */
-/* Returns from a Subrs array CharString */
-/* subroutine called with CALLSUBR */
-static void
-Return(void)
-{
- PopCall(&CharStringP, &strindex, &r);
-}
-
-/* - ENDCHAR |- */
-/* Finishes a CharString outline */
-/* Executes SETCHACHEDEVICE using a bounding box */
-/* it computes directly from the character outline */
-/* and using the width information acquired from a previous */
-/* HSBW or SBW. It then calls a special version of FILL */
-/* or STROKE depending on the value of PaintType in the */
-/* font dictionary */
-static void
-EndChar(void)
-{
- /* There is no need to compute and set bounding box for
- the cache, since XIMAGER does that on the fly. */
-
- /* Perform a Closepath just in case the command was left out */
- path = ClosePath(path);
-
- /* Set character width */
- path = Join(Snap(path), Loc(CharSpace, escapementX, escapementY));
-
-}
-
-/* |- dx dy RMOVETO |- */
-/* Behaves like RMOVETO in PostScript */
-static void
-RMoveTo(double dx, double dy)
-{
- struct segment *B;
-
- B = Loc(CharSpace, dx, dy);
-
- if (ProcessHints) {
- currx += dx;
- curry += dy;
- /* B = Join(B, FindStems(currx, curry)); */
- B = Join(B, FindStems(currx, curry, 0.0, 0.0));
- }
-
- path = Join(path, B);
-}
-
-/* - DOTSECTION |- */
-/* Brackets an outline section for the dots in */
-/* letters such as "i", "j", and "!". */
-static void
-DotSection(void)
-{
- InDotSection = !InDotSection;
-}
-
-/* |- asb adx ady bchar achar SEAC |- */
-/* Standard Encoding Accented Character. */
-static void
-Seac(double asb, double adx, double ady,
- unsigned char bchar, unsigned char achar)
-{
- int Code;
- struct segment *mypath;
-
- /* Move adx - asb, ady over and up from base char's sbpoint. */
- /* (We use adx - asb to counteract the accents sb shift.) */
- /* The variables accentoffsetX/Y modify sidebearingX/Y in Sbw(). */
- /* Note that these incorporate the base character's sidebearing shift by */
- /* using the current sidebearingX, Y values. */
- accentoffsetX = sidebearingX + adx - asb;
- accentoffsetY = sidebearingY + ady;
-
- /* Set path = NULL to avoid complaints from Sbw(). */
- path = NULL;
-
- /* Go find the CharString for the accent's code via an upcall */
- CharStringP = GetType1CharString((psfont *)Environment, achar);
- StartDecrypt();
-
- ClearStack();
- ClearPSFakeStack();
- ClearCallStack();
-
- for (;;) {
- if (!DoRead(&Code)) break;
- Decode(Code);
- if (errflag) return;
- }
- /* Copy snapped path to mypath and set path to NULL as above. */
- mypath = Snap(path);
- path = NULL;
-
- /* We must reset these to null now. */
- accentoffsetX = accentoffsetY = 0;
-
- /* go find the CharString for the base char's code via an upcall */
- CharStringP = GetType1CharString((psfont *)Environment, bchar);
- StartDecrypt();
-
- ClearStack();
- ClearPSFakeStack();
- ClearCallStack();
-
- FinitStems();
- InitStems();
-
- for (;;) {
- if (!DoRead(&Code)) break;
- Decode(Code);
- if (errflag) return;
- }
- path = Join(mypath, path);
-}
-
-
-/* |- sbx sby wx wy SBW |- */
-/* Set the left sidebearing point to (sbx,sby), */
-/* set the character width vector to (wx,wy). */
-static void
-Sbw(double sbx, double sby, double wx, double wy)
-{
- escapementX = wx; /* Character width vector */
- escapementY = wy;
-
- /* Sidebearing values are sbx, sby args, plus accent offset from Seac(). */
- sidebearingX = sbx + accentoffsetX;
- sidebearingY = sby + accentoffsetY;
-
- path = Join(path, Loc(CharSpace, sidebearingX, sidebearingY));
- if (ProcessHints) {currx = sidebearingX; curry = sidebearingY;}
-}
-
- /* num1 num2 DIV quotient */
-/* Behaves like DIV in the PostScript language */
-static double
-Div(double num1, double num2)
-{
- return(num1 / num2);
-}
-
-/*
- The following four subroutines (FlxProc, FlxProc1, FlxProc2, and
- HintReplace) are C versions of the OtherSubrs Programs, which were
- were published in the Adobe Type 1 Font Format book.
-
- The Flex outline fragment is described by
- c1: (x0, y0) = c3: (x0, yshrink(y0)) or (xshrink(x0), y0)
- " (x1, y1) = " (x1, yshrink(y1)) or (xshrink(x1), y1)
- " (x2, y2) - reference point
- c2: (x0, y0) = c4: (x0, yshrink(y0)) or (xshrink(x0), y0)
- " (x1, y1) = " (x1, yshrink(y1)) or (xshrink(x1), y1)
- " (x2, y2) = " (x2, y2), rightmost endpoint
- c3: (x0, y0) - control point, 1st Bezier curve
- " (x1, y1) - control point, -"-
- " (x2, y2) - end point, -"-
- c4: (x0, y0) - control point, 2nd Bezier curve
- " (x1, y1) - control point, -"-
- " (x2, y2) - end point, -"-
- ep: (epY, epX) - final endpoint (should be same as c4: (x2, y2))
- idmin - minimum Flex height (1/100 pixel) at which to render curves
-*/
-
-#define dtransform(dxusr,dyusr,dxdev,dydev) { \
- register struct segment *point = Loc(CharSpace, dxusr, dyusr); \
- QueryLoc(point, IDENTITY, dxdev, dydev); \
- Destroy(point); \
-}
-
-#define itransform(xdev,ydev,xusr,yusr) { \
- register struct segment *point = Loc(IDENTITY, xdev, ydev); \
- QueryLoc(point, CharSpace, xusr, yusr); \
- Destroy(point); \
-}
-
-#define transform(xusr,yusr,xdev,ydev) dtransform(xusr,yusr,xdev,ydev)
-
-#define PaintType (0)
-
-#define lineto(x,y) { \
- struct segment *CurrentPoint; \
- double CurrentX, CurrentY; \
- CurrentPoint = Phantom(path); \
- QueryLoc(CurrentPoint, CharSpace, &CurrentX, &CurrentY); \
- Destroy(CurrentPoint); \
- RLineTo(x - CurrentX, y - CurrentY); \
-}
-
-#define curveto(x0,y0,x1,y1,x2,y2) { \
- struct segment *CurrentPoint; \
- double CurrentX, CurrentY; \
- CurrentPoint = Phantom(path); \
- QueryLoc(CurrentPoint, CharSpace, &CurrentX, &CurrentY); \
- Destroy(CurrentPoint); \
- RRCurveTo(x0 - CurrentX, y0 - CurrentY, x1 - x0, y1 - y0, x2 - x1, y2 - y1); \
-}
-
-#define xshrink(x) ((x - c4x2) * shrink +c4x2)
-#define yshrink(y) ((y - c4y2) * shrink +c4y2)
-
-#define PickCoords(flag) \
- if (flag) { /* Pick "shrunk" coordinates */ \
- x0 = c1x0; y0 = c1y0; \
- x1 = c1x1; y1 = c1y1; \
- x2 = c1x2; y2 = c1y2; \
- x3 = c2x0; y3 = c2y0; \
- x4 = c2x1; y4 = c2y1; \
- x5 = c2x2; y5 = c2y2; \
- } else { /* Pick original coordinates */ \
- x0 = c3x0; y0 = c3y0; \
- x1 = c3x1; y1 = c3y1; \
- x2 = c3x2; y2 = c3y2; \
- x3 = c4x0; y3 = c4y0; \
- x4 = c4x1; y4 = c4y1; \
- x5 = c4x2; y5 = c4y2; \
- }
-
-/* FlxProc() = OtherSubrs[0]; Main part of Flex */
-/* Calling sequence: 'idmin epX epY 3 0 callothersubr' */
-/* Computes Flex values, and renders the Flex path, */
-/* and returns (leaves) ending coordinates on stack */
-static void
-FlxProc(double c1x2, double c1y2, double c3x0, double c3y0,
- double c3x1, double c3y1, double c3x2, double c3y2,
- double c4x0, double c4y0, double c4x1, double c4y1,
- double c4x2, double c4y2, double epY, double epX, int idmin)
-{
- double dmin;
- double c1x0, c1y0, c1x1, c1y1;
- double c2x0, c2y0, c2x1, c2y1, c2x2, c2y2;
- char yflag;
- double x0, y0, x1, y1, x2, y2, x3, y3, x4, y4, x5, y5;
- double cxx, cyx, cxy, cyy; /* Transformation matrix */
- int flipXY;
- double x, y;
- double erosion = 1; /* Device parameter */
- /* Erosion may have different value specified in 'internaldict' */
- double shrink;
- double dX, dY;
- char erode;
- double eShift;
- double cx, cy;
- double ex, ey;
-
- c1x0 = c1y0 = c1x1 = c1y1 = c2x0 = c2y0 = c2x1 = c2y1 = c2x2 = c2y2 = 0.0;
-
- Destroy(path);
- path = FlxOldPath; /* Restore previous path (stored in FlxProc1) */
-
- if (ProcessHints) {
- dmin = ABS(idmin) / 100.0; /* Minimum Flex height in pixels */
-
- c2x2 = c4x2; c2y2 = c4y2; /* Point c2 = c4 */
-
- yflag = FABS(c1y2 - c3y2) > FABS(c1x2 - c3x2); /* Flex horizontal? */
-
- QuerySpace(CharSpace, &cxx, &cyx, &cxy, &cyy); /* Transformation matrix */
-
- if (FABS(cxx) < 0.00001 || FABS(cyy) < 0.00001)
- flipXY = -1; /* Char on side */
- else if (FABS(cyx) < 0.00001 || FABS(cxy) < 0.00001)
- flipXY = 1; /* Char upright */
- else
- flipXY = 0; /* Char at angle */
-
- if (yflag) { /* Flex horizontal */
- if (flipXY == 0 || c3y2 == c4y2) { /* Char at angle or Flex height = 0 */
- PickCoords(FALSE); /* Pick original control points */
- } else {
- shrink = FABS((c1y2 - c4y2) / (c3y2 - c4y2)); /* Slope */
-
- c1x0 = c3x0; c1y0 = yshrink(c3y0);
- c1x1 = c3x1; c1y1 = yshrink(c3y1);
- c2x0 = c4x0; c2y0 = yshrink(c4y0);
- c2x1 = c4x1; c2y1 = yshrink(c4y1);
-
- dtransform(0.0, ROUND(c3y2-c1y2), &x, &y); /* Flex height in pixels */
- dY = FABS((flipXY == 1) ? y : x);
- PickCoords(dY < dmin); /* If Flex small, pick 'shrunk' control points */
-
- if (FABS(y2 - c1y2) > 0.001) { /* Flex 'non-zero'? */
- transform(c1x2, c1y2, &x, &y);
-
- if (flipXY == 1) {
- cx = x; cy = y;
- } else {
- cx = y; cy = x;
- }
-
- dtransform(0.0, ROUND(y2-c1y2), &x, &y);
- dY = (flipXY == 1) ? y : x;
- if (ROUND(dY) != 0)
- dY = ROUND(dY);
- else
- dY = (dY < 0) ? -1 : 1;
-
- erode = PaintType != 2 && erosion >= 0.5;
- if (erode)
- cy -= 0.5;
- ey = cy + dY;
- ey = CEIL(ey) - ey;
- ey = ey + FLOOR(cy + dY);
- if (erode)
- ey += 0.5;
-
- if (flipXY == 1) {
- itransform(cx, ey, &x, &y);
- } else {
- itransform(ey, cx, &x, &y);
- }
-
- eShift = y - y2;
- y1 += eShift;
- y2 += eShift;
- y3 += eShift;
- }
- }
- } else { /* Flex vertical */
- if (flipXY == 0 || c3x2 == c4x2) { /* Char at angle or Flex height = 0 */
- PickCoords(FALSE); /* Pick original control points */
- } else {
- shrink = FABS((c1x2 - c4x2) / (c3x2 - c4x2)); /* Slope */
-
- c1x0 = xshrink(c3x0); c1y0 = c3y0;
- c1x1 = xshrink(c3x1); c1y1 = c3y1;
- c2x0 = xshrink(c4x0); c2y0 = c4y0;
- c2x1 = xshrink(c4x1); c2y1 = c4y1;
-
- dtransform(ROUND(c3x2 - c1x2), 0.0, &x, &y); /* Flex height in pixels */
- dX = FABS((flipXY == -1) ? y : x);
- PickCoords(dX < dmin); /* If Flex small, pick 'shrunk' control points */
-
- if (FABS(x2 - c1x2) > 0.001) {
- transform(c1x2, c1y2, &x, &y);
- if (flipXY == -1) {
- cx = y; cy = x;
- } else {
- cx = x; cy = y;
- }
-
- dtransform(ROUND(x2-c1x2), 0.0, &x, &y);
- dX = (flipXY == -1) ? y : x;
- if (ROUND(dX) != 0)
- dX = ROUND(dX);
- else
- dX = (dX < 0) ? -1 : 1;
-
- erode = PaintType != 2 && erosion >= 0.5;
- if (erode)
- cx -= 0.5;
- ex = cx + dX;
- ex = CEIL(ex) - ex;
- ex = ex + FLOOR(cx + dX);
- if (erode)
- ex += 0.5;
-
- if (flipXY == -1) {
- itransform(cy, ex, &x, &y);
- } else {
- itransform(ex, cy, &x, &y);
- }
-
- eShift = x - x2;
- x1 += eShift;
- x2 += eShift;
- x3 += eShift;
- }
- }
- }
-
- if (x2 == x5 || y2 == y5) {
- lineto(x5, y5);
- } else {
- curveto(x0, y0, x1, y1, x2, y2);
- curveto(x3, y3, x4, y4, x5, y5);
- }
- } else { /* ProcessHints is off */
- PickCoords(FALSE); /* Pick original control points */
- curveto(x0, y0, x1, y1, x2, y2);
- curveto(x3, y3, x4, y4, x5, y5);
- }
-
- PSFakePush(epY);
- PSFakePush(epX);
-}
-
-/* FlxProc1() = OtherSubrs[1]; Part of Flex */
-/* Calling sequence: '0 1 callothersubr' */
-/* Saves and clears path, then restores currentpoint */
-static void
-FlxProc1(void)
-{
- struct segment *CurrentPoint;
-
- CurrentPoint = Phantom(path);
-
- FlxOldPath = path;
- path = CurrentPoint;
-}
-
-/* FlxProc2() = OtherSubrs[2]; Part of Flex */
-/* Calling sequence: '0 2 callothersubr' */
-/* Returns currentpoint on stack */
-static void
-FlxProc2(void)
-{
- struct segment *CurrentPoint;
- double CurrentX, CurrentY;
-
- CurrentPoint = Phantom(path);
- QueryLoc(CurrentPoint, CharSpace, &CurrentX, &CurrentY);
- Destroy(CurrentPoint);
-
- /* Push CurrentPoint on fake PostScript stack */
- PSFakePush(CurrentX);
- PSFakePush(CurrentY);
-}
-
-/* HintReplace() = OtherSubrs[3]; Hint Replacement */
-/* Calling sequence: 'subr# 1 3 callothersubr pop callsubr' */
-/* Reinitializes stem hint structure */
-static void
-HintReplace(void)
-{
- /* Effectively retire the current stems, but keep them around for */
- /* revhint use in case we are in a stem when we replace hints. */
- currstartstem = numstems;
-
- /* 'subr#' is left on PostScript stack (for 'pop callsubr') */
-}
-
-/* arg1 ... argn n othersubr# CALLOTHERSUBR - */
-/* Make calls on the PostScript interpreter (or call equivalent C code) */
-/* NOTE: The n arguments have been pushed on the fake PostScript stack */
-static void
-CallOtherSubr(int othersubrno)
-{
- switch(othersubrno) {
- case 0: /* OtherSubrs[0]; Main part of Flex */
- if (PSFakeTop < 16) Error;
- ClearPSFakeStack();
- FlxProc(
- PSFakeStack[0], PSFakeStack[1], PSFakeStack[2], PSFakeStack[3],
- PSFakeStack[4], PSFakeStack[5], PSFakeStack[6], PSFakeStack[7],
- PSFakeStack[8], PSFakeStack[9], PSFakeStack[10], PSFakeStack[11],
- PSFakeStack[12], PSFakeStack[13], PSFakeStack[14], PSFakeStack[15],
- (int) PSFakeStack[16]
- );
- break;
- case 1: /* OtherSubrs[1]; Part of Flex */
- FlxProc1();
- break;
- case 2: /* OtherSubrs[2]; Part of Flex */
- FlxProc2();
- break;
- case 3: /* OtherSubrs[3]; Hint Replacement */
- HintReplace();
- break;
- default: { /* call OtherSubrs[4] or higher if PostScript is present */
- }
- }
-}
-
-/* |- x y SETCURRENTPOINT |- */
-/* Sets the current point to (x,y) in absolute */
-/* character space coordinates without per- */
-/* forming a CharString MOVETO command */
-static void
-SetCurrentPoint(double x, double y)
-{
- currx = x;
- curry = y;
-}
-
-/* The Type1Char routine for use by PostScript. */
-/************************************************/
-struct xobject *
-Type1Char(char *env, struct XYspace *S, psobj *charstrP, psobj *subrsP,
- psobj *osubrsP,
- struct blues_struct *bluesP, /* FontID's ptr to the blues struct */
- int *modeP)
-{
- int Code;
-
- path = NULL;
- errflag = FALSE;
-
- /* Make parameters available to all Type1 routines */
- Environment = env;
- CharSpace = S; /* used when creating path elements */
- CharStringP = charstrP;
- SubrsP = subrsP;
-
- blues = bluesP;
-
- /* compute the alignment zones */
- ComputeAlignmentZones();
-
- StartDecrypt();
-
- ClearStack();
- ClearPSFakeStack();
- ClearCallStack();
-
- InitStems();
-
- currx = curry = 0;
- escapementX = escapementY = 0;
- sidebearingX = sidebearingY = 0;
- accentoffsetX = accentoffsetY = 0;
- wsoffsetX = wsoffsetY = 0; /* No shift to preserve whitspace. */
- wsset = 0; /* wsoffsetX,Y haven't been set yet. */
-
- for (;;) {
- if (!DoRead(&Code)) break;
- Decode(Code);
- if (errflag) break;
- }
-
- FinitStems();
-
-
- /* Clean up if an error has occurred */
- if (errflag) {
- if (path != NULL) {
- Destroy(path); /* Reclaim storage */
- path = NULL; /* Indicate that character could not be built */
- }
- }
-
- return((struct xobject *) path);
-}
diff --git a/libXfont/src/Type1/util.c b/libXfont/src/Type1/util.c
deleted file mode 100644
index 2eefc11df..000000000
--- a/libXfont/src/Type1/util.c
+++ /dev/null
@@ -1,194 +0,0 @@
-/* $Xorg: util.c,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/util.c,v 1.5 1999/08/21 13:47:53 dawes Exp $ */
-/* Author: Katherine A. Hitchcock IBM Almaden Research Laboratory */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifndef FONTMODULE
-#include <stdio.h>
-#else
-#include "Xdefs.h"
-#include "Xmd.h"
-#include "xf86_ansic.h"
-#endif
-#include "util.h"
-#include <X11/fonts/fontmisc.h> /* for xalloc/xfree */
-
-static char *vm_base = NULL; /* Start of virtual memory area */
- char *vm_next = NULL; /* Pointer to first free byte */
- long vm_free = 0; /* Count of free bytes */
- long vm_size = 0; /* Total size of memory */
-
-/*
- * Initialize memory.
- */
-boolean
-vm_init(int cnt)
-{
- vm_next = vm_base = (char *)xalloc (cnt);
-
- if (vm_base != NULL) {
- vm_free = cnt;
- vm_size = cnt;
- return(TRUE);
- }
- else
- return(FALSE);
-
-}
-
-char *
-vm_alloc(int bytes)
-{
- char *answer;
-
- /* Round to next word multiple */
- bytes = (bytes + 7) & ~7;
-
- /* Allocate the space, if it is available */
- if (bytes > 0 && bytes <= vm_free) {
- answer = vm_next;
- vm_free -= bytes;
- vm_next += bytes;
- }
- else
- answer = NULL;
-
- return(answer);
-}
-
-/*
- * Format an Integer object
- */
-void
-objFormatInteger(psobj *objP, int value)
-{
- if (objP != NULL) {
- objP->type = OBJ_INTEGER;
- objP->len = 0;
- objP->data.integer = value;
- }
-}
-
-/*
- * Format a Real object
- */
-void
-objFormatReal(psobj *objP, float value)
-{
- if (objP != NULL) {
- objP->type = OBJ_REAL;
- objP->len = 0;
- objP->data.real = value;
- }
-}
-
-/*
- * Format a Boolean object
- */
-void
-objFormatBoolean(psobj *objP, boolean value)
-{
- if (objP != NULL) {
- objP->type = OBJ_BOOLEAN;
- objP->len = 0;
- objP->data.boolean = value;
- }
-}
-
-/*
- * Format an Encoding object
- */
-void
-objFormatEncoding(psobj *objP, int length, psobj *valueP)
-{
- if (objP != NULL) {
- objP->type = OBJ_ENCODING;
- objP->len = length;
- objP->data.arrayP = valueP;
- }
-}
-
-/*
- * Format an Array object
- */
-void
-objFormatArray(psobj *objP, int length, psobj *valueP)
-{
- if (objP != NULL) {
- objP->type = OBJ_ARRAY;
- objP->len = length;
- objP->data.arrayP = valueP;
- }
-}
-
-
-/*
- * Format a String object
- */
-void
-objFormatString(psobj *objP, int length, char *valueP)
-{
- if (objP != NULL) {
- objP->type = OBJ_STRING;
- objP->len = length;
- objP->data.valueP = valueP;
- }
-}
-
-/*
- * Format a Name object
- */
-void
-objFormatName(psobj *objP, int length, char *valueP)
-{
- if (objP != NULL) {
- objP->type = OBJ_NAME;
- objP->len = length;
- objP->data.nameP = valueP;
- }
-}
-
-/*
- * Format a File object
- */
-void
-objFormatFile(psobj *objP, FILE *valueP)
-{
- if (objP != NULL) {
- objP->type = OBJ_FILE;
- objP->len = 0;
- objP->data.fileP = valueP;
- }
-}
-
diff --git a/libXfont/src/Type1/util.h b/libXfont/src/Type1/util.h
deleted file mode 100644
index 25ba5720c..000000000
--- a/libXfont/src/Type1/util.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/* $Xorg: util.h,v 1.3 2000/08/17 19:46:34 cpqbld Exp $ */
-/* Copyright International Business Machines,Corp. 1991
- * All Rights Reserved
- *
- * License to use, copy, modify, and distribute this software
- * and its documentation for any purpose and without fee is
- * hereby granted, 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 IBM not be used in advertising or
- * publicity pertaining to distribution of the software without
- * specific, written prior permission.
- *
- * IBM PROVIDES THIS SOFTWARE "AS IS", WITHOUT ANY WARRANTIES
- * OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT
- * LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF
- * THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND
- * PERFORMANCE OF THE SOFTWARE, INCLUDING ANY DUTY TO SUPPORT
- * OR MAINTAIN, BELONGS TO THE LICENSEE. SHOULD ANY PORTION OF
- * THE SOFTWARE PROVE DEFECTIVE, THE LICENSEE (NOT IBM) ASSUMES
- * THE ENTIRE COST OF ALL SERVICING, REPAIR AND CORRECTION. IN
- * NO EVENT SHALL IBM 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.
- */
-/* $XFree86: xc/lib/font/Type1/util.h,v 1.4 1999/08/22 08:58:55 dawes Exp $ */
-
-#ifndef UTIL_H
-#define UTIL_H
-
-#ifndef boolean
-typedef int boolean;
-#endif
-
-#ifndef TRUE
-#define TRUE (1)
-#endif
-
-#ifndef FALSE
-#define FALSE (0)
-#endif
-
-/***================================================================***/
-/* Portable definitions for 2's complement machines.
- * NOTE: These really should be based on PostScript types,
- * for example, sizeof(ps_integer), or sizeof(ps_unsigned)
- */
-#define MAX_ULONG (~(unsigned long)(0))
-/* This code is portable, assuming K&R C and 2's complement arithmetic */
-#define MAX_INTEGER \
- ((long)((((unsigned long) 1)<<(sizeof(unsigned long)*8-1))-1))
-#define MIN_INTEGER ((-MAX_INTEGER)-1)
-
-#define MAX_ARRAY_CNT (65535)
-#define MAX_DICT_CNT (65535)
-#define MAX_STRING_LEN (65535)
-#define MAX_NAME_LEN (128)
-
-#ifndef MIN
-#define MIN(a,b) (((a)<(b)) ? a : b )
-#endif
-
-/***================================================================***/
-/* Routines for managing virtual memory */
-/***================================================================***/
-
-#define VM_SIZE (50 * 1024)
-
-extern boolean vm_init ( int cnt );
-extern long vm_free;
-extern long vm_size;
-extern char *vm_next;
-extern char *vm_alloc ( int bytes );
-
-/***================================================================***/
-/* Macros for managing virtual memory */
-/***================================================================***/
-#define vm_next_byte() (vm_next)
-#define vm_free_bytes() (vm_free)
-#define vm_avail(B) (B <= vm_free)
-
-
-
-/***================================================================***/
-/* Types of PostScript objects */
-/***================================================================***/
-#define OBJ_INTEGER (0)
-#define OBJ_REAL (1)
-#define OBJ_BOOLEAN (2)
-#define OBJ_ARRAY (3)
-#define OBJ_STRING (4)
-#define OBJ_NAME (5)
-#define OBJ_FILE (6)
-#define OBJ_ENCODING (7)
-
-/***================================================================***/
-/* Value of PostScript objects */
-/***================================================================***/
-typedef union ps_value {
- char *valueP; /* value pointer for unspecified type */
- int value; /* value for unspecified type */
- int integer; /* when type is OBJ_INTEGER */
- float real; /* when type is OBJ_REAL */
- int boolean; /* when type is OBJ_BOOLEAN */
- struct ps_obj *arrayP; /* when type is OBJ_ARRAY */
- unsigned char *stringP; /* when type is OBJ_STRING */
- char *nameP; /* when type is OBJ_NAME */
- FILE *fileP; /* when type is OBJ_FILE */
-} psvalue;
-
-/***================================================================***/
-/* Definition of a PostScript object */
-/***================================================================***/
-typedef struct ps_obj {
- char type;
- char unused;
- unsigned short len;
- union ps_value data;
-} psobj;
-
-/***================================================================***/
-/* Definition of a PostScript Dictionary Entry */
-/***================================================================***/
-typedef struct ps_dict {
- psobj key;
- psobj value;
-} psdict;
-
-/***================================================================***/
-/* Macros for testing type of PostScript objects */
-/***================================================================***/
-#define objIsInteger(o) ((o).type == OBJ_INTEGER)
-#define objIsReal(o) ((o).type == OBJ_REAL)
-#define objIsBoolean(o) ((o).type == OBJ_BOOLEAN)
-#define objIsArray(o) ((o).type == OBJ_ARRAY)
-#define objIsString(o) ((o).type == OBJ_STRING)
-#define objIsName(o) ((o).type == OBJ_NAME)
-#define objIsFile(o) ((o).type == OBJ_FILE)
-
-/***================================================================***/
-/* Macros for setting type of PostScript objects */
-/***================================================================***/
-#define objSetInteger(o) ((o).type = OBJ_INTEGER)
-#define objSetReal(o) ((o).type = OBJ_REAL)
-#define objSetBoolean(o) ((o).type = OBJ_BOOLEAN)
-#define objSetArray(o) ((o).type = OBJ_ARRAY)
-#define objSetString(o) ((o).type = OBJ_STRING)
-#define objSetName(o) ((o).type = OBJ_NAME)
-#define objSetFile(o) ((o).type = OBJ_FILE)
-
-/***================================================================***/
-/* Macros for testing type of PostScript objects (pointer access) */
-/***================================================================***/
-#define objPIsInteger(o) ((o)->type == OBJ_INTEGER)
-#define objPIsReal(o) ((o)->type == OBJ_REAL)
-#define objPIsBoolean(o) ((o)->type == OBJ_BOOLEAN)
-#define objPIsArray(o) ((o)->type == OBJ_ARRAY)
-#define objPIsString(o) ((o)->type == OBJ_STRING)
-#define objPIsName(o) ((o)->type == OBJ_NAME)
-#define objPIsFile(o) ((o)->type == OBJ_FILE)
-
-/***================================================================***/
-/* Macros for setting type of PostScript objects (pointer access) */
-/***================================================================***/
-#define objPSetInteger(o) ((o)->type = OBJ_INTEGER)
-#define objPSetReal(o) ((o)->type = OBJ_REAL)
-#define objPSetBoolean(o) ((o)->type = OBJ_BOOLEAN)
-#define objPSetArray(o) ((o)->type = OBJ_ARRAY)
-#define objPSetString(o) ((o)->type = OBJ_STRING)
-#define objPSetName(o) ((o)->type = OBJ_NAME)
-#define objPSetFile(o) ((o)->type = OBJ_FILE)
-
-/***================================================================***/
-/* Prototypes of object formatting functions */
-/***================================================================***/
-extern void objFormatInteger ( psobj *objP, int value );
-extern void objFormatReal ( psobj *objP, float value );
-extern void objFormatBoolean ( psobj *objP, boolean value );
-extern void objFormatEncoding ( psobj *objP, int length, psobj *valueP );
-extern void objFormatArray ( psobj *objP, int length, psobj *valueP );
-extern void objFormatString ( psobj *objP, int length, char *valueP );
-extern void objFormatName ( psobj *objP, int length, char *valueP );
-extern void objFormatFile ( psobj *objP, FILE *valueP );
-
-extern void T1InitStdProps(void);
-#endif
diff --git a/libXfont/src/bitmap/Makefile.in b/libXfont/src/bitmap/Makefile.in
index 7bd5fe3ad..7ccd5819d 100644
--- a/libXfont/src/bitmap/Makefile.in
+++ b/libXfont/src/bitmap/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -48,7 +48,7 @@ am_libbitmap_la_OBJECTS = bdfread.lo bdfutils.lo bitmap.lo \
bitmapfunc.lo bitmaputil.lo bitscale.lo fontink.lo pcfread.lo \
pcfwrite.lo snfread.lo
libbitmap_la_OBJECTS = $(am_libbitmap_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include/X11/fonts
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -79,22 +79,18 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENCODINGSDIR = @ENCODINGSDIR@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
FREETYPE_LIBS = @FREETYPE_LIBS@
FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
@@ -104,17 +100,24 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATH_LIBS = @MATH_LIBS@
MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -124,6 +127,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -137,8 +141,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -171,6 +174,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -183,6 +187,7 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = \
@@ -211,8 +216,8 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -297,8 +302,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -310,8 +315,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -321,13 +326,12 @@ ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
diff --git a/libXfont/src/bitmap/bdfread.c b/libXfont/src/bitmap/bdfread.c
index a6f0c1e7e..083565358 100644
--- a/libXfont/src/bitmap/bdfread.c
+++ b/libXfont/src/bitmap/bdfread.c
@@ -56,9 +56,7 @@ from The Open Group.
#include <config.h>
#endif
-#ifndef FONTMODULE
#include <ctype.h>
-#endif
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/fontutil.h>
/* use bitmap structure */
@@ -102,7 +100,7 @@ bdfReadBitmap(CharInfoPtr pCI, FontFilePtr file, int bit, int byte,
widthBytes = BYTES_PER_ROW(widthBits, glyph);
if (widthBytes * height > 0) {
- picture = (unsigned char *) xalloc(widthBytes * height);
+ picture = malloc(widthBytes * height);
if (!picture) {
bdfError("Couldn't allocate picture (%d*%d)\n", widthBytes, height);
goto BAILOUT;
@@ -192,7 +190,7 @@ bdfReadBitmap(CharInfoPtr pCI, FontFilePtr file, int bit, int byte,
return (TRUE);
BAILOUT:
if (picture)
- xfree(picture);
+ free(picture);
pCI->bits = NULL;
return (FALSE);
}
@@ -229,25 +227,25 @@ bdfFreeFontBits(FontPtr pFont)
bitmapFont = (BitmapFontPtr) pFont->fontPrivate;
bitmapExtra = (BitmapExtraPtr) bitmapFont->bitmapExtra;
- xfree(bitmapFont->ink_metrics);
+ free(bitmapFont->ink_metrics);
if(bitmapFont->encoding) {
nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) *
(pFont->info.lastRow - pFont->info.firstRow + 1);
for(i=0; i<NUM_SEGMENTS(nencoding); i++)
- xfree(bitmapFont->encoding[i]);
+ free(bitmapFont->encoding[i]);
}
- xfree(bitmapFont->encoding);
+ free(bitmapFont->encoding);
for (i = 0; i < bitmapFont->num_chars; i++)
- xfree(bitmapFont->metrics[i].bits);
- xfree(bitmapFont->metrics);
+ free(bitmapFont->metrics[i].bits);
+ free(bitmapFont->metrics);
if (bitmapExtra)
{
- xfree (bitmapExtra->glyphNames);
- xfree (bitmapExtra->sWidths);
- xfree (bitmapExtra);
+ free (bitmapExtra->glyphNames);
+ free (bitmapExtra->sWidths);
+ free (bitmapExtra);
}
- xfree(pFont->info.props);
- xfree(bitmapFont);
+ free(pFont->info.props);
+ free(bitmapFont);
}
@@ -299,17 +297,16 @@ bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState,
sizeof(CharInfoRec));
goto BAILOUT;
}
- ci = (CharInfoPtr) xalloc(nchars * sizeof(CharInfoRec));
+ ci = calloc(nchars, sizeof(CharInfoRec));
if (!ci) {
bdfError("Couldn't allocate pCI (%d*%d)\n", nchars,
sizeof(CharInfoRec));
goto BAILOUT;
}
- bzero((char *)ci, nchars * sizeof(CharInfoRec));
bitmapFont->metrics = ci;
if (bitmapExtra) {
- bitmapExtra->glyphNames = (Atom *) xalloc(nchars * sizeof(Atom));
+ bitmapExtra->glyphNames = malloc(nchars * sizeof(Atom));
if (!bitmapExtra->glyphNames) {
bdfError("Couldn't allocate glyphNames (%d*%d)\n",
nchars, sizeof(Atom));
@@ -317,7 +314,7 @@ bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState,
}
}
if (bitmapExtra) {
- bitmapExtra->sWidths = (int *) xalloc(nchars * sizeof(int));
+ bitmapExtra->sWidths = malloc(nchars * sizeof(int));
if (!bitmapExtra->sWidths) {
bdfError("Couldn't allocate sWidth (%d *%d)\n",
nchars, sizeof(int));
@@ -383,8 +380,7 @@ bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState,
if (char_col > pFont->info.lastCol)
pFont->info.lastCol = char_col;
if (bdfEncoding[char_row] == (CharInfoPtr *) NULL) {
- bdfEncoding[char_row] =
- (CharInfoPtr *) xalloc(256 * sizeof(CharInfoPtr));
+ bdfEncoding[char_row] = malloc(256 * sizeof(CharInfoPtr));
if (!bdfEncoding[char_row]) {
bdfError("Couldn't allocate row %d of encoding (%d*%d)\n",
char_row, INDICES, sizeof(CharInfoPtr));
@@ -493,9 +489,7 @@ bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState,
nencoding = (pFont->info.lastRow - pFont->info.firstRow + 1) *
(pFont->info.lastCol - pFont->info.firstCol + 1);
- bitmapFont->encoding =
- (CharInfoPtr **) xcalloc(NUM_SEGMENTS(nencoding),
- sizeof(CharInfoPtr*));
+ bitmapFont->encoding = calloc(NUM_SEGMENTS(nencoding),sizeof(CharInfoPtr*));
if (!bitmapFont->encoding) {
bdfError("Couldn't allocate ppCI (%d,%d)\n",
NUM_SEGMENTS(nencoding),
@@ -519,8 +513,8 @@ bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState,
else {
if (!bitmapFont->encoding[SEGMENT_MAJOR(i)]) {
bitmapFont->encoding[SEGMENT_MAJOR(i)]=
- (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE,
- sizeof(CharInfoPtr));
+ calloc(BITMAP_FONT_SEGMENT_SIZE,
+ sizeof(CharInfoPtr));
if (!bitmapFont->encoding[SEGMENT_MAJOR(i)])
goto BAILOUT;
}
@@ -533,12 +527,12 @@ bdfReadCharacters(FontFilePtr file, FontPtr pFont, bdfFileState *pState,
}
for (i = 0; i < 256; i++)
if (bdfEncoding[i])
- xfree(bdfEncoding[i]);
+ free(bdfEncoding[i]);
return (TRUE);
BAILOUT:
for (i = 0; i < 256; i++)
if (bdfEncoding[i])
- xfree(bdfEncoding[i]);
+ free(bdfEncoding[i]);
/* bdfFreeFontBits will clean up the rest */
return (FALSE);
}
@@ -615,21 +609,20 @@ bdfReadProperties(FontFilePtr file, FontPtr pFont, bdfFileState *pState)
pFont->info.props = NULL;
pFont->info.nprops = 0;
- stringProps = (char *) xalloc((nProps + BDF_GENPROPS) * sizeof(char));
+ stringProps = malloc((nProps + BDF_GENPROPS) * sizeof(char));
pFont->info.isStringProp = stringProps;
if (stringProps == NULL) {
bdfError("Couldn't allocate stringProps (%d*%d)\n",
(nProps + BDF_GENPROPS), sizeof(Bool));
goto BAILOUT;
}
- pFont->info.props = props = (FontPropPtr) xalloc((nProps + BDF_GENPROPS) *
- sizeof(FontPropRec));
+ pFont->info.props = props = calloc(nProps + BDF_GENPROPS,
+ sizeof(FontPropRec));
if (props == NULL) {
bdfError("Couldn't allocate props (%d*%d)\n", nProps + BDF_GENPROPS,
sizeof(FontPropRec));
goto BAILOUT;
}
- bzero((char *)props, (nProps + BDF_GENPROPS) * sizeof(FontPropRec));
nextProp = 0;
props_left = nProps;
@@ -770,11 +763,11 @@ bdfReadProperties(FontFilePtr file, FontPtr pFont, bdfFileState *pState)
return (TRUE);
BAILOUT:
if (pFont->info.isStringProp) {
- xfree(pFont->info.isStringProp);
+ free(pFont->info.isStringProp);
pFont->info.isStringProp = NULL;
}
if (pFont->info.props) {
- xfree(pFont->info.props);
+ free(pFont->info.props);
pFont->info.props = NULL;
}
while (line && bdfIsPrefix(line, "ENDPROPERTIES"))
@@ -808,12 +801,11 @@ bdfReadFont(FontPtr pFont, FontFilePtr file,
if (!bdfReadHeader(file, &state))
goto BAILOUT;
- bitmapFont = (BitmapFontPtr) xalloc(sizeof(BitmapFontRec));
+ bitmapFont = calloc(1, sizeof(BitmapFontRec));
if (!bitmapFont) {
bdfError("Couldn't allocate bitmapFontRec (%d)\n", sizeof(BitmapFontRec));
goto BAILOUT;
}
- bzero((char *)bitmapFont, sizeof(BitmapFontRec));
pFont->fontPrivate = (pointer) bitmapFont;
bitmapFont->metrics = 0;
@@ -822,12 +814,11 @@ bdfReadFont(FontPtr pFont, FontFilePtr file,
bitmapFont->encoding = 0;
bitmapFont->pDefault = NULL;
- bitmapFont->bitmapExtra = (BitmapExtraPtr) xalloc(sizeof(BitmapExtraRec));
+ bitmapFont->bitmapExtra = calloc(1, sizeof(BitmapExtraRec));
if (!bitmapFont->bitmapExtra) {
bdfError("Couldn't allocate bitmapExtra (%d)\n", sizeof(BitmapExtraRec));
goto BAILOUT;
}
- bzero((char *)bitmapFont->bitmapExtra, sizeof(BitmapExtraRec));
bitmapFont->bitmapExtra->glyphNames = 0;
bitmapFont->bitmapExtra->sWidths = 0;
@@ -945,14 +936,14 @@ bdfPadToTerminal(FontPtr pFont)
new_size = BYTES_FOR_GLYPH(&new, pFont->glyph);
for (i = 0; i < bitmapFont->num_chars; i++) {
- new.bits = (char *) xalloc(new_size);
+ new.bits = malloc(new_size);
if (!new.bits) {
bdfError("Couldn't allocate bits (%d)\n", new_size);
return FALSE;
- }
+ }
FontCharReshape(pFont, &bitmapFont->metrics[i], &new);
new.metrics.attributes = bitmapFont->metrics[i].metrics.attributes;
- xfree(bitmapFont->metrics[i].bits);
+ free(bitmapFont->metrics[i].bits);
bitmapFont->metrics[i] = new;
}
bitmapExtra = bitmapFont->bitmapExtra;
diff --git a/libXfont/src/bitmap/bdfutils.c b/libXfont/src/bitmap/bdfutils.c
index a0c5ae949..17596c323 100644
--- a/libXfont/src/bitmap/bdfutils.c
+++ b/libXfont/src/bitmap/bdfutils.c
@@ -55,11 +55,9 @@ from The Open Group.
#include <config.h>
#endif
-#ifndef FONTMODULE
#include <ctype.h>
#include <stdio.h>
#include <stdarg.h>
-#endif
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/fontstruct.h>
@@ -176,7 +174,7 @@ bdfGetPropertyValue(char *s)
}
/* quoted string: strip outer quotes and undouble inner quotes */
s++;
- pp = p = (char *) xalloc((unsigned) strlen(s) + 1);
+ pp = p = malloc((unsigned) strlen(s) + 1);
if (pp == NULL) {
bdfError("Couldn't allocate property value string (%d)\n", strlen(s) + 1);
return None;
@@ -186,7 +184,7 @@ bdfGetPropertyValue(char *s)
if (*(s + 1) != '"') {
*p++ = 0;
atom = bdfForceMakeAtom(pp, NULL);
- xfree(pp);
+ free(pp);
return atom;
} else {
s++;
@@ -194,7 +192,7 @@ bdfGetPropertyValue(char *s)
}
*p++ = *s++;
}
- xfree (pp);
+ free (pp);
bdfError("unterminated quoted string property: %s\n", (pointer) orig_s);
return None;
}
diff --git a/libXfont/src/bitmap/bitmapfunc.c b/libXfont/src/bitmap/bitmapfunc.c
index e980dfbcc..80d7da19d 100644
--- a/libXfont/src/bitmap/bitmapfunc.c
+++ b/libXfont/src/bitmap/bitmapfunc.c
@@ -67,6 +67,7 @@ typedef struct _BitmapFileFunctions {
FontFilePtr /* file */ );
} BitmapFileFunctionsRec, *BitmapFileFunctionsPtr;
+static int BitmapGetRenderIndex(FontRendererPtr renderer);
/*
* the readers[] and renderers[] arrays must be in the same order,
@@ -104,9 +105,6 @@ static BitmapFileFunctionsRec readers[] = {
{ bdfReadFont, bdfReadFontInfo} ,
# endif
#endif
-#if XFONT_PCFFORMAT
- { pmfReadFont, pcfReadFontInfo} ,
-#endif
};
@@ -150,7 +148,7 @@ BitmapOpenBitmap (FontPathElementPtr fpe, FontPtr *ppFont, int flags,
FontFileClose (file);
if (ret != Successful) {
- xfree(pFont);
+ free(pFont);
} else {
*ppFont = pFont;
}
@@ -235,11 +233,6 @@ static FontRendererRec renderers[] = {
CAPABILITIES },
# endif
#endif
-#if XFONT_PCFFORMAT
- { ".pmf", 4, BitmapOpenBitmap, BitmapOpenScalable,
- BitmapGetInfoBitmap, BitmapGetInfoScalable, 0,
- CAPABILITIES }
-#endif
};
#define numRenderers (sizeof renderers / sizeof renderers[0])
@@ -258,7 +251,7 @@ BitmapRegisterFontFileFunctions (void)
* the font info reader, and the bitmap scaling routine. All users
* of this routine must be kept in step with the renderer array.
*/
-int
+static int
BitmapGetRenderIndex(FontRendererPtr renderer)
{
return renderer - renderers;
diff --git a/libXfont/src/bitmap/bitmaputil.c b/libXfont/src/bitmap/bitmaputil.c
index 3487f7f92..3a7bbc7a0 100644
--- a/libXfont/src/bitmap/bitmaputil.c
+++ b/libXfont/src/bitmap/bitmaputil.c
@@ -212,7 +212,7 @@ bitmapAddInkMetrics(FontPtr pFont)
int i;
bitmapFont = (BitmapFontPtr) pFont->fontPrivate;
- bitmapFont->ink_metrics = (xCharInfo *) xalloc(bitmapFont->num_chars * sizeof(xCharInfo));
+ bitmapFont->ink_metrics = malloc(bitmapFont->num_chars * sizeof(xCharInfo));
if (!bitmapFont->ink_metrics) {
fprintf(stderr, "Error: Couldn't allocate ink_metrics (%d*%ld)\n",
bitmapFont->num_chars, (unsigned long)sizeof(xCharInfo));
diff --git a/libXfont/src/bitmap/bitscale.c b/libXfont/src/bitmap/bitscale.c
index ffdbe1d3c..a4d991d3b 100644
--- a/libXfont/src/bitmap/bitscale.c
+++ b/libXfont/src/bitmap/bitscale.c
@@ -1,4 +1,3 @@
-/* $Xorg: bitscale.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */
/*
Copyright 1991, 1994, 1998 The Open Group
@@ -55,15 +54,7 @@ from The Open Group.
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
#include <X11/fonts/fontutil.h>
-#ifndef FONTMODULE
-#ifdef _XOPEN_SOURCE
#include <math.h>
-#else
-#define _XOPEN_SOURCE /* to get prototype for hypot on some systems */
-#include <math.h>
-#undef _XOPEN_SOURCE
-#endif
-#endif
#ifndef MAX
#define MAX(a,b) (((a)>(b)) ? a : b)
@@ -79,9 +70,6 @@ static void ScaleBitmap ( FontPtr pFont, CharInfoPtr opci,
static FontPtr BitmapScaleBitmaps(FontPtr pf, FontPtr opf,
double widthMult, double heightMult,
FontScalablePtr vals);
-static FontPtr PrinterScaleBitmaps(FontPtr pf, FontPtr opf,
- double widthMult, double heightMult,
- FontScalablePtr vals);
enum scaleType {
atom, truncate_atom, pixel_size, point_size, resolution_x,
@@ -96,50 +84,6 @@ typedef struct _fontProp {
enum scaleType type;
} fontProp;
-typedef FontPtr (*ScaleFunc) ( FontPtr /* pf */,
- FontPtr /* opf */,
- double /* widthMult */,
- double /* heightMult */,
- FontScalablePtr /* vals */);
-
-/* These next two arrays must be kept in step with the renderer array */
-static const ScaleFunc scale[] =
-{
-#if XFONT_PCFFORMAT
- BitmapScaleBitmaps,
- BitmapScaleBitmaps,
-# ifdef X_GZIP_FONT_COMPRESSION
- BitmapScaleBitmaps,
-# endif
-# ifdef X_BZIP2_FONT_COMPRESSION
- BitmapScaleBitmaps,
-# endif
-#endif
-#if XFONT_SNFFORMAT
- BitmapScaleBitmaps,
- BitmapScaleBitmaps,
-# ifdef X_GZIP_FONT_COMPRESSION
- BitmapScaleBitmaps,
-# endif
-# ifdef X_BZIP2_FONT_COMPRESSION
- BitmapScaleBitmaps,
-# endif
-#endif
-#if XFONT_BDFFORMAT
- BitmapScaleBitmaps,
- BitmapScaleBitmaps,
-# ifdef X_GZIP_FONT_COMPRESSION
- BitmapScaleBitmaps,
-# endif
-# ifdef X_BZIP2_FONT_COMPRESSION
- BitmapScaleBitmaps,
-# endif
-#endif
-#if XFONT_PCFFORMAT
- PrinterScaleBitmaps,
-#endif
-};
-
static FontEntryPtr FindBestToScale ( FontPathElementPtr fpe,
FontEntryPtr entry,
FontScalablePtr vals,
@@ -147,48 +91,6 @@ static FontEntryPtr FindBestToScale ( FontPathElementPtr fpe,
double *dxp, double *dyp,
double *sdxp, double *sdyp,
FontPathElementPtr *fpep );
-static FontEntryPtr FindPmfToScale ( FontPathElementPtr fpe,
- FontEntryPtr entry,
- FontScalablePtr vals,
- FontScalablePtr best,
- double *dxp, double *dyp,
- double *sdxp, double *sdyp,
- FontPathElementPtr *fpep );
-
-typedef FontEntryPtr (*FindToScale) (FontPathElementPtr fpe,
- FontEntryPtr entry,
- FontScalablePtr vals,
- FontScalablePtr best,
- double *dxp, double *dyp,
- double *sdxp, double *sdyp,
- FontPathElementPtr *fpep);
-static const FindToScale find_scale[] =
-{
-#if XFONT_PCFFORMAT
- FindBestToScale,
- FindBestToScale,
-#ifdef X_GZIP_FONT_COMPRESSION
- FindBestToScale,
-#endif
-#endif
-#if XFONT_SNFFORMAT
- FindBestToScale,
- FindBestToScale,
-#ifdef X_GZIP_FONT_COMPRESSION
- FindBestToScale,
-#endif
-#endif
-#if XFONT_BDFFORMAT
- FindBestToScale,
- FindBestToScale,
-#ifdef X_GZIP_FONT_COMPRESSION
- FindBestToScale,
-#endif
-#endif
-#if XFONT_PCFFORMAT
- FindPmfToScale,
-#endif
-};
static unsigned long bitscaleGeneration = 0; /* initialization flag */
@@ -262,9 +164,6 @@ static fontProp fontPropTable[] = {
{ "_ADOBE_POSTSCRIPT_FONTNAME", 0, unscaled }
};
-/* sleazy way to shut up the compiler */
-#define zerohack (enum scaleType)0
-
static fontProp rawFontPropTable[] = {
{ "RAW_MIN_SPACE", 0, },
{ "RAW_NORM_SPACE", 0, },
@@ -611,17 +510,7 @@ FindBestToScale(FontPathElementPtr fpe, FontEntryPtr entry,
the matrix appropriately */
vals->pixel_matrix[0] *= rescale_x;
vals->pixel_matrix[1] *= rescale_x;
-#ifdef NOTDEF
- /* This would force the pointsize and pixelsize fields in the
- FONT property to display as matrices to more accurately
- report the font being supplied. It might also break existing
- applications that expect a single number in that field. */
- vals->values_supplied =
- vals->values_supplied & ~(PIXELSIZE_MASK | POINTSIZE_MASK) |
- PIXELSIZE_ARRAY;
-#else /* NOTDEF */
vals->values_supplied = vals->values_supplied & ~POINTSIZE_MASK;
-#endif /* NOTDEF */
/* Recompute and reround the FontScalablePtr values after
rescaling for the new width. */
FontFileCompleteXLFD(vals, vals);
@@ -630,58 +519,6 @@ FindBestToScale(FontPathElementPtr fpe, FontEntryPtr entry,
return result;
}
-static FontEntryPtr
-FindPmfToScale(FontPathElementPtr fpe, FontEntryPtr entry,
- FontScalablePtr vals, FontScalablePtr best,
- double *dxp, double *dyp,
- double *sdxp, double *sdyp,
- FontPathElementPtr *fpep)
-{
- FontEntryPtr result = NULL;
- FontScaledPtr scaled;
- FontScalableExtraPtr extra;
- int i;
-
- extra = entry->u.scalable.extra;
- for (i = 0; i < extra->numScaled; i++)
- {
- double rescale_x;
-
- scaled = &extra->scaled[i];
- if (!scaled->bitmap)
- continue;
- if (!ComputeScaleFactors(&scaled->vals, vals, dxp, dyp, sdxp, sdyp,
- &rescale_x))
- continue;
- *best = scaled->vals;
- *fpep = fpe;
- result = scaled->bitmap;
- if (rescale_x != 1.0)
- {
- /* We have rescaled horizontally due to an XLFD width field. Change
- the matrix appropriately */
- vals->pixel_matrix[0] *= rescale_x;
- vals->pixel_matrix[1] *= rescale_x;
-#ifdef NOTDEF
- /* This would force the pointsize and pixelsize fields in the
- FONT property to display as matrices to more accurately
- report the font being supplied. It might also break existing
- applications that expect a single number in that field. */
- vals->values_supplied =
- vals->values_supplied & ~(PIXELSIZE_MASK | POINTSIZE_MASK) |
- PIXELSIZE_ARRAY;
-#else /* NOTDEF */
- vals->values_supplied = vals->values_supplied & ~POINTSIZE_MASK;
-#endif /* NOTDEF */
- /* Recompute and reround the FontScalablePtr values after
- rescaling for the new width. */
- FontFileCompleteXLFD(vals, vals);
- }
- break;
- }
- return result;
-}
-
static long
doround(double x)
{
@@ -767,19 +604,19 @@ ComputeScaledProperties(FontInfoPtr sourceFontInfo, /* the font to be scaled */
}
nProps = NPROPS + 1 + sizeof(fontPropTable) / sizeof(fontProp) +
sizeof(rawFontPropTable) / sizeof(fontProp);
- fp = (FontPropPtr) xalloc(sizeof(FontPropRec) * nProps);
+ fp = malloc(sizeof(FontPropRec) * nProps);
*pProps = fp;
if (!fp) {
fprintf(stderr, "Error: Couldn't allocate font properties (%ld*%d)\n",
(unsigned long)sizeof(FontPropRec), nProps);
return 1;
}
- isStringProp = (char *) xalloc (nProps);
+ isStringProp = malloc (nProps);
*pIsStringProp = isStringProp;
if (!isStringProp)
{
fprintf(stderr, "Error: Couldn't allocate isStringProp (%d)\n", nProps);
- xfree (fp);
+ free (fp);
return 1;
}
ptr2 = name;
@@ -1020,7 +857,7 @@ ScaleFont(FontPtr opf, /* originating font */
lastRow = opfi->lastRow;
}
- bitmapFont = (BitmapFontPtr) xalloc(sizeof(BitmapFontRec));
+ bitmapFont = malloc(sizeof(BitmapFontRec));
if (!bitmapFont) {
fprintf(stderr, "Error: Couldn't allocate bitmapFont (%ld)\n",
(unsigned long)sizeof(BitmapFontRec));
@@ -1041,15 +878,13 @@ ScaleFont(FontPtr opf, /* originating font */
bitmapFont->encoding = 0;
bitmapFont->bitmapExtra = 0;
bitmapFont->pDefault = 0;
- bitmapFont->metrics = (CharInfoPtr) xalloc(nchars * sizeof(CharInfoRec));
+ bitmapFont->metrics = malloc(nchars * sizeof(CharInfoRec));
if (!bitmapFont->metrics) {
fprintf(stderr, "Error: Couldn't allocate metrics (%d*%ld)\n",
nchars, (unsigned long)sizeof(CharInfoRec));
goto bail;
}
- bitmapFont->encoding =
- (CharInfoPtr **) xcalloc(NUM_SEGMENTS(nchars),
- sizeof(CharInfoPtr*));
+ bitmapFont->encoding = calloc(NUM_SEGMENTS(nchars), sizeof(CharInfoPtr*));
if (!bitmapFont->encoding) {
fprintf(stderr, "Error: Couldn't allocate encoding (%d*%ld)\n",
nchars, (unsigned long)sizeof(CharInfoPtr));
@@ -1127,8 +962,7 @@ ScaleFont(FontPtr opf, /* originating font */
if(!bitmapFont->encoding[SEGMENT_MAJOR(i)]) {
bitmapFont->encoding[SEGMENT_MAJOR(i)]=
- (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE,
- sizeof(CharInfoPtr));
+ calloc(BITMAP_FONT_SEGMENT_SIZE, sizeof(CharInfoPtr));
if(!bitmapFont->encoding[SEGMENT_MAJOR(i)])
goto bail;
}
@@ -1270,15 +1104,15 @@ ScaleFont(FontPtr opf, /* originating font */
return pf;
bail:
if (pf)
- xfree(pf);
+ free(pf);
if (bitmapFont) {
- xfree(bitmapFont->metrics);
- xfree(bitmapFont->ink_metrics);
- xfree(bitmapFont->bitmaps);
+ free(bitmapFont->metrics);
+ free(bitmapFont->ink_metrics);
+ free(bitmapFont->bitmaps);
if(bitmapFont->encoding)
for(i=0; i<NUM_SEGMENTS(nchars); i++)
- xfree(bitmapFont->encoding[i]);
- xfree(bitmapFont->encoding);
+ free(bitmapFont->encoding[i]);
+ free(bitmapFont->encoding);
}
return NULL;
}
@@ -1359,23 +1193,19 @@ ScaleBitmap(FontPtr pFont, CharInfoPtr opci, CharInfoPtr pci,
/* Looks like we need to anti-alias. Create a workspace to
contain the grayscale character plus an additional row and
column for scratch */
- char_grayscale =
- (unsigned char *)xalloc((width + 1) * (height + 1));
+ char_grayscale = malloc((width + 1) * (height + 1));
if (char_grayscale)
{
- diffusion_workspace =
- (INT32 *)xalloc((newWidth + 2) * 2 * sizeof(int));
+ diffusion_workspace = calloc((newWidth + 2) * 2, sizeof(int));
if (!diffusion_workspace)
{
fprintf(stderr, "Warning: Couldn't allocate diffusion"
" workspace (%ld)\n",
(newWidth + 2) * 2 * (unsigned long)sizeof(int));
- xfree(char_grayscale);
+ free(char_grayscale);
char_grayscale = (unsigned char *)0;
}
/* Initialize our error diffusion workspace for later use */
- bzero((char *)diffusion_workspace + sizeof(INT32),
- (newWidth + 3) * sizeof(int));
thisrow = diffusion_workspace + 1;
nextrow = diffusion_workspace + newWidth + 3;
} else {
@@ -1625,8 +1455,8 @@ ScaleBitmap(FontPtr pFont, CharInfoPtr opci, CharInfoPtr pci,
if (char_grayscale)
{
- xfree(char_grayscale);
- xfree(diffusion_workspace);
+ free(char_grayscale);
+ free(diffusion_workspace);
}
}
@@ -1677,12 +1507,11 @@ BitmapScaleBitmaps(FontPtr pf, /* scaled font */
/* Will need to remember to free in the Unload routine */
- bitmapFont->bitmaps = (char *) xalloc(bytestoalloc);
+ bitmapFont->bitmaps = calloc(1, bytestoalloc);
if (!bitmapFont->bitmaps) {
fprintf(stderr, "Error: Couldn't allocate bitmaps (%d)\n", bytestoalloc);
goto bail;
}
- bzero(bitmapFont->bitmaps, bytestoalloc);
glyphBytes = bitmapFont->bitmaps;
for (i = 0; i < nchars; i++)
@@ -1700,137 +1529,19 @@ BitmapScaleBitmaps(FontPtr pf, /* scaled font */
bail:
if (pf)
- xfree(pf);
+ free(pf);
if (bitmapFont) {
- xfree(bitmapFont->metrics);
- xfree(bitmapFont->ink_metrics);
- xfree(bitmapFont->bitmaps);
+ free(bitmapFont->metrics);
+ free(bitmapFont->ink_metrics);
+ free(bitmapFont->bitmaps);
if(bitmapFont->encoding)
for(i=0; i<NUM_SEGMENTS(nchars); i++)
- xfree(bitmapFont->encoding[i]);
- xfree(bitmapFont->encoding);
+ free(bitmapFont->encoding[i]);
+ free(bitmapFont->encoding);
}
return NULL;
}
-static FontPtr
-PrinterScaleBitmaps(FontPtr pf, /* scaled font */
- FontPtr opf, /* originating font */
- double widthMult, /* glyphs width scale factor */
- double heightMult, /* glyphs height scale factor */
- FontScalablePtr vals)
-{
- register int i;
- int nchars = 0;
- char *glyphBytes;
- BitmapFontPtr bitmapFont,
- obitmapFont;
- CharInfoPtr pci;
- FontInfoPtr pfi;
- int glyph;
- unsigned bytestoalloc = 0;
- int firstCol, lastCol, firstRow, lastRow;
-
- double xform[4], inv_xform[4];
- double xmult, ymult;
-
- bitmapFont = (BitmapFontPtr) pf->fontPrivate;
- obitmapFont = (BitmapFontPtr) opf->fontPrivate;
-
- if (!compute_xform_matrix(vals, widthMult, heightMult, xform,
- inv_xform, &xmult, &ymult))
- goto bail;
-
- pfi = &pf->info;
- firstCol = pfi->firstCol;
- lastCol = pfi->lastCol;
- firstRow = pfi->firstRow;
- lastRow = pfi->lastRow;
-
- nchars = (lastRow - firstRow + 1) * (lastCol - firstCol + 1);
- glyph = pf->glyph;
- for (i = 0; i < nchars; i++)
- {
- if ((pci = ACCESSENCODING(bitmapFont->encoding, i)))
- bytestoalloc = MAX(bytestoalloc,BYTES_FOR_GLYPH(pci, glyph));
- }
-
- /* Do we add the font malloc stuff for VALUE ADDED ? */
- /* Will need to remember to free in the Unload routine */
-
-
- bitmapFont->bitmaps = (char *) xalloc(bytestoalloc);
- if (!bitmapFont->bitmaps) {
- fprintf(stderr, "Error: Couldn't allocate bitmaps (%d)\n", bytestoalloc);
- goto bail;
- }
- bzero(bitmapFont->bitmaps, bytestoalloc);
-
- glyphBytes = bitmapFont->bitmaps;
- for (i = 0; i < nchars; i++)
- {
- if ((pci = ACCESSENCODING(bitmapFont->encoding, i)) &&
- (ACCESSENCODING(obitmapFont->encoding, OLDINDEX(i))))
- {
- pci->bits = glyphBytes;
- }
- }
- return pf;
-
-bail:
- if (pf)
- xfree(pf);
- if (bitmapFont) {
- xfree(bitmapFont->metrics);
- xfree(bitmapFont->ink_metrics);
- xfree(bitmapFont->bitmaps);
- if(bitmapFont->encoding)
- for(i=0; i<NUM_SEGMENTS(nchars); i++)
- xfree(bitmapFont->encoding[i]);
- xfree(bitmapFont->encoding);
- }
- return NULL;
-}
-
-#ifdef NOTDEF
-/*
- * exported interfaces
- */
-
-FontFileLoadName(FontFileDirPtr *dirs, int ndirs, char *name, FontPtr *pfont,
- fsBitmapFormat format, fsBitmapFormatMask fmask)
-{
- FontFileNamePtr fname;
- char full_name[1024];
- int ret = BadFontName;
- int i;
-
- i = 0;
- while (i < ndirs) {
- if (fname = FontFileFindNameInDir(dirs[i], name)) {
- if (!fname->alias) {
- if (!fname->font) {
- strcpy(full_name, dirs[i]->dir);
- strcat(full_name, fname->file);
- ret = FontFileLoad(pfont, full_name, format, fmask);
- if (ret == Successful) {
- fname->font = *pfont;
- (*pfont)->fpePrivate = (pointer) fname;
- }
- return ret;
- }
- *pfont = fname->font;
- return Successful;
- }
- name = fname->file;
- i = 0;
- } else
- i++;
- }
- return BadFontName;
-}
-#endif
-
/* ARGSUSED */
int
BitmapOpenScalable (FontPathElementPtr fpe,
@@ -1855,17 +1566,12 @@ BitmapOpenScalable (FontPathElementPtr fpe,
long sWidth;
FontEntryPtr scaleFrom;
- FontPathElementPtr scaleFPE;
+ FontPathElementPtr scaleFPE = NULL;
FontPtr sourceFont;
char fontName[MAXFONTNAMELEN];
/* Can't deal with mix-endian fonts yet */
-#ifdef NOTDEF /* XXX need better test */
- if ((format & BitmapFormatByteOrderMask) !=
- (format & BitmapFormatBitOrderMask))
- return NullFontFileName;
-#endif
/* Reject outrageously small font sizes to keep the math from
blowing up. */
@@ -1873,8 +1579,8 @@ BitmapOpenScalable (FontPathElementPtr fpe,
get_matrix_horizontal_component(vals->pixel_matrix) < 1.0)
return BadFontName;
- scaleFrom = (*find_scale[BitmapGetRenderIndex(entry->u.bitmap.renderer)])
- (fpe, entry, vals, &best, &dx, &dy, &sdx, &sdy, &scaleFPE);
+ scaleFrom = FindBestToScale(fpe, entry, vals, &best, &dx, &dy, &sdx, &sdy,
+ &scaleFPE);
if (!scaleFrom)
return BadFontName;
@@ -1894,8 +1600,7 @@ BitmapOpenScalable (FontPathElementPtr fpe,
savedY = dy;
font = ScaleFont(sourceFont, dx, dy, sdx, sdy, vals, &dx, &dy, &sWidth);
if (font)
- font = (*scale[ BitmapGetRenderIndex(entry->u.bitmap.renderer) ])
- (font, sourceFont, savedX, savedY, vals);
+ font = BitmapScaleBitmaps(font, sourceFont, savedX, savedY, vals);
if (!font)
{
@@ -1970,18 +1675,18 @@ bitmapUnloadScalable (FontPtr pFont)
bitmapFont = (BitmapFontPtr) pFont->fontPrivate;
pfi = &pFont->info;
- xfree (pfi->props);
- xfree (pfi->isStringProp);
+ free (pfi->props);
+ free (pfi->isStringProp);
if(bitmapFont->encoding) {
nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) *
(pFont->info.lastRow - pFont->info.firstRow + 1);
for(i=0; i<NUM_SEGMENTS(nencoding); i++)
- xfree(bitmapFont->encoding[i]);
+ free(bitmapFont->encoding[i]);
}
- xfree (bitmapFont->encoding);
- xfree (bitmapFont->bitmaps);
- xfree (bitmapFont->ink_metrics);
- xfree (bitmapFont->metrics);
- xfree (pFont->fontPrivate);
+ free (bitmapFont->encoding);
+ free (bitmapFont->bitmaps);
+ free (bitmapFont->ink_metrics);
+ free (bitmapFont->metrics);
+ free (pFont->fontPrivate);
DestroyFontRec (pFont);
}
diff --git a/libXfont/src/bitmap/pcfread.c b/libXfont/src/bitmap/pcfread.c
index c5db2555b..182144adc 100644
--- a/libXfont/src/bitmap/pcfread.c
+++ b/libXfont/src/bitmap/pcfread.c
@@ -1,4 +1,3 @@
-/* $Xorg: pcfread.c,v 1.5 2001/02/09 02:04:02 xorgcvs Exp $ */
/*
Copyright 1990, 1998 The Open Group
@@ -138,7 +137,7 @@ pcfReadTOC(FontFilePtr file, int *countp)
pcfError("pcfReadTOC(): invalid file format\n");
return NULL;
}
- tables = (PCFTablePtr) xalloc(count * sizeof(PCFTableRec));
+ tables = malloc(count * sizeof(PCFTableRec));
if (!tables) {
pcfError("pcfReadTOC(): Couldn't allocate tables (%d*%d)\n", count, sizeof(PCFTableRec));
return (PCFTablePtr) NULL;
@@ -155,7 +154,7 @@ pcfReadTOC(FontFilePtr file, int *countp)
return tables;
Bail:
- xfree(tables);
+ free(tables);
return (PCFTablePtr) NULL;
}
@@ -262,12 +261,12 @@ pcfGetProperties(FontInfoPtr pFontInfo, FontFilePtr file,
goto Bail;
}
if (IS_EOF(file)) goto Bail;
- props = (FontPropPtr) xalloc(nprops * sizeof(FontPropRec));
+ props = malloc(nprops * sizeof(FontPropRec));
if (!props) {
pcfError("pcfGetProperties(): Couldn't allocate props (%d*%d)\n", nprops, sizeof(FontPropRec));
goto Bail;
}
- isStringProp = (char *) xalloc(nprops * sizeof(char));
+ isStringProp = malloc(nprops * sizeof(char));
if (!isStringProp) {
pcfError("pcfGetProperties(): Couldn't allocate isStringProp (%d*%d)\n", nprops, sizeof(char));
goto Bail;
@@ -300,7 +299,7 @@ pcfGetProperties(FontInfoPtr pFontInfo, FontFilePtr file,
string_size = pcfGetINT32(file, format);
if (string_size < 0) goto Bail;
if (IS_EOF(file)) goto Bail;
- strings = (char *) xalloc(string_size);
+ strings = malloc(string_size);
if (!strings) {
pcfError("pcfGetProperties(): Couldn't allocate strings (%d)\n", string_size);
goto Bail;
@@ -316,14 +315,14 @@ pcfGetProperties(FontInfoPtr pFontInfo, FontFilePtr file,
strlen(strings + props[i].value), TRUE);
}
}
- xfree(strings);
+ free(strings);
pFontInfo->isStringProp = isStringProp;
pFontInfo->props = props;
pFontInfo->nprops = nprops;
return TRUE;
Bail:
- xfree(isStringProp);
- xfree(props);
+ free(isStringProp);
+ free(props);
return FALSE;
}
@@ -443,7 +442,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
pcfError("pcfReadFont(): invalid file format\n");
goto Bail;
}
- metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec));
+ metrics = malloc(nmetrics * sizeof(CharInfoRec));
if (!metrics) {
pcfError("pcfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec));
goto Bail;
@@ -469,7 +468,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
if (nbitmaps != nmetrics || IS_EOF(file))
goto Bail;
/* nmetrics is already ok, so nbitmap also is */
- offsets = (CARD32 *) xalloc(nbitmaps * sizeof(CARD32));
+ offsets = malloc(nbitmaps * sizeof(CARD32));
if (!offsets) {
pcfError("pcfReadFont(): Couldn't allocate offsets (%d*%d)\n", nbitmaps, sizeof(CARD32));
goto Bail;
@@ -487,7 +486,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
sizebitmaps = bitmapSizes[PCF_GLYPH_PAD_INDEX(format)];
/* guard against completely empty font */
- bitmaps = xalloc(sizebitmaps ? sizebitmaps : 1);
+ bitmaps = malloc(sizebitmaps ? sizebitmaps : 1);
if (!bitmaps) {
pcfError("pcfReadFont(): Couldn't allocate bitmaps (%d)\n", sizebitmaps ? sizebitmaps : 1);
goto Bail;
@@ -518,7 +517,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
xCharInfo *metric;
sizepadbitmaps = bitmapSizes[PCF_SIZE_TO_INDEX(glyph)];
- padbitmaps = (char *) xalloc(sizepadbitmaps);
+ padbitmaps = malloc(sizepadbitmaps);
if (!padbitmaps) {
pcfError("pcfReadFont(): Couldn't allocate padbitmaps (%d)\n", sizepadbitmaps);
goto Bail;
@@ -533,13 +532,13 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
metric->rightSideBearing - metric->leftSideBearing,
metric->ascent + metric->descent);
}
- xfree(bitmaps);
+ free(bitmaps);
bitmaps = padbitmaps;
}
for (i = 0; i < nbitmaps; i++)
metrics[i].bits = bitmaps + offsets[i];
- xfree(offsets);
+ free(offsets);
offsets = NULL;
/* ink metrics ? */
@@ -559,7 +558,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
if (nink_metrics != nmetrics)
goto Bail;
/* nmetrics already checked */
- ink_metrics = (xCharInfo *) xalloc(nink_metrics * sizeof(xCharInfo));
+ ink_metrics = malloc(nink_metrics * sizeof(xCharInfo));
if (!ink_metrics) {
pcfError("pcfReadFont(): Couldn't allocate ink_metrics (%d*%d)\n", nink_metrics, sizeof(xCharInfo));
goto Bail;
@@ -595,8 +594,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) *
(pFont->info.lastRow - pFont->info.firstRow + 1);
- encoding = (CharInfoPtr **) xcalloc(NUM_SEGMENTS(nencoding),
- sizeof(CharInfoPtr*));
+ encoding = calloc(NUM_SEGMENTS(nencoding), sizeof(CharInfoPtr*));
if (!encoding) {
pcfError("pcfReadFont(): Couldn't allocate encoding (%d*%d)\n", nencoding, sizeof(CharInfoPtr));
goto Bail;
@@ -611,8 +609,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
} else {
if(!encoding[SEGMENT_MAJOR(i)]) {
encoding[SEGMENT_MAJOR(i)]=
- (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE,
- sizeof(CharInfoPtr));
+ calloc(BITMAP_FONT_SEGMENT_SIZE, sizeof(CharInfoPtr));
if(!encoding[SEGMENT_MAJOR(i)])
goto Bail;
}
@@ -626,7 +623,7 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
if (!pcfGetAccel (&pFont->info, file, tables, ntables, PCF_BDF_ACCELERATORS))
goto Bail;
- bitmapFont = (BitmapFontPtr) xalloc(sizeof *bitmapFont);
+ bitmapFont = malloc(sizeof *bitmapFont);
if (!bitmapFont) {
pcfError("pcfReadFont(): Couldn't allocate bitmapFont (%d)\n", sizeof *bitmapFont);
goto Bail;
@@ -665,24 +662,24 @@ pcfReadFont(FontPtr pFont, FontFilePtr file,
pFont->byte = byte;
pFont->glyph = glyph;
pFont->scan = scan;
- xfree(tables);
+ free(tables);
return Successful;
Bail:
- xfree(ink_metrics);
+ free(ink_metrics);
if(encoding) {
for(i=0; i<NUM_SEGMENTS(nencoding); i++)
- xfree(encoding[i]);
+ free(encoding[i]);
}
- xfree(encoding);
- xfree(bitmaps);
- xfree(metrics);
- xfree(pFont->info.props);
+ free(encoding);
+ free(bitmaps);
+ free(metrics);
+ free(pFont->info.props);
pFont->info.nprops = 0;
pFont->info.props = 0;
- xfree (pFont->info.isStringProp);
- xfree(bitmapFont);
- xfree(tables);
- xfree(offsets);
+ free (pFont->info.isStringProp);
+ free(bitmapFont);
+ free(tables);
+ free(offsets);
return AllocError;
}
@@ -750,13 +747,13 @@ pcfReadFontInfo(FontInfoPtr pFontInfo, FontFilePtr file)
if (!pcfGetAccel (pFontInfo, file, tables, ntables, PCF_BDF_ACCELERATORS))
goto Bail;
- xfree(tables);
+ free(tables);
return Successful;
Bail:
pFontInfo->nprops = 0;
- xfree (pFontInfo->props);
- xfree (pFontInfo->isStringProp);
- xfree(tables);
+ free (pFontInfo->props);
+ free (pFontInfo->isStringProp);
+ free(tables);
return AllocError;
}
@@ -767,258 +764,18 @@ pcfUnloadFont(FontPtr pFont)
int i,nencoding;
bitmapFont = (BitmapFontPtr) pFont->fontPrivate;
- xfree(bitmapFont->ink_metrics);
+ free(bitmapFont->ink_metrics);
if(bitmapFont->encoding) {
nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) *
(pFont->info.lastRow - pFont->info.firstRow + 1);
for(i=0; i<NUM_SEGMENTS(nencoding); i++)
- xfree(bitmapFont->encoding[i]);
- }
- xfree(bitmapFont->encoding);
- xfree(bitmapFont->bitmaps);
- xfree(bitmapFont->metrics);
- xfree(pFont->info.isStringProp);
- xfree(pFont->info.props);
- xfree(bitmapFont);
+ free(bitmapFont->encoding[i]);
+ }
+ free(bitmapFont->encoding);
+ free(bitmapFont->bitmaps);
+ free(bitmapFont->metrics);
+ free(pFont->info.isStringProp);
+ free(pFont->info.props);
+ free(bitmapFont);
DestroyFontRec(pFont);
}
-
-int
-pmfReadFont(FontPtr pFont, FontFilePtr file,
- int bit, int byte, int glyph, int scan)
-{
- CARD32 format;
- CARD32 size;
- BitmapFontPtr bitmapFont = 0;
- int i;
- PCFTablePtr tables = 0;
- int ntables;
- int nmetrics;
- int sizebitmaps;
- int nink_metrics;
- CharInfoPtr metrics = 0;
- xCharInfo *ink_metrics = 0;
- char *bitmaps = 0;
- CharInfoPtr **encoding = 0;
- int nencoding = 0;
- int encodingOffset;
- Bool hasBDFAccelerators;
- CharInfoPtr pci;
-
- pFont->info.nprops = 0;
- pFont->info.props = 0;
-
- if (!(tables = pcfReadTOC(file, &ntables)))
- goto Bail;
-
- /* properties */
-
- if (!pcfGetProperties(&pFont->info, file, tables, ntables))
- goto Bail;
-
- /* Use the old accelerators if no BDF accelerators are in the file */
-
- hasBDFAccelerators = pcfHasType (tables, ntables, PCF_BDF_ACCELERATORS);
- if (!hasBDFAccelerators)
- if (!pcfGetAccel (&pFont->info, file, tables, ntables, PCF_ACCELERATORS))
- goto Bail;
-
- /* metrics */
-
- if (!pcfSeekToType(file, tables, ntables, PCF_METRICS, &format, &size)) {
- goto Bail;
- }
- format = pcfGetLSB32(file);
- if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT) &&
- !PCF_FORMAT_MATCH(format, PCF_COMPRESSED_METRICS)) {
- goto Bail;
- }
- if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT))
- nmetrics = pcfGetINT32(file, format);
- else
- nmetrics = pcfGetINT16(file, format);
- if (IS_EOF(file)) goto Bail;
- if (nmetrics < 0 || nmetrics > INT32_MAX / sizeof(CharInfoRec)) {
- pcfError("pmfReadFont(): invalid file format\n");
- goto Bail;
- }
- metrics = (CharInfoPtr) xalloc(nmetrics * sizeof(CharInfoRec));
- if (!metrics) {
- pcfError("pmfReadFont(): Couldn't allocate metrics (%d*%d)\n", nmetrics, sizeof(CharInfoRec));
- goto Bail;
- }
- for (i = 0; i < nmetrics; i++)
- if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) {
- if (!pcfGetMetric(file, format, &(metrics + i)->metrics))
- goto Bail;
- } else {
- if (!pcfGetCompressedMetric(file, format, &(metrics + i)->metrics))
- goto Bail;
- }
-
- /* Set the bitmaps to all point to the same zero filled array
- * that is the size of the largest bitmap.
- */
-
- pci = metrics;
- sizebitmaps = 0;
- for (i = 0; i < nmetrics; i++)
- {
- sizebitmaps = MAX(sizebitmaps,BYTES_FOR_GLYPH(pci, glyph));
- pci++;
- }
-
-#ifdef FONTMODULE
- sizebitmaps = 1024; /* Default - we xalloc the size anyway */
-#else
- sizebitmaps = BUFSIZ;
-#endif
- /* guard against completely empty font */
- bitmaps = (char *) xalloc(sizebitmaps);
- if (!bitmaps) {
- pcfError("pmfReadFont(): Couldn't allocate bitmaps (%d)\n", sizebitmaps);
- goto Bail;
- }
-
- memset(bitmaps,0,sizebitmaps);
- for (i = 0; i < nmetrics; i++)
- metrics[i].bits = bitmaps;
-
- /* ink metrics ? */
-
- ink_metrics = NULL;
- if (pcfSeekToType(file, tables, ntables, PCF_INK_METRICS, &format, &size)) {
- format = pcfGetLSB32(file);
- if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT) &&
- !PCF_FORMAT_MATCH(format, PCF_COMPRESSED_METRICS)) {
- goto Bail;
- }
- if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT))
- nink_metrics = pcfGetINT32(file, format);
- else
- nink_metrics = pcfGetINT16(file, format);
- if (nink_metrics != nmetrics)
- goto Bail;
- if (IS_EOF(file)) goto Bail;
- ink_metrics = (xCharInfo *) xalloc(nink_metrics * sizeof(xCharInfo));
- if (!ink_metrics) {
- pcfError("pmfReadFont(): Couldn't allocate ink_metrics (%d*%d)\n", nink_metrics, sizeof(xCharInfo));
- goto Bail;
- }
- for (i = 0; i < nink_metrics; i++)
- if (PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT)) {
- if (!pcfGetMetric(file, format, ink_metrics + i))
- goto Bail;
- } else {
- if (!pcfGetCompressedMetric(file, format, ink_metrics + i))
- goto Bail;
- }
- }
-
- /* encoding */
-
- if (!pcfSeekToType(file, tables, ntables, PCF_BDF_ENCODINGS, &format, &size))
- goto Bail;
- format = pcfGetLSB32(file);
- if (!PCF_FORMAT_MATCH(format, PCF_DEFAULT_FORMAT))
- goto Bail;
-
- pFont->info.firstCol = pcfGetINT16(file, format);
- pFont->info.lastCol = pcfGetINT16(file, format);
- pFont->info.firstRow = pcfGetINT16(file, format);
- pFont->info.lastRow = pcfGetINT16(file, format);
- pFont->info.defaultCh = pcfGetINT16(file, format);
- if (IS_EOF(file)) goto Bail;
-
- nencoding = (pFont->info.lastCol - pFont->info.firstCol + 1) *
- (pFont->info.lastRow - pFont->info.firstRow + 1);
-
- encoding = (CharInfoPtr **) xcalloc(NUM_SEGMENTS(nencoding),
- sizeof(CharInfoPtr*));
- if (!encoding) {
- pcfError("pmfReadFont(): Couldn't allocate encoding (%d*%d)\n", nencoding, sizeof(CharInfoPtr));
- goto Bail;
- }
- pFont->info.allExist = TRUE;
- for (i = 0; i < nencoding; i++) {
- encodingOffset = pcfGetINT16(file, format);
- if (IS_EOF(file)) goto Bail;
- if (encodingOffset == 0xFFFF) {
- pFont->info.allExist = FALSE;
- } else {
- if(!encoding[SEGMENT_MAJOR(i)]) {
- encoding[SEGMENT_MAJOR(i)]=
- (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE,
- sizeof(CharInfoPtr));
- if(!encoding[SEGMENT_MAJOR(i)])
- goto Bail;
- }
- ACCESSENCODINGL(encoding, i) = metrics + encodingOffset;
- }
- }
- if (IS_EOF(file)) goto Bail;
-
- /* BDF style accelerators (i.e. bounds based on encoded glyphs) */
-
- if (hasBDFAccelerators)
- if (!pcfGetAccel (&pFont->info, file, tables, ntables, PCF_BDF_ACCELERATORS))
- goto Bail;
-
- bitmapFont = (BitmapFontPtr) xalloc(sizeof *bitmapFont);
- if (!bitmapFont) {
- pcfError("pmfReadFont(): Couldn't allocate bitmapFont (%d)\n", sizeof *bitmapFont);
- goto Bail;
- }
-
- bitmapFont->version_num = PCF_FILE_VERSION;
- bitmapFont->num_chars = nmetrics;
- bitmapFont->num_tables = ntables;
- bitmapFont->metrics = metrics;
- bitmapFont->ink_metrics = ink_metrics;
- bitmapFont->bitmaps = bitmaps;
- bitmapFont->encoding = encoding;
- bitmapFont->pDefault = (CharInfoPtr) 0;
- if (pFont->info.defaultCh != (unsigned short) NO_SUCH_CHAR) {
- unsigned int r,
- c,
- cols;
-
- r = pFont->info.defaultCh >> 8;
- c = pFont->info.defaultCh & 0xFF;
- if (pFont->info.firstRow <= r && r <= pFont->info.lastRow &&
- pFont->info.firstCol <= c && c <= pFont->info.lastCol) {
- cols = pFont->info.lastCol - pFont->info.firstCol + 1;
- r = r - pFont->info.firstRow;
- c = c - pFont->info.firstCol;
- bitmapFont->pDefault = ACCESSENCODING(encoding, r * cols + c);
- }
- }
- bitmapFont->bitmapExtra = (BitmapExtraPtr) 0;
- pFont->fontPrivate = (pointer) bitmapFont;
- pFont->get_glyphs = bitmapGetGlyphs;
- pFont->get_metrics = bitmapGetMetrics;
- pFont->unload_font = pcfUnloadFont;
- pFont->unload_glyphs = NULL;
- pFont->bit = bit;
- pFont->byte = byte;
- pFont->glyph = glyph;
- pFont->scan = scan;
- xfree(tables);
- return Successful;
-Bail:
- xfree(ink_metrics);
- if(encoding) {
- for(i=0; i<NUM_SEGMENTS(nencoding); i++)
- xfree(encoding[i]);
- }
- xfree(encoding);
- xfree(bitmaps);
- xfree(metrics);
- xfree(pFont->info.props);
- pFont->info.nprops = 0;
- pFont->info.props = 0;
- xfree (pFont->info.isStringProp);
- xfree(bitmapFont);
- xfree(tables);
- return AllocError;
-}
diff --git a/libXfont/src/bitmap/pcfwrite.c b/libXfont/src/bitmap/pcfwrite.c
index 8d5e9425f..5d1aab154 100644
--- a/libXfont/src/bitmap/pcfwrite.c
+++ b/libXfont/src/bitmap/pcfwrite.c
@@ -236,7 +236,7 @@ pcfWriteFont(FontPtr pFont, FontFilePtr file)
ink_minbounds = &pFont->info.ink_minbounds;
ink_maxbounds = &pFont->info.ink_maxbounds;
}
- offsetProps = (FontPropPtr) xalloc(pFont->info.nprops * sizeof(FontPropRec));
+ offsetProps = malloc(pFont->info.nprops * sizeof(FontPropRec));
if (!offsetProps) {
pcfError("pcfWriteFont(): Couldn't allocate offsetProps (%d*%d)", pFont->info.nprops, sizeof(FontPropRec));
return AllocError;
@@ -358,7 +358,7 @@ pcfWriteFont(FontPtr pFont, FontFilePtr file)
if (current_position > table->offset) {
printf("can't go backwards... %d > %d\n",
(int)current_position, (int)table->offset);
- xfree(offsetProps);
+ free(offsetProps);
return BadFontName;
}
while (current_position < table->offset)
@@ -463,6 +463,6 @@ pcfWriteFont(FontPtr pFont, FontFilePtr file)
}
}
- xfree(offsetProps);
+ free(offsetProps);
return Successful;
}
diff --git a/libXfont/src/bitmap/snfread.c b/libXfont/src/bitmap/snfread.c
index f48e2d8a7..53a72da9f 100644
--- a/libXfont/src/bitmap/snfread.c
+++ b/libXfont/src/bitmap/snfread.c
@@ -55,10 +55,7 @@ from The Open Group.
#include <config.h>
#endif
-#ifndef FONTMODULE
#include <ctype.h>
-#endif
-
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
#include "snfstr.h"
@@ -150,14 +147,14 @@ snfReadProps(snfFontInfoPtr snfInfo, FontInfoPtr pFontInfo, FontFilePtr file)
bytestoalloc = snfInfo->nProps * sizeof(snfFontPropRec) +
BYTESOFSTRINGINFO(snfInfo);
- propspace = (char *) xalloc(bytestoalloc);
+ propspace = malloc(bytestoalloc);
if (!propspace) {
snfError("snfReadProps(): Couldn't allocate propspace (%d)\n", bytestoalloc);
return AllocError;
}
if (FontFileRead(file, propspace, bytestoalloc) != bytestoalloc) {
- xfree(propspace);
+ free(propspace);
return BadFontName;
}
psnfp = (snfFontPropPtr) propspace;
@@ -175,7 +172,7 @@ snfReadProps(snfFontInfoPtr snfInfo, FontInfoPtr pFontInfo, FontFilePtr file)
pfp->value = psnfp->value;
}
- xfree(propspace);
+ free(propspace);
return Successful;
}
@@ -269,16 +266,16 @@ snfReadFont(FontPtr pFont, FontFilePtr file,
if (fi.inkMetrics)
bytestoalloc += num_chars * sizeof(xCharInfo); /* ink_metrics */
- fontspace = (char *) xalloc(bytestoalloc);
+ fontspace = malloc(bytestoalloc);
if (!fontspace) {
snfError("snfReadFont(): Couldn't allocate fontspace (%d)\n", bytestoalloc);
return AllocError;
}
- bitmaps = (char *) xalloc (bitmapsSize);
+ bitmaps = malloc (bitmapsSize);
if (!bitmaps)
{
snfError("snfReadFont(): Couldn't allocate bitmaps (%d)\n", bitmapsSize);
- xfree (fontspace);
+ free (fontspace);
return AllocError;
}
/*
@@ -311,8 +308,7 @@ snfReadFont(FontPtr pFont, FontFilePtr file,
if (bitmapFont->metrics[i].bits) {
if (!bitmapFont->encoding[SEGMENT_MAJOR(i)]) {
bitmapFont->encoding[SEGMENT_MAJOR(i)]=
- (CharInfoPtr*)xcalloc(BITMAP_FONT_SEGMENT_SIZE,
- sizeof(CharInfoPtr));
+ calloc(BITMAP_FONT_SEGMENT_SIZE, sizeof(CharInfoPtr));
if (!bitmapFont->encoding[SEGMENT_MAJOR(i)]) {
ret = AllocError;
break;
@@ -323,12 +319,12 @@ snfReadFont(FontPtr pFont, FontFilePtr file,
}
if (ret != Successful) {
- xfree(bitmaps);
+ free(bitmaps);
if(bitmapFont->encoding) {
for(j=0; j<SEGMENT_MAJOR(i); j++)
- xfree(bitmapFont->encoding[i]);
+ free(bitmapFont->encoding[i]);
}
- xfree(fontspace);
+ free(fontspace);
return ret;
}
/*
@@ -336,8 +332,8 @@ snfReadFont(FontPtr pFont, FontFilePtr file,
*/
if (FontFileRead(file, bitmaps, bitmapsSize) != bitmapsSize) {
- xfree(bitmaps);
- xfree(fontspace);
+ free(bitmaps);
+ free(fontspace);
return BadFontName;
}
@@ -369,11 +365,11 @@ snfReadFont(FontPtr pFont, FontFilePtr file,
sizepadbitmaps += BYTES_FOR_GLYPH(metric,glyph);
metric++;
}
- padbitmaps = (char *) xalloc(sizepadbitmaps);
+ padbitmaps = malloc(sizepadbitmaps);
if (!padbitmaps) {
snfError("snfReadFont(): Couldn't allocate padbitmaps (%d)\n", sizepadbitmaps);
- xfree (bitmaps);
- xfree (fontspace);
+ free (bitmaps);
+ free (fontspace);
return AllocError;
}
metric = bitmapFont->metrics;
@@ -388,14 +384,14 @@ snfReadFont(FontPtr pFont, FontFilePtr file,
padbitmaps += sizechar;
metric++;
}
- xfree(bitmaps);
+ free(bitmaps);
}
/* now read and atom'ize properties */
ret = snfReadProps(&fi, &pFont->info, file);
if (ret != Successful) {
- xfree(fontspace);
+ free(fontspace);
return ret;
}
snfCopyInfo(&fi, &pFont->info);
@@ -409,7 +405,7 @@ snfReadFont(FontPtr pFont, FontFilePtr file,
for (i = 0; ret == Successful && i < num_chars; i++)
ret = snfReadxCharInfo(file, &bitmapFont->ink_metrics[i]);
if (ret != Successful) {
- xfree(fontspace);
+ free(fontspace);
return ret;
}
} else {
@@ -458,15 +454,15 @@ snfReadFontInfo(FontInfoPtr pFontInfo, FontFilePtr file)
return ret;
snfCopyInfo(&fi, pFontInfo);
- pFontInfo->props = (FontPropPtr) xalloc(fi.nProps * sizeof(FontPropRec));
+ pFontInfo->props = malloc(fi.nProps * sizeof(FontPropRec));
if (!pFontInfo->props) {
snfError("snfReadFontInfo(): Couldn't allocate props (%d*%d)\n", fi.nProps, sizeof(FontPropRec));
return AllocError;
}
- pFontInfo->isStringProp = (char *) xalloc(fi.nProps * sizeof(char));
+ pFontInfo->isStringProp = malloc(fi.nProps * sizeof(char));
if (!pFontInfo->isStringProp) {
snfError("snfReadFontInfo(): Couldn't allocate isStringProp (%d*%d)\n", fi.nProps, sizeof(char));
- xfree(pFontInfo->props);
+ free(pFontInfo->props);
return AllocError;
}
num_chars = n2dChars(&fi);
@@ -476,21 +472,21 @@ snfReadFontInfo(FontInfoPtr pFontInfo, FontFilePtr file)
ret = snfReadProps(&fi, pFontInfo, file);
if (ret != Successful) {
- xfree(pFontInfo->props);
- xfree(pFontInfo->isStringProp);
+ free(pFontInfo->props);
+ free(pFontInfo->isStringProp);
return ret;
}
if (fi.inkMetrics) {
ret = snfReadxCharInfo(file, &pFontInfo->ink_minbounds);
if (ret != Successful) {
- xfree(pFontInfo->props);
- xfree(pFontInfo->isStringProp);
+ free(pFontInfo->props);
+ free(pFontInfo->isStringProp);
return ret;
}
ret = snfReadxCharInfo(file, &pFontInfo->ink_maxbounds);
if (ret != Successful) {
- xfree(pFontInfo->props);
- xfree(pFontInfo->isStringProp);
+ free(pFontInfo->props);
+ free(pFontInfo->isStringProp);
return ret;
}
} else {
@@ -507,8 +503,8 @@ snfUnloadFont(FontPtr pFont)
BitmapFontPtr bitmapFont;
bitmapFont = (BitmapFontPtr) pFont->fontPrivate;
- xfree (bitmapFont->bitmaps);
- xfree (bitmapFont);
+ free (bitmapFont->bitmaps);
+ free (bitmapFont);
DestroyFontRec (pFont);
}
diff --git a/libXfont/src/builtins/Makefile.in b/libXfont/src/builtins/Makefile.in
index 3d57cfa88..d96bb41bd 100644
--- a/libXfont/src/builtins/Makefile.in
+++ b/libXfont/src/builtins/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -46,7 +46,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
libbuiltins_la_LIBADD =
am_libbuiltins_la_OBJECTS = dir.lo file.lo fonts.lo fpe.lo render.lo
libbuiltins_la_OBJECTS = $(am_libbuiltins_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include/X11/fonts
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -77,22 +77,18 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENCODINGSDIR = @ENCODINGSDIR@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
FREETYPE_LIBS = @FREETYPE_LIBS@
FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
@@ -102,17 +98,24 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATH_LIBS = @MATH_LIBS@
MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -122,6 +125,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -135,8 +139,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -169,6 +172,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -181,6 +185,7 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = \
@@ -206,8 +211,8 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -287,8 +292,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -300,8 +305,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -311,13 +316,12 @@ ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
diff --git a/libXfont/src/builtins/dir.c b/libXfont/src/builtins/dir.c
index dd2ea1a86..bf351b147 100644
--- a/libXfont/src/builtins/dir.c
+++ b/libXfont/src/builtins/dir.c
@@ -1,6 +1,4 @@
/*
- * Id: dir.c,v 1.2 1999/11/02 06:16:47 keithp Exp $
- *
* Copyright 1999 SuSE, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and its
@@ -22,7 +20,6 @@
*
* Author: Keith Packard, SuSE, Inc.
*/
-/* $XFree86: xc/lib/font/builtins/dir.c,v 1.3 1999/12/30 02:29:49 robin Exp $ */
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -39,17 +36,13 @@ BuiltinDirsDup (const BuiltinDirPtr a_dirs,
if (!a_dirs)
return NULL ;
- dirs = xcalloc (a_dirs_len, sizeof (BuiltinDirRec)) ;
+ dirs = calloc (a_dirs_len, sizeof (BuiltinDirRec)) ;
if (!dirs)
return NULL ;
for (i=0; i < a_dirs_len; i++) {
- int len = strlen (a_dirs[i].file_name) ;
- dirs[i].file_name = xcalloc (1, len+1) ;
- memmove (dirs[i].file_name, a_dirs[i].file_name, len);
- len = strlen (a_dirs[i].font_name) ;
- dirs[i].font_name = xcalloc (1, len+1) ;
- memmove (dirs[i].font_name, a_dirs[i].font_name, len);
+ dirs[i].file_name = strdup(a_dirs[i].file_name);
+ dirs[i].font_name = strdup(a_dirs[i].font_name);
}
return dirs ;
}
@@ -104,14 +97,12 @@ BuiltinAliasesDup (const BuiltinAliasPtr a_aliases,
if (!a_aliases)
return NULL ;
- aliases = xcalloc (a_aliases_len, sizeof (BuiltinAliasRec)) ;
+ aliases = calloc (a_aliases_len, sizeof (BuiltinAliasRec)) ;
if (!aliases)
return NULL ;
for (i=0; i < a_aliases_len; i++) {
- int len = strlen (a_aliases[i].font_name) ;
- aliases[i].font_name = xcalloc (1, len+1) ;
- memmove (aliases[i].font_name, a_aliases[i].font_name, len);
+ aliases[i].font_name = strdup(a_aliases[i].font_name);
}
return aliases ;
}
diff --git a/libXfont/src/builtins/file.c b/libXfont/src/builtins/file.c
index a46b0a65e..f08f67f88 100644
--- a/libXfont/src/builtins/file.c
+++ b/libXfont/src/builtins/file.c
@@ -87,7 +87,7 @@ BuiltinClose (BufFilePtr f, int unused)
{
BuiltinIOPtr io = ((BuiltinIOPtr) f->private);
- xfree (io);
+ free (io);
return 1;
}
@@ -105,7 +105,7 @@ BuiltinFileOpen (char *name)
break;
if (i == builtin_files_count)
return NULL;
- io = (BuiltinIOPtr) xalloc (sizeof (BuiltinIORec));
+ io = malloc (sizeof (BuiltinIORec));
if (!io)
return NULL;
io->offset = 0;
@@ -113,7 +113,7 @@ BuiltinFileOpen (char *name)
raw = BufFileCreate ((char *) io, BuiltinFill, 0, BuiltinSkip, BuiltinClose);
if (!raw)
{
- xfree (io);
+ free (io);
return NULL;
}
if ((cooked = BufFilePushZIP (raw)))
diff --git a/libXfont/src/builtins/render.c b/libXfont/src/builtins/render.c
index 871665f89..52c24b9dc 100644
--- a/libXfont/src/builtins/render.c
+++ b/libXfont/src/builtins/render.c
@@ -50,7 +50,7 @@ BuiltinOpenBitmap (FontPathElementPtr fpe, FontPtr *ppFont, int flags,
file = BuiltinFileOpen (fileName);
if (!file)
return BadFontName;
- pFont = (FontPtr) xalloc(sizeof(FontRec));
+ pFont = malloc(sizeof(FontRec));
if (!pFont) {
BuiltinFileClose (file, 0);
return AllocError;
@@ -69,7 +69,7 @@ BuiltinOpenBitmap (FontPathElementPtr fpe, FontPtr *ppFont, int flags,
BuiltinFileClose (file, 0);
if (ret != Successful)
- xfree(pFont);
+ free(pFont);
else
*ppFont = pFont;
return ret;
diff --git a/libXfont/src/fc/Makefile.in b/libXfont/src/fc/Makefile.in
index 77afa8db3..a94136b14 100644
--- a/libXfont/src/fc/Makefile.in
+++ b/libXfont/src/fc/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -46,7 +46,7 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
libfc_la_LIBADD =
am_libfc_la_OBJECTS = fsconvert.lo fserve.lo fsio.lo fstrans.lo
libfc_la_OBJECTS = $(am_libfc_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include/X11/fonts
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -77,22 +77,18 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENCODINGSDIR = @ENCODINGSDIR@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
FREETYPE_LIBS = @FREETYPE_LIBS@
FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
@@ -102,17 +98,24 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATH_LIBS = @MATH_LIBS@
MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -122,6 +125,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -135,8 +139,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -169,6 +172,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -181,6 +185,7 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = \
@@ -206,8 +211,8 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -286,8 +291,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -299,8 +304,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -310,13 +315,12 @@ ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
diff --git a/libXfont/src/fc/fsconvert.c b/libXfont/src/fc/fsconvert.c
index 8cdda2a79..724bc5fb4 100644
--- a/libXfont/src/fc/fsconvert.c
+++ b/libXfont/src/fc/fsconvert.c
@@ -108,8 +108,7 @@ _fs_convert_props(fsPropInfo *pi, fsPropOffset *po, pointer pd,
|| nprops > SIZE_MAX/(sizeof(FontPropRec) + sizeof(char)))
return -1;
- dprop = (FontPropPtr) xalloc(sizeof(FontPropRec) * nprops +
- sizeof (char) * nprops);
+ dprop = malloc(sizeof(FontPropRec) * nprops + sizeof (char) * nprops);
if (!dprop)
return -1;
@@ -132,7 +131,7 @@ _fs_convert_props(fsPropInfo *pi, fsPropOffset *po, pointer pd,
local_off.value.length, 1);
if (dprop->value == BAD_RESOURCE)
{
- xfree (pfi->props);
+ free (pfi->props);
pfi->nprops = 0;
pfi->props = 0;
pfi->isStringProp = 0;
@@ -150,7 +149,7 @@ _fs_free_props (FontInfoPtr pfi)
{
if (pfi->props)
{
- xfree (pfi->props);
+ free (pfi->props);
pfi->nprops = 0;
pfi->props = 0;
}
@@ -616,12 +615,12 @@ _fs_unload_font(FontPtr pfont)
* fsdata points at FSFontRec, FSFontDataRec and name
*/
if (encoding)
- xfree(encoding);
+ free(encoding);
while ((glyphs = fsdata->glyphs))
{
fsdata->glyphs = glyphs->next;
- xfree (glyphs);
+ free (glyphs);
}
/* XXX we may get called after the resource DB has been cleaned out */
@@ -630,7 +629,7 @@ _fs_unload_font(FontPtr pfont)
_fs_free_props (&pfont->info);
- xfree(fsdata);
+ free(fsdata);
DestroyFontRec(pfont);
}
@@ -650,9 +649,7 @@ fs_create_font (FontPathElementPtr fpe,
pfont = CreateFontRec ();
if (!pfont)
return 0;
- fsfont = (FSFontPtr) xalloc (sizeof (FSFontRec) +
- sizeof (FSFontDataRec) +
- namelen + 1);
+ fsfont = malloc (sizeof (FSFontRec) + sizeof (FSFontDataRec) + namelen + 1);
if (!fsfont)
{
DestroyFontRec (pfont);
@@ -703,7 +700,7 @@ fs_create_font (FontPathElementPtr fpe,
/* save the ID */
if (!StoreFontClientFont(pfont, fsd->fontid))
{
- xfree (fsfont);
+ free (fsfont);
DestroyFontRec (pfont);
return 0;
}
@@ -717,7 +714,7 @@ fs_alloc_glyphs (FontPtr pFont, int size)
FSGlyphPtr glyphs;
FSFontPtr fsfont = (FSFontPtr) pFont->fontPrivate;
- glyphs = xalloc (sizeof (FSGlyphRec) + size);
+ glyphs = malloc (sizeof (FSGlyphRec) + size);
glyphs->next = fsfont->glyphs;
fsfont->glyphs = glyphs;
return (pointer) (glyphs + 1);
diff --git a/libXfont/src/fc/fserve.c b/libXfont/src/fc/fserve.c
index 07ada34b6..2ba08e8b0 100644
--- a/libXfont/src/fc/fserve.c
+++ b/libXfont/src/fc/fserve.c
@@ -217,14 +217,6 @@ _fs_add_rep_log (FSFpePtr conn, fsGenericReply *rep)
static Bool
fs_name_check(char *name)
{
-#ifdef __UNIXOS2__
- /* OS/2 uses D:/usr/X11R6/.... as fontfile pathnames, so check that
- * there is not only a protocol/ prefix, but also that the first chars
- * are not a drive letter
- */
- if (name && isalpha(*name) && name[1] == ':')
- return FALSE;
-#endif
/* Just make sure there is a protocol/ prefix */
return (name && *name != '/' && strchr(name, '/'));
}
@@ -266,7 +258,7 @@ fs_close_conn(FSFpePtr conn)
for (client = conn->clients; client; client = nclient)
{
nclient = client->next;
- xfree (client);
+ free (client);
}
conn->clients = NULL;
}
@@ -411,7 +403,7 @@ fs_new_block_rec(FontPathElementPtr fpe, pointer client, int type)
size = 0;
break;
}
- blockrec = (FSBlockDataPtr) xalloc(sizeof(FSBlockDataRec) + size);
+ blockrec = malloc(sizeof(FSBlockDataRec) + size);
if (!blockrec)
return (FSBlockDataPtr) 0;
blockrec->data = (pointer) (blockrec + 1);
@@ -462,9 +454,9 @@ _fs_remove_block_rec(FSFpePtr conn, FSBlockDataPtr blockrec)
{
FSBlockedGlyphPtr bglyph = (FSBlockedGlyphPtr)blockrec->data;
if (bglyph->num_expected_ranges)
- xfree(bglyph->expected_ranges);
+ free(bglyph->expected_ranges);
}
- xfree(blockrec);
+ free(blockrec);
_fs_set_pending_reply (conn);
}
@@ -477,7 +469,7 @@ _fs_signal_clients_depending(FSClientsDependingPtr *clients_depending)
{
*clients_depending = p->next;
ClientSignal(p->client);
- xfree(p);
+ free(p);
}
}
@@ -493,7 +485,7 @@ _fs_add_clients_depending(FSClientsDependingPtr *clients_depending, pointer clie
return Suspended;
}
- new = (FSClientsDependingPtr)xalloc (sizeof (FSClientsDependingRec));
+ new = malloc (sizeof (FSClientsDependingRec));
if (!new)
return BadAlloc;
@@ -981,7 +973,7 @@ fs_read_extent_info(FontPathElementPtr fpe, FSBlockDataPtr blockrec)
numInfos *= 2;
haveInk = TRUE;
}
- ci = pCI = (CharInfoPtr) xalloc(sizeof(CharInfoRec) * numInfos);
+ ci = pCI = malloc(sizeof(CharInfoRec) * numInfos);
if (!pCI)
{
@@ -1626,6 +1618,7 @@ fs_send_open_font(pointer client, FontPathElementPtr fpe, Mask flags,
buf[0] = (unsigned char) namelen;
memcpy(&buf[1], name, namelen);
openreq.reqType = FS_OpenBitmapFont;
+ openreq.pad = 0;
openreq.fid = fsd->fontid;
openreq.format_hint = fsd->format;
openreq.format_mask = fsd->fmask;
@@ -1638,6 +1631,7 @@ fs_send_open_font(pointer client, FontPathElementPtr fpe, Mask flags,
blockrec->sequenceNumber = conn->current_seq;
inforeq.reqType = FS_QueryXInfo;
+ inforeq.pad = 0;
inforeq.id = fsd->fontid;
inforeq.length = SIZEOF(fsQueryXInfoReq) >> 2;
@@ -1764,6 +1758,7 @@ fs_send_close_font(FontPathElementPtr fpe, Font id)
return Successful;
/* tell the font server to close the font */
req.reqType = FS_CloseFont;
+ req.pad = 0;
req.length = SIZEOF(fsCloseReq) >> 2;
req.id = id;
_fs_add_req_log(conn, FS_CloseFont);
@@ -2156,7 +2151,7 @@ _fs_load_glyphs(pointer client, FontPtr pfont, Bool range_flag,
if (nranges)
{
_fs_clean_aborted_loadglyphs(pfont, nranges, ranges);
- xfree(ranges);
+ free(ranges);
}
return _fs_add_clients_depending(clients_depending, client);
}
@@ -2184,7 +2179,7 @@ _fs_load_glyphs(pointer client, FontPtr pfont, Bool range_flag,
/* Since we're not ready to send the load_glyphs request yet,
clean up the damage caused by the fs_build_range() call. */
_fs_clean_aborted_loadglyphs(pfont, nranges, ranges);
- xfree(ranges);
+ free(ranges);
/* Now try to reopen the font. */
return fs_send_open_font(client, pfont->fpe,
@@ -2296,6 +2291,7 @@ fs_send_list_fonts(pointer client, FontPathElementPtr fpe, char *pattern,
/* send the request */
req.reqType = FS_ListFonts;
+ req.pad = 0;
req.maxNames = maxnames;
req.nbytes = patlen;
req.length = (SIZEOF(fsListFontsReq) + patlen + 3) >> 2;
@@ -2466,6 +2462,7 @@ fs_start_list_with_info(pointer client, FontPathElementPtr fpe,
/* send the request */
req.reqType = FS_ListFontsWithXInfo;
+ req.pad = 0;
req.maxNames = maxnames;
req.nbytes = len;
req.length = (SIZEOF(fsListFontsWithXInfoReq) + len + 3) >> 2;
@@ -2566,12 +2563,13 @@ fs_client_died(pointer client, FontPathElementPtr fpe)
{
if (cur->client == client) {
freeac.reqType = FS_FreeAC;
+ freeac.pad = 0;
freeac.id = cur->acid;
freeac.length = sizeof (fsFreeACReq) >> 2;
_fs_add_req_log(conn, FS_FreeAC);
_fs_write (conn, (char *) &freeac, sizeof (fsFreeACReq));
*prev = cur->next;
- xfree (cur);
+ free (cur);
break;
}
}
@@ -2625,7 +2623,7 @@ _fs_client_access (FSFpePtr conn, pointer client, Bool sync)
}
if (!cur)
{
- cur = (FSClientPtr) xalloc (sizeof (FSClientRec));
+ cur = malloc (sizeof (FSClientRec));
if (!cur)
return;
cur->client = client;
@@ -2640,6 +2638,7 @@ _fs_client_access (FSFpePtr conn, pointer client, Bool sync)
{
fsFreeACReq freeac;
freeac.reqType = FS_FreeAC;
+ freeac.pad = 0;
freeac.id = cur->acid;
freeac.length = sizeof (fsFreeACReq) >> 2;
_fs_add_req_log(conn, FS_FreeAC);
@@ -2668,6 +2667,7 @@ _fs_client_access (FSFpePtr conn, pointer client, Bool sync)
if (conn->curacid != cur->acid)
{
setac.reqType = FS_SetAuthorization;
+ setac.pad = 0;
setac.length = sizeof (fsSetAuthorizationReq) >> 2;
setac.id = cur->acid;
_fs_add_req_log(conn, FS_SetAuthorization);
@@ -2810,15 +2810,14 @@ _fs_recv_conn_setup (FSFpePtr conn)
*/
if (conn->alts)
{
- xfree (conn->alts);
+ free (conn->alts);
conn->alts = 0;
conn->numAlts = 0;
}
if (setup->num_alternates)
{
- alts = (FSFpeAltPtr) xalloc (setup->num_alternates *
- sizeof (FSFpeAltRec) +
- (setup->alternate_len << 2));
+ alts = malloc (setup->num_alternates * sizeof (FSFpeAltRec) +
+ (setup->alternate_len << 2));
if (alts)
{
alt_names = (char *) (setup + 1);
@@ -2971,6 +2970,7 @@ _fs_send_cat_sync (FSFpePtr conn)
lcreq.length = (SIZEOF(fsListCataloguesReq)) >> 2;
lcreq.maxNames = 0;
lcreq.nbytes = 0;
+ lcreq.pad2 = 0;
_fs_add_req_log(conn, FS_SetCatalogues);
if (_fs_write(conn, (char *) &lcreq, SIZEOF(fsListCataloguesReq)) != FSIO_READY)
return FSIO_ERROR;
@@ -3151,13 +3151,12 @@ _fs_init_conn (char *servername)
{
FSFpePtr conn;
- conn = xalloc (sizeof (FSFpeRec) + strlen (servername) + 1);
+ conn = calloc (1, sizeof (FSFpeRec) + strlen (servername) + 1);
if (!conn)
return 0;
- memset (conn, '\0', sizeof (FSFpeRec));
if (!_fs_io_init (conn))
{
- xfree (conn);
+ free (conn);
return 0;
}
conn->servername = (char *) (conn + 1);
@@ -3173,8 +3172,8 @@ _fs_free_conn (FSFpePtr conn)
_fs_close_server (conn);
_fs_io_fini (conn);
if (conn->alts)
- xfree (conn->alts);
- xfree (conn);
+ free (conn->alts);
+ free (conn);
}
/*
@@ -3200,70 +3199,3 @@ fs_register_fpe_functions(void)
NULL,
NULL);
}
-
-static int
-check_fs_open_font(pointer client, FontPathElementPtr fpe, Mask flags,
- char *name, int namelen,
- fsBitmapFormat format, fsBitmapFormatMask fmask,
- XID id, FontPtr *ppfont,
- char **alias, FontPtr non_cachable_font)
-{
- if (XpClientIsBitmapClient(client))
- return (fs_open_font(client, fpe, flags, name, namelen, format,
- fmask, id, ppfont, alias, non_cachable_font) );
- return BadFontName;
-}
-
-static int
-check_fs_list_fonts(pointer client, FontPathElementPtr fpe,
- char *pattern, int patlen, int maxnames,
- FontNamesPtr newnames)
-{
- if (XpClientIsBitmapClient(client))
- return (fs_list_fonts(client, fpe, pattern, patlen, maxnames,
- newnames));
- return BadFontName;
-}
-
-static int
-check_fs_start_list_with_info(pointer client, FontPathElementPtr fpe,
- char *pattern, int len, int maxnames,
- pointer *pdata)
-{
- if (XpClientIsBitmapClient(client))
- return (fs_start_list_with_info(client, fpe, pattern, len, maxnames,
- pdata));
- return BadFontName;
-}
-
-static int
-check_fs_next_list_with_info(pointer client, FontPathElementPtr fpe,
- char **namep, int *namelenp,
- FontInfoPtr *pFontInfo, int *numFonts,
- pointer private)
-{
- if (XpClientIsBitmapClient(client))
- return (fs_next_list_with_info(client, fpe, namep, namelenp, pFontInfo,
- numFonts,private));
- return BadFontName;
-}
-
-void
-check_fs_register_fpe_functions(void)
-{
- RegisterFPEFunctions(fs_name_check,
- fs_init_fpe,
- fs_free_fpe,
- fs_reset_fpe,
- check_fs_open_font,
- fs_close_font,
- check_fs_list_fonts,
- check_fs_start_list_with_info,
- check_fs_next_list_with_info,
- fs_wakeup,
- fs_client_died,
- _fs_load_glyphs,
- NULL,
- NULL,
- NULL);
-}
diff --git a/libXfont/src/fc/fsio.c b/libXfont/src/fc/fsio.c
index 2b55f8520..79dc0d695 100644
--- a/libXfont/src/fc/fsio.c
+++ b/libXfont/src/fc/fsio.c
@@ -64,9 +64,6 @@
#define EINTR WSAEINTR
#endif
-#ifdef __UNIXOS2__
-#define select(n,r,w,x,t) os2PseudoSelect(n,r,w,x,t)
-#endif
static int padlength[4] = {0, 3, 2, 1};
@@ -284,7 +281,7 @@ _fs_flush (FSFpePtr conn)
{
_fs_unmark_block (conn, FS_BROKEN_WRITE|FS_PENDING_WRITE);
if (conn->outBuf.size > FS_BUF_INC)
- conn->outBuf.buf = xrealloc (conn->outBuf.buf, FS_BUF_INC);
+ conn->outBuf.buf = realloc (conn->outBuf.buf, FS_BUF_INC);
conn->outBuf.remove = conn->outBuf.insert = 0;
}
return FSIO_READY;
@@ -310,7 +307,7 @@ _fs_resize (FSBufPtr buf, long size)
if (buf->size - buf->remove < size)
{
new_size = ((buf->remove + size + FS_BUF_INC) / FS_BUF_INC) * FS_BUF_INC;
- new = xrealloc (buf->buf, new_size);
+ new = realloc (buf->buf, new_size);
if (!new)
return FSIO_ERROR;
buf->buf = new;
@@ -327,7 +324,7 @@ _fs_downsize (FSBufPtr buf, long size)
buf->insert = buf->remove = 0;
if (buf->size > size)
{
- buf->buf = xrealloc (buf->buf, size);
+ buf->buf = realloc (buf->buf, size);
buf->size = size;
}
}
@@ -346,16 +343,16 @@ Bool
_fs_io_init (FSFpePtr conn)
{
conn->outBuf.insert = conn->outBuf.remove = 0;
- conn->outBuf.buf = xalloc (FS_BUF_INC);
+ conn->outBuf.buf = malloc (FS_BUF_INC);
if (!conn->outBuf.buf)
return FALSE;
conn->outBuf.size = FS_BUF_INC;
conn->inBuf.insert = conn->inBuf.remove = 0;
- conn->inBuf.buf = xalloc (FS_BUF_INC);
+ conn->inBuf.buf = malloc (FS_BUF_INC);
if (!conn->inBuf.buf)
{
- xfree (conn->outBuf.buf);
+ free (conn->outBuf.buf);
conn->outBuf.buf = 0;
return FALSE;
}
@@ -368,9 +365,9 @@ void
_fs_io_fini (FSFpePtr conn)
{
if (conn->outBuf.buf)
- xfree (conn->outBuf.buf);
+ free (conn->outBuf.buf);
if (conn->inBuf.buf)
- xfree (conn->inBuf.buf);
+ free (conn->inBuf.buf);
}
static int
@@ -397,6 +394,8 @@ _fs_do_write(FSFpePtr conn, char *data, long len, long size)
}
}
memcpy (conn->outBuf.buf + conn->outBuf.insert, data, len);
+ /* Clear pad data */
+ memset (conn->outBuf.buf + conn->outBuf.insert + len, 0, size - len);
conn->outBuf.insert += size;
_fs_mark_block (conn, FS_PENDING_WRITE);
return FSIO_READY;
diff --git a/libXfont/src/fc/fslibos.h b/libXfont/src/fc/fslibos.h
index acc1f16dc..65c440c7a 100644
--- a/libXfont/src/fc/fslibos.h
+++ b/libXfont/src/fc/fslibos.h
@@ -64,7 +64,7 @@ from The Open Group.
# endif
#endif
#ifndef OPEN_MAX
-#if defined(SVR4) || defined(__UNIXOS2__)
+#if defined(SVR4)
#define OPEN_MAX 256
#else
#include <sys/param.h>
diff --git a/libXfont/src/fontfile/Makefile.am b/libXfont/src/fontfile/Makefile.am
index 45d1dbaa4..05aded262 100644
--- a/libXfont/src/fontfile/Makefile.am
+++ b/libXfont/src/fontfile/Makefile.am
@@ -18,7 +18,6 @@ libfontfile_la_SOURCES = \
decompress.c \
defaults.c \
dirfile.c \
- ffcheck.c \
fileio.c \
filewr.c \
fontdir.c \
@@ -26,7 +25,6 @@ libfontfile_la_SOURCES = \
fontfile.c \
fontscale.c \
gunzip.c \
- printerfont.c \
register.c \
renderers.c \
catalogue.c
diff --git a/libXfont/src/fontfile/Makefile.in b/libXfont/src/fontfile/Makefile.in
index dca443eaa..90d04a5a6 100644
--- a/libXfont/src/fontfile/Makefile.in
+++ b/libXfont/src/fontfile/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -47,17 +47,16 @@ LTLIBRARIES = $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
libfontfile_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__libfontfile_la_SOURCES_DIST = bitsource.c bufio.c decompress.c \
- defaults.c dirfile.c ffcheck.c fileio.c filewr.c fontdir.c \
- fontencc.c fontfile.c fontscale.c gunzip.c printerfont.c \
- register.c renderers.c catalogue.c bunzip2.c
+ defaults.c dirfile.c fileio.c filewr.c fontdir.c fontencc.c \
+ fontfile.c fontscale.c gunzip.c register.c renderers.c \
+ catalogue.c bunzip2.c
@X_BZIP2_FONT_COMPRESSION_TRUE@am__objects_1 = bunzip2.lo
am_libfontfile_la_OBJECTS = bitsource.lo bufio.lo decompress.lo \
- defaults.lo dirfile.lo ffcheck.lo fileio.lo filewr.lo \
- fontdir.lo fontencc.lo fontfile.lo fontscale.lo gunzip.lo \
- printerfont.lo register.lo renderers.lo catalogue.lo \
- $(am__objects_1)
+ defaults.lo dirfile.lo fileio.lo filewr.lo fontdir.lo \
+ fontencc.lo fontfile.lo fontscale.lo gunzip.lo register.lo \
+ renderers.lo catalogue.lo $(am__objects_1)
libfontfile_la_OBJECTS = $(am_libfontfile_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include/X11/fonts
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -88,22 +87,18 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENCODINGSDIR = @ENCODINGSDIR@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
FREETYPE_LIBS = @FREETYPE_LIBS@
FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
@@ -113,17 +108,24 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATH_LIBS = @MATH_LIBS@
MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -133,6 +135,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -146,8 +149,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -180,6 +182,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -192,6 +195,7 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
FONTENCDIR = @ENCODINGSDIR@
@@ -206,9 +210,9 @@ libfontfile_la_LIBADD = \
$(Z_LIBS)
libfontfile_la_SOURCES = bitsource.c bufio.c decompress.c defaults.c \
- dirfile.c ffcheck.c fileio.c filewr.c fontdir.c fontencc.c \
- fontfile.c fontscale.c gunzip.c printerfont.c register.c \
- renderers.c catalogue.c $(am__append_1)
+ dirfile.c fileio.c filewr.c fontdir.c fontencc.c fontfile.c \
+ fontscale.c gunzip.c register.c renderers.c catalogue.c \
+ $(am__append_1)
all: all-am
.SUFFIXES:
@@ -217,8 +221,8 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -267,7 +271,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/decompress.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/defaults.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirfile.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ffcheck.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileio.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filewr.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontdir.Plo@am__quote@
@@ -275,7 +278,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontfile.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontscale.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gunzip.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printerfont.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/register.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/renderers.Plo@am__quote@
@@ -311,8 +313,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -324,8 +326,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -335,13 +337,12 @@ ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
diff --git a/libXfont/src/fontfile/bitsource.c b/libXfont/src/fontfile/bitsource.c
index ae27de8fe..d828ce815 100644
--- a/libXfont/src/fontfile/bitsource.c
+++ b/libXfont/src/fontfile/bitsource.c
@@ -51,7 +51,7 @@ FontFileRegisterBitmapSource (FontPathElementPtr fpe)
if (FontFileBitmapSources.count == FontFileBitmapSources.size)
{
newsize = FontFileBitmapSources.size + 4;
- new = (FontPathElementPtr *) xrealloc (FontFileBitmapSources.fpe, newsize * sizeof *new);
+ new = realloc (FontFileBitmapSources.fpe, newsize * sizeof *new);
if (!new)
return FALSE;
FontFileBitmapSources.size = newsize;
@@ -73,7 +73,7 @@ FontFileUnregisterBitmapSource (FontPathElementPtr fpe)
if (FontFileBitmapSources.count == 0)
{
FontFileBitmapSources.size = 0;
- xfree (FontFileBitmapSources.fpe);
+ free (FontFileBitmapSources.fpe);
FontFileBitmapSources.fpe = 0;
}
else
@@ -99,7 +99,7 @@ FontFileEmptyBitmapSource(void)
FontFileBitmapSources.count = 0;
FontFileBitmapSources.size = 0;
- xfree (FontFileBitmapSources.fpe);
+ free (FontFileBitmapSources.fpe);
FontFileBitmapSources.fpe = 0;
}
diff --git a/libXfont/src/fontfile/bufio.c b/libXfont/src/fontfile/bufio.c
index a5746e3bd..dd8d6e282 100644
--- a/libXfont/src/fontfile/bufio.c
+++ b/libXfont/src/fontfile/bufio.c
@@ -51,7 +51,7 @@ BufFileCreate (char *private,
{
BufFilePtr f;
- f = (BufFilePtr) xalloc (sizeof *f);
+ f = malloc (sizeof *f);
if (!f)
return 0;
f->private = private;
@@ -125,7 +125,7 @@ BufFileRawClose (BufFilePtr f, int doClose)
BufFilePtr
BufFileOpenRead (int fd)
{
-#if defined(__UNIXOS2__) || defined (WIN32)
+#if defined (WIN32)
/* hv: I'd bet WIN32 has the same effect here */
setmode(fd,O_BINARY);
#endif
@@ -160,7 +160,7 @@ BufFileOpenWrite (int fd)
{
BufFilePtr f;
-#if defined(__UNIXOS2__) || defined(WIN32)
+#if defined(WIN32)
/* hv: I'd bet WIN32 has the same effect here */
setmode(fd,O_BINARY);
#endif
@@ -201,6 +201,6 @@ BufFileClose (BufFilePtr f, int doClose)
{
int ret;
ret = (*f->close) (f, doClose);
- xfree (f);
+ free (f);
return ret;
}
diff --git a/libXfont/src/fontfile/bunzip2.c b/libXfont/src/fontfile/bunzip2.c
index 9964de6e9..d8b9321e1 100644
--- a/libXfont/src/fontfile/bunzip2.c
+++ b/libXfont/src/fontfile/bunzip2.c
@@ -54,7 +54,7 @@ BufFilePushBZIP2 (BufFilePtr f)
{
xzip_buf *x;
- x = (xzip_buf *) xalloc (sizeof (xzip_buf));
+ x = malloc (sizeof (xzip_buf));
if (!x) return NULL;
bzero(&(x->z), sizeof(bz_stream));
@@ -64,7 +64,7 @@ BufFilePushBZIP2 (BufFilePtr f)
0, /* verbosity: 0 silent, 4 max */
0); /* 0: go faster, 1: use less memory */
if (x->zstat != BZ_OK) {
- xfree(x);
+ free(x);
return NULL;
}
@@ -87,7 +87,7 @@ BufBzip2FileClose(BufFilePtr f, int flag)
xzip_buf *x = (xzip_buf *)f->private;
BZ2_bzDecompressEnd (&(x->z));
BufFileClose (x->f, flag);
- xfree (x);
+ free (x);
return 1;
}
diff --git a/libXfont/src/fontfile/catalogue.c b/libXfont/src/fontfile/catalogue.c
index d49423617..3a04a754d 100644
--- a/libXfont/src/fontfile/catalogue.c
+++ b/libXfont/src/fontfile/catalogue.c
@@ -61,8 +61,7 @@ CatalogueAddFPE (CataloguePtr cat, FontPathElementPtr fpe)
else
cat->fpeAlloc *= 2;
- new = xrealloc(cat->fpeList,
- cat->fpeAlloc * sizeof(FontPathElementPtr));
+ new = realloc(cat->fpeList, cat->fpeAlloc * sizeof(FontPathElementPtr));
if (new == NULL)
return AllocError;
@@ -115,8 +114,8 @@ CatalogueUnrefFPEs (FontPathElementPtr fpe)
if (subfpe->refcount == 0)
{
FontFileFreeFPE (subfpe);
- xfree(subfpe->name);
- xfree(subfpe);
+ free(subfpe->name);
+ free(subfpe);
}
}
@@ -150,7 +149,7 @@ CatalogueRescan (FontPathElementPtr fpe, Bool forceScan)
dir = opendir(path);
if (dir == NULL)
{
- xfree(cat);
+ free(cat);
return BadFontPath;
}
@@ -180,7 +179,7 @@ CatalogueRescan (FontPathElementPtr fpe, Bool forceScan)
len += strlen(attrib);
}
- subfpe = xalloc(sizeof *subfpe);
+ subfpe = malloc(sizeof *subfpe);
if (subfpe == NULL)
continue;
@@ -190,10 +189,10 @@ CatalogueRescan (FontPathElementPtr fpe, Bool forceScan)
* (which uses font->fpe->type) goes to CatalogueCloseFont. */
subfpe->type = fpe->type;
subfpe->name_length = len;
- subfpe->name = xalloc (len + 1);
+ subfpe->name = malloc (len + 1);
if (subfpe == NULL)
{
- xfree(subfpe);
+ free(subfpe);
continue;
}
@@ -207,15 +206,15 @@ CatalogueRescan (FontPathElementPtr fpe, Bool forceScan)
if (FontFileInitFPE (subfpe) != Successful)
{
- xfree(subfpe->name);
- xfree(subfpe);
+ free(subfpe->name);
+ free(subfpe);
continue;
}
if (CatalogueAddFPE(cat, subfpe) != Successful)
{
FontFileFreeFPE (subfpe);
- xfree(subfpe);
+ free(subfpe);
continue;
}
}
@@ -235,7 +234,7 @@ CatalogueInitFPE (FontPathElementPtr fpe)
{
CataloguePtr cat;
- cat = (CataloguePtr) xalloc(sizeof *cat);
+ cat = malloc(sizeof *cat);
if (cat == NULL)
return AllocError;
@@ -271,8 +270,8 @@ CatalogueFreeFPE (FontPathElementPtr fpe)
return FontFileFreeFPE (fpe);
CatalogueUnrefFPEs (fpe);
- xfree(cat->fpeList);
- xfree(cat);
+ free(cat->fpeList);
+ free(cat);
return Successful;
}
@@ -356,8 +355,7 @@ CatalogueStartListFonts(pointer client, FontPathElementPtr fpe,
CatalogueRescan (fpe, FALSE);
- data = (LFWIDataPtr) xalloc (sizeof *data +
- sizeof data->privates[0] * cat->fpeCount);
+ data = malloc (sizeof *data + sizeof data->privates[0] * cat->fpeCount);
if (!data)
return AllocError;
data->privates = (pointer *) (data + 1);
@@ -377,7 +375,7 @@ CatalogueStartListFonts(pointer client, FontPathElementPtr fpe,
bail:
for (j = 0; j < i; j++)
/* FIXME: we have no way to free the per-fpe privates. */;
- xfree (data);
+ free (data);
return AllocError;
}
@@ -402,7 +400,7 @@ CatalogueListNextFontWithInfo(pointer client, FontPathElementPtr fpe,
if (data->current == cat->fpeCount)
{
- xfree(data);
+ free(data);
return BadFontName;
}
@@ -439,7 +437,7 @@ CatalogueListNextFontOrAlias(pointer client, FontPathElementPtr fpe,
if (data->current == cat->fpeCount)
{
- xfree(data);
+ free(data);
return BadFontName;
}
diff --git a/libXfont/src/fontfile/decompress.c b/libXfont/src/fontfile/decompress.c
index a4c546871..cdfb49279 100644
--- a/libXfont/src/fontfile/decompress.c
+++ b/libXfont/src/fontfile/decompress.c
@@ -162,7 +162,7 @@ BufFilePushCompressed (BufFilePtr f)
hsize = hsize_table[maxbits - 12];
extra = (1 << maxbits) * sizeof (char_type) +
hsize * sizeof (unsigned short);
- file = (CompressedFile *) xalloc (sizeof (CompressedFile) + extra);
+ file = malloc (sizeof (CompressedFile) + extra);
if (!file)
return 0;
file->file = f;
@@ -203,7 +203,7 @@ BufCompressedClose (BufFilePtr f, int doClose)
file = (CompressedFile *) f->private;
raw = file->file;
- xfree (file);
+ free (file);
BufFileClose (raw, doClose);
return 1;
}
diff --git a/libXfont/src/fontfile/dirfile.c b/libXfont/src/fontfile/dirfile.c
index 148993896..588464ffb 100644
--- a/libXfont/src/fontfile/dirfile.c
+++ b/libXfont/src/fontfile/dirfile.c
@@ -66,7 +66,7 @@ FontFileReadDirectory (char *directory, FontDirectoryPtr *pdir)
status;
struct stat statb;
static char format[24] = "";
-#if defined(__UNIXOS2__) || defined(WIN32)
+#if defined(WIN32)
int i;
#endif
@@ -76,7 +76,7 @@ FontFileReadDirectory (char *directory, FontDirectoryPtr *pdir)
return BadFontPath;
/* Check for font directory attributes */
-#if !defined(__UNIXOS2__) && !defined(WIN32)
+#if !defined(WIN32)
if ((ptr = strchr(directory, ':'))) {
#else
/* OS/2 and WIN32 path might start with a drive letter, don't clip this */
@@ -118,7 +118,7 @@ FontFileReadDirectory (char *directory, FontDirectoryPtr *pdir)
MAXFONTFILENAMELEN-1, MAXFONTNAMELEN-1);
while ((count = fscanf(file, format, file_name, font_name)) != EOF) {
-#if defined(__UNIXOS2__) || defined(WIN32)
+#if defined(WIN32)
/* strip any existing trailing CR */
for (i=0; i<strlen(font_name); i++) {
if (font_name[i]=='\r') font_name[i] = '\0';
@@ -378,7 +378,7 @@ lexAlias(FILE *file, char **lexToken)
char *nbuf;
nsize = tokenSize ? (tokenSize << 1) : 64;
- nbuf = (char *) xrealloc(tokenBuf, nsize);
+ nbuf = realloc(tokenBuf, nsize);
if (!nbuf)
return EALLOC;
tokenBuf = nbuf;
diff --git a/libXfont/src/fontfile/ffcheck.c b/libXfont/src/fontfile/ffcheck.c
deleted file mode 100644
index 70d117e46..000000000
--- a/libXfont/src/fontfile/ffcheck.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* $Xorg: ffcheck.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */
-
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/fontfile/ffcheck.c,v 1.15tsi Exp $ */
-
-/*
- * Author: Keith Packard, MIT X Consortium
- */
-/* $NCDXorg: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/fonts/fntfilst.h>
-#include <X11/fonts/bitmap.h>
-#include <X11/fonts/fontmod.h>
-
-/*
- * Map FPE functions to renderer functions
- */
-
-
-/* Here we must check the client to see if it has a context attached to
- * it that allows us to access the printer fonts
- */
-
-static int
-FontFileCheckOpenFont (pointer client, FontPathElementPtr fpe, Mask flags,
- char *name, int namelen,
- fsBitmapFormat format, fsBitmapFormatMask fmask,
- XID id, FontPtr *pFont, char **aliasName,
- FontPtr non_cachable_font)
-{
- if (XpClientIsBitmapClient(client))
- return (FontFileOpenFont (client, fpe, flags, name, namelen, format,
- fmask, id, pFont, aliasName, non_cachable_font));
- return BadFontName;
-}
-
-static int
-FontFileCheckListFonts (pointer client, FontPathElementPtr fpe,
- char *pat, int len, int max, FontNamesPtr names)
-{
- if (XpClientIsBitmapClient(client))
- return FontFileListFonts (client, fpe, pat, len, max, names);
- return BadFontName;
-}
-
-static int
-FontFileCheckStartListFontsWithInfo(pointer client, FontPathElementPtr fpe,
- char *pat, int len, int max,
- pointer *privatep)
-{
- if (XpClientIsBitmapClient(client))
- return FontFileStartListFontsWithInfo(client, fpe, pat, len,
- max, privatep);
- return BadFontName;
-}
-
-static int
-FontFileCheckListNextFontWithInfo(pointer client, FontPathElementPtr fpe,
- char **namep, int *namelenp,
- FontInfoPtr *pFontInfo,
- int *numFonts, pointer private)
-{
- if (XpClientIsBitmapClient(client))
- return FontFileListNextFontWithInfo(client, fpe, namep, namelenp,
- pFontInfo, numFonts, private);
- return BadFontName;
-}
-
-static int
-FontFileCheckStartListFontsAndAliases(pointer client, FontPathElementPtr fpe,
- char *pat, int len, int max,
- pointer *privatep)
-{
- if (XpClientIsBitmapClient(client))
- return FontFileStartListFontsAndAliases(client, fpe, pat, len,
- max, privatep);
- return BadFontName;
-}
-
-static int
-FontFileCheckListNextFontOrAlias(pointer client, FontPathElementPtr fpe,
- char **namep, int *namelenp,
- char **resolvedp, int *resolvedlenp,
- pointer private)
-{
- if (XpClientIsBitmapClient(client))
- return FontFileListNextFontOrAlias(client, fpe, namep, namelenp,
- resolvedp, resolvedlenp, private);
- return BadFontName;
-}
-
-/* Font renderers to initialize when not linked into something like
- Xorg that provides its own module configuration options */
-static const FontModule builtinFontModuleList[] = {
-#ifdef XFONT_SPEEDO
- {
- SpeedoRegisterFontFileFunctions,
- "speedo",
- NULL
- },
-#endif
-#ifdef XFONT_TYPE1
- {
- Type1RegisterFontFileFunctions,
- "type1",
- NULL
- },
-#endif
-#ifdef XFONT_FREETYPE
- {
- FreeTypeRegisterFontFileFunctions,
- "freetype",
- NULL
- },
-#endif
- /* List terminator - must be last entry */
- { NULL, NULL, NULL }
-};
-
-void
-FontFileCheckRegisterFpeFunctions (void)
-{
- const FontModule *fmlist = builtinFontModuleList;
-
-#ifdef XFONT_BITMAP
- /* bitmap is always builtin to libXfont now */
- BitmapRegisterFontFileFunctions ();
-#endif
-
-#ifdef LOADABLEFONTS
- if (FontModuleList) {
- fmlist = FontModuleList;
- }
-#endif
-
- if (fmlist) {
- int i;
-
- for (i = 0; fmlist[i].name; i++) {
- if (fmlist[i].initFunc) {
- fmlist[i].initFunc();
- }
- }
- }
-
- RegisterFPEFunctions(FontFileNameCheck,
- FontFileInitFPE,
- FontFileFreeFPE,
- FontFileResetFPE,
- FontFileCheckOpenFont,
- FontFileCloseFont,
- FontFileCheckListFonts,
- FontFileCheckStartListFontsWithInfo,
- FontFileCheckListNextFontWithInfo,
- NULL,
- NULL,
- NULL,
- FontFileCheckStartListFontsAndAliases,
- FontFileCheckListNextFontOrAlias,
- FontFileEmptyBitmapSource);
-}
diff --git a/libXfont/src/fontfile/fileio.c b/libXfont/src/fontfile/fileio.c
index 3733148a5..3e2f98a2b 100644
--- a/libXfont/src/fontfile/fileio.c
+++ b/libXfont/src/fontfile/fileio.c
@@ -57,12 +57,7 @@ FontFileOpen (const char *name)
return 0;
}
len = strlen (name);
-#ifndef __UNIXOS2__
if (len > 2 && !strcmp (name + len - 2, ".Z")) {
-#else
- if (len > 2 && (!strcmp (name + len - 4, ".pcz") ||
- !strcmp (name + len - 2, ".Z"))) {
-#endif
cooked = BufFilePushCompressed (raw);
if (!cooked) {
BufFileClose (raw, TRUE);
diff --git a/libXfont/src/fontfile/filewr.c b/libXfont/src/fontfile/filewr.c
index d076f166a..f9c53a2be 100644
--- a/libXfont/src/fontfile/filewr.c
+++ b/libXfont/src/fontfile/filewr.c
@@ -42,7 +42,7 @@ FontFileOpenWrite (const char *name)
{
int fd;
-#if defined(WIN32) || defined(__UNIXOS2__) || defined(__CYGWIN__)
+#if defined(WIN32) || defined(__CYGWIN__)
fd = open (name, O_CREAT|O_TRUNC|O_RDWR|O_BINARY, 0666);
#else
fd = creat (name, 0666);
diff --git a/libXfont/src/fontfile/fontdir.c b/libXfont/src/fontfile/fontdir.c
index 00c751153..8b446a975 100644
--- a/libXfont/src/fontfile/fontdir.c
+++ b/libXfont/src/fontfile/fontdir.c
@@ -51,7 +51,7 @@ FontFileInitTable (FontTablePtr table, int size)
return FALSE;
if (size)
{
- table->entries = (FontEntryPtr) xalloc(sizeof(FontEntryRec) * size);
+ table->entries = malloc(sizeof(FontEntryRec) * size);
if (!table->entries)
return FALSE;
}
@@ -70,32 +70,28 @@ FontFileFreeEntry (FontEntryPtr entry)
int i;
if (entry->name.name)
- xfree(entry->name.name);
+ free(entry->name.name);
entry->name.name = NULL;
switch (entry->type)
{
case FONT_ENTRY_SCALABLE:
- xfree (entry->u.scalable.fileName);
+ free (entry->u.scalable.fileName);
extra = entry->u.scalable.extra;
for (i = 0; i < extra->numScaled; i++)
if (extra->scaled[i].vals.ranges)
- xfree (extra->scaled[i].vals.ranges);
- xfree (extra->scaled);
- xfree (extra);
+ free (extra->scaled[i].vals.ranges);
+ free (extra->scaled);
+ free (extra);
break;
case FONT_ENTRY_BITMAP:
- xfree (entry->u.bitmap.fileName);
+ free (entry->u.bitmap.fileName);
entry->u.bitmap.fileName = NULL;
break;
case FONT_ENTRY_ALIAS:
- xfree (entry->u.alias.resolved);
+ free (entry->u.alias.resolved);
entry->u.alias.resolved = NULL;
break;
-#ifdef NOTYET
- case FONT_ENTRY_BC:
- break;
-#endif
}
}
@@ -106,7 +102,7 @@ FontFileFreeTable (FontTablePtr table)
for (i = 0; i < table->used; i++)
FontFileFreeEntry (&table->entries[i]);
- xfree (table->entries);
+ free (table->entries);
}
FontDirectoryPtr
@@ -118,7 +114,7 @@ FontFileMakeDir(char *dirName, int size)
char *attrib;
int attriblen;
-#if !defined(__UNIXOS2__) && !defined(WIN32)
+#if !defined(WIN32)
attrib = strchr(dirName, ':');
#else
/* OS/2 uses the colon in the drive letter descriptor, skip this */
@@ -136,19 +132,19 @@ FontFileMakeDir(char *dirName, int size)
if (dirlen) /* leave out slash for builtins */
#endif
needslash = 1;
- dir = (FontDirectoryPtr) xalloc(sizeof *dir + dirlen + needslash + 1 +
- (attriblen ? attriblen + 1 : 0));
+ dir = malloc(sizeof *dir + dirlen + needslash + 1 +
+ (attriblen ? attriblen + 1 : 0));
if (!dir)
return (FontDirectoryPtr)0;
if (!FontFileInitTable (&dir->scalable, 0))
{
- xfree (dir);
+ free (dir);
return (FontDirectoryPtr)0;
}
if (!FontFileInitTable (&dir->nonScalable, size))
{
FontFileFreeTable (&dir->scalable);
- xfree (dir);
+ free (dir);
return (FontDirectoryPtr)0;
}
dir->directory = (char *) (dir + 1);
@@ -172,7 +168,7 @@ FontFileFreeDir (FontDirectoryPtr dir)
{
FontFileFreeTable (&dir->scalable);
FontFileFreeTable (&dir->nonScalable);
- xfree(dir);
+ free(dir);
}
FontEntryPtr
@@ -186,8 +182,7 @@ FontFileAddEntry(FontTablePtr table, FontEntryPtr prototype)
return (FontEntryPtr) 0; /* "cannot" happen */
if (table->used == table->size) {
newsize = table->size + 100;
- entry = (FontEntryPtr) xrealloc(table->entries,
- newsize * sizeof(FontEntryRec));
+ entry = realloc(table->entries, newsize * sizeof(FontEntryRec));
if (!entry)
return (FontEntryPtr)0;
table->size = newsize;
@@ -195,7 +190,7 @@ FontFileAddEntry(FontTablePtr table, FontEntryPtr prototype)
}
entry = &table->entries[table->used];
*entry = *prototype;
- entry->name.name = (char *) xalloc(prototype->name.length + 1);
+ entry->name.name = malloc(prototype->name.length + 1);
if (!entry->name.name)
return (FontEntryPtr)0;
memcpy (entry->name.name, prototype->name.name, prototype->name.length);
@@ -439,7 +434,7 @@ FontFileSaveString (char *s)
{
char *n;
- n = (char *) xalloc (strlen (s) + 1);
+ n = malloc (strlen (s) + 1);
if (!n)
return 0;
strcpy (n, s);
@@ -695,7 +690,7 @@ FontFileAddFontFile (FontDirectoryPtr dir, char *fontName, char *fileName)
return FALSE;
if (!(bitmap = FontFileAddEntry (&dir->nonScalable, &entry)))
{
- xfree (entry.u.bitmap.fileName);
+ free (entry.u.bitmap.fileName);
return FALSE;
}
}
@@ -723,7 +718,7 @@ FontFileAddFontFile (FontDirectoryPtr dir, char *fontName, char *fileName)
{
existing->u.scalable.extra->defaults = vals;
- xfree (existing->u.scalable.fileName);
+ free (existing->u.scalable.fileName);
if (!(existing->u.scalable.fileName = FontFileSaveString (fileName)))
return FALSE;
}
@@ -738,10 +733,10 @@ FontFileAddFontFile (FontDirectoryPtr dir, char *fontName, char *fileName)
}
if (!(entry.u.scalable.fileName = FontFileSaveString (fileName)))
return FALSE;
- extra = (FontScalableExtraPtr) xalloc (sizeof (FontScalableExtraRec));
+ extra = malloc (sizeof (FontScalableExtraRec));
if (!extra)
{
- xfree (entry.u.scalable.fileName);
+ free (entry.u.scalable.fileName);
return FALSE;
}
bzero((char *)&extra->defaults, sizeof(extra->defaults));
@@ -791,8 +786,8 @@ FontFileAddFontFile (FontDirectoryPtr dir, char *fontName, char *fileName)
entry.u.scalable.extra = extra;
if (!(scalable = FontFileAddEntry (&dir->scalable, &entry)))
{
- xfree (extra);
- xfree (entry.u.scalable.fileName);
+ free (extra);
+ free (entry.u.scalable.fileName);
return FALSE;
}
if (vals.values_supplied & SIZE_SPECIFY_MASK)
@@ -826,7 +821,7 @@ FontFileAddFontAlias (FontDirectoryPtr dir, char *aliasName, char *fontName)
return FALSE;
if (!FontFileAddEntry (&dir->nonScalable, &entry))
{
- xfree (entry.u.alias.resolved);
+ free (entry.u.alias.resolved);
return FALSE;
}
return TRUE;
diff --git a/libXfont/src/fontfile/fontfile.c b/libXfont/src/fontfile/fontfile.c
index f900f7508..a738c4d34 100644
--- a/libXfont/src/fontfile/fontfile.c
+++ b/libXfont/src/fontfile/fontfile.c
@@ -36,11 +36,33 @@ in this Software without prior written authorization from The Open Group.
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
-#include <X11/fonts/fntfilst.h>
+#include <X11/fonts/fntfilst.h>
+#include <X11/keysym.h>
#ifdef WIN32
#include <ctype.h>
#endif
+static unsigned char
+ISOLatin1ToLower(unsigned char source)
+{
+ if (source >= XK_A && source <= XK_Z)
+ return source + (XK_a - XK_A);
+ if (source >= XK_Agrave && source <= XK_Odiaeresis)
+ return source + (XK_agrave - XK_Agrave);
+ if (source >= XK_Ooblique && source <= XK_Thorn)
+ return source + (XK_oslash - XK_Ooblique);
+ return source;
+}
+
+_X_HIDDEN void
+CopyISOLatin1Lowered(char *dest, char *source, int length)
+{
+ int i;
+ for (i = 0; i < length; i++, source++, dest++)
+ *dest = ISOLatin1ToLower(*source);
+ *dest = '\0';
+}
+
/*
* Map FPE functions to renderer functions
*/
@@ -55,7 +77,7 @@ int
FontFileNameCheck (char *name)
{
#ifndef NCD
-#if defined(__UNIXOS2__) || defined(WIN32)
+#if defined(WIN32)
/* OS/2 uses D:/... as a path name for fonts, so accept this as a valid
* path if it starts with a letter and a colon. Same applies for WIN32
*/
@@ -303,17 +325,6 @@ FontFileOpenFont (pointer client, FontPathElementPtr fpe, Mask flags,
entry->u.alias.resolved, aliasName, &vals);
ret = FontNameAlias;
break;
-#ifdef NOTYET
- case FONT_ENTRY_BC:
- bc = &entry->u.bc;
- entry = bc->entry;
- ret = (*scalable->renderer->OpenScalable)
- (fpe, pFont, flags, entry, &bc->vals, format, fmask,
- non_cachable_font);
- if (ret == Successful && *pFont)
- (*pFont)->fpe = fpe;
- break;
-#endif
default:
ret = BadFontName;
}
@@ -325,7 +336,7 @@ FontFileOpenFont (pointer client, FontPathElementPtr fpe, Mask flags,
if (ret != BadFontName)
{
- if (ranges) xfree(ranges);
+ if (ranges) free(ranges);
return ret;
}
@@ -476,7 +487,7 @@ FontFileOpenFont (pointer client, FontPathElementPtr fpe, Mask flags,
ret = BadFontName;
if (ranges)
- xfree(ranges);
+ free(ranges);
return ret;
}
@@ -730,7 +741,7 @@ _FontFileListFonts (pointer client, FontPathElementPtr fpe,
scaleNames = MakeFontNamesRecord (0);
if (!scaleNames)
{
- if (ranges) xfree(ranges);
+ if (ranges) free(ranges);
return AllocError;
}
FontFileFindNamesInScalableDir (&dir->scalable, &zeroName, max,
@@ -747,7 +758,7 @@ _FontFileListFonts (pointer client, FontPathElementPtr fpe,
scaleNames = MakeFontNamesRecord (0);
if (!scaleNames)
{
- if (ranges) xfree(ranges);
+ if (ranges) free(ranges);
return AllocError;
}
FontFileFindNamesInScalableDir (&dir->nonScalable, &zeroName,
@@ -760,7 +771,7 @@ _FontFileListFonts (pointer client, FontPathElementPtr fpe,
&max);
FreeFontNames (scaleNames);
- if (ranges) xfree(ranges);
+ if (ranges) free(ranges);
}
else
{
@@ -802,13 +813,13 @@ FontFileStartListFonts(pointer client, FontPathElementPtr fpe,
LFWIDataPtr data;
int ret;
- data = (LFWIDataPtr) xalloc (sizeof *data);
+ data = malloc (sizeof *data);
if (!data)
return AllocError;
data->names = MakeFontNamesRecord (0);
if (!data->names)
{
- xfree (data);
+ free (data);
return AllocError;
}
ret = _FontFileListFonts (client, fpe, pat, len,
@@ -816,7 +827,7 @@ FontFileStartListFonts(pointer client, FontPathElementPtr fpe,
if (ret != Successful)
{
FreeFontNames (data->names);
- xfree (data);
+ free (data);
return ret;
}
data->current = 0;
@@ -900,23 +911,6 @@ FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe,
*namelenp = strlen (*namep);
ret = FontNameAlias;
break;
-#ifdef NOTYET
- case FONT_ENTRY_BC:
- /* no LFWI for this yet */
- bc = &entry->u.bc;
- entry = bc->entry;
- /* Make a new scaled instance */
- if (strlen(dir->directory) + strlen(scalable->fileName) >=
- sizeof(fileName)) {
- ret = BadFontName;
- } else {
- strcpy (fileName, dir->directory);
- strcat (fileName, scalable->fileName);
- ret = (*scalable->renderer->GetInfoScalable)
- (fpe, *pFontInfo, entry, tmpName, fileName, &bc->vals);
- }
- break;
-#endif
default:
ret = BadFontName;
}
@@ -928,7 +922,7 @@ FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe,
if (ret != BadFontName)
{
- if (ranges) xfree(ranges);
+ if (ranges) free(ranges);
return ret;
}
@@ -1004,11 +998,6 @@ FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe,
}
else
{
-#ifdef NOTDEF
- /* no special case yet */
- ret = FontFileMatchBitmapSource (fpe, pFont, flags, entry, &vals, format, fmask, noSpecificSize);
- if (ret != Successful)
-#endif
{
char origName[MAXFONTNAMELEN];
@@ -1034,7 +1023,7 @@ FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe,
(fpe, *pFontInfo, entry, fileName);
}
if (ranges) {
- xfree(ranges);
+ free(ranges);
ranges = NULL;
}
}
@@ -1048,7 +1037,7 @@ FontFileListOneFontWithInfo (pointer client, FontPathElementPtr fpe,
ret = BadFontName;
if (ranges)
- xfree(ranges);
+ free(ranges);
return ret;
}
@@ -1066,7 +1055,7 @@ FontFileListNextFontWithInfo(pointer client, FontPathElementPtr fpe,
if (data->current == data->names->nnames)
{
FreeFontNames (data->names);
- xfree (data);
+ free (data);
return BadFontName;
}
name = data->names->names[data->current];
@@ -1102,7 +1091,7 @@ FontFileListNextFontOrAlias(pointer client, FontPathElementPtr fpe,
if (data->current == data->names->nnames)
{
FreeFontNames (data->names);
- xfree (data);
+ free (data);
return BadFontName;
}
name = data->names->names[data->current];
diff --git a/libXfont/src/fontfile/fontscale.c b/libXfont/src/fontfile/fontscale.c
index 8e9de513d..8002dde81 100644
--- a/libXfont/src/fontfile/fontscale.c
+++ b/libXfont/src/fontfile/fontscale.c
@@ -35,13 +35,7 @@ in this Software without prior written authorization from The Open Group.
#include <config.h>
#endif
#include <X11/fonts/fntfilst.h>
-#ifdef _XOPEN_SOURCE
#include <math.h>
-#else
-#define _XOPEN_SOURCE /* to get prototype for hypot on some systems */
-#include <math.h>
-#undef _XOPEN_SOURCE
-#endif
Bool
FontFileAddScaledInstance (FontEntryPtr entry, FontScalablePtr vals,
@@ -57,8 +51,7 @@ FontFileAddScaledInstance (FontEntryPtr entry, FontScalablePtr vals,
if (extra->numScaled == extra->sizeScaled)
{
newsize = extra->sizeScaled + 4;
- new = (FontScaledPtr) xrealloc (extra->scaled,
- newsize * sizeof (FontScaledRec));
+ new = realloc (extra->scaled, newsize * sizeof (FontScaledRec));
if (!new)
return FALSE;
extra->sizeScaled = newsize;
@@ -113,7 +106,7 @@ FontFileRemoveScaledInstance (FontEntryPtr entry, FontPtr pFont)
if (extra->scaled[i].pFont == pFont)
{
if (extra->scaled[i].vals.ranges)
- xfree (extra->scaled[i].vals.ranges);
+ free (extra->scaled[i].vals.ranges);
extra->numScaled--;
for (; i < extra->numScaled; i++)
extra->scaled[i] = extra->scaled[i+1];
diff --git a/libXfont/src/fontfile/gunzip.c b/libXfont/src/fontfile/gunzip.c
index 8c9c317aa..6cf192bb8 100644
--- a/libXfont/src/fontfile/gunzip.c
+++ b/libXfont/src/fontfile/gunzip.c
@@ -29,7 +29,7 @@ BufFilePushZIP (BufFilePtr f)
{
xzip_buf *x;
- x = (xzip_buf *) xalloc (sizeof (xzip_buf));
+ x = malloc (sizeof (xzip_buf));
if (!x) return 0;
/* these are just for raw calloc/free */
x->z.zalloc = Z_NULL;
@@ -46,7 +46,7 @@ BufFilePushZIP (BufFilePtr f)
zlib header checking [undocumented, for gzip compatibility only?] */
x->zstat = inflateInit2(&(x->z), -MAX_WBITS);
if (x->zstat != Z_OK) {
- xfree(x);
+ free(x);
return 0;
}
@@ -57,7 +57,7 @@ BufFilePushZIP (BufFilePtr f)
x->z.avail_in = 0;
if (BufCheckZipHeader(x->f)) {
- xfree(x);
+ free(x);
return 0;
}
@@ -74,7 +74,7 @@ BufZipFileClose(BufFilePtr f, int flag)
xzip_buf *x = (xzip_buf *)f->private;
inflateEnd (&(x->z));
BufFileClose (x->f, flag);
- xfree (x);
+ free (x);
return 1;
}
diff --git a/libXfont/src/fontfile/printerfont.c b/libXfont/src/fontfile/printerfont.c
deleted file mode 100644
index 0b6c19c62..000000000
--- a/libXfont/src/fontfile/printerfont.c
+++ /dev/null
@@ -1,178 +0,0 @@
-/* $Xorg: printerfont.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */
-
-/*
-
-Copyright 1991, 1998 The Open Group
-
-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.
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of The Open Group shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from The Open Group.
-
-*/
-/* $XFree86: xc/lib/font/fontfile/printerfont.c,v 1.5tsi Exp $ */
-
-/*
- * Author: Keith Packard, MIT X Consortium
- */
-/* $NCDXorg: @(#)fontfile.c,v 1.6 1991/07/02 17:00:46 lemke Exp $ */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <X11/fonts/fntfilst.h>
-
-/*
- * Map FPE functions to renderer functions
- */
-
-#define PRINTERPATHPREFIX "PRINTER:"
-
-/* STUB
-int XpClientIsPrintClient(client,fpe)
-pointer client;
-FontPathElementPtr fpe;
-{ return 1; }
- */
-
-static int
-PrinterFontNameCheck (char *name)
-{
- if (strncmp(name,PRINTERPATHPREFIX,strlen(PRINTERPATHPREFIX)) != 0)
- return 0;
- name += strlen(PRINTERPATHPREFIX);
-#ifndef NCD
- return *name == '/';
-#else
- return ((strcmp(name, "built-ins") == 0) || (*name == '/'));
-#endif
-}
-
-static int
-PrinterFontInitFPE (FontPathElementPtr fpe)
-{
- int status;
- FontDirectoryPtr dir;
- char * name;
-
- name = fpe->name + strlen(PRINTERPATHPREFIX);
- status = FontFileReadDirectory (name, &dir);
- if (status == Successful)
- {
- if (dir->nonScalable.used > 0)
- if (!FontFileRegisterBitmapSource (fpe))
- {
- FontFileFreeFPE (fpe);
- return AllocError;
- }
- fpe->private = (pointer) dir;
- }
- return status;
-}
-
-/* Here we must check the client to see if it has a context attached to
- * it that allows us to access the printer fonts
- */
-
-static int
-PrinterFontOpenFont (pointer client, FontPathElementPtr fpe, Mask flags,
- char *name, int namelen,
- fsBitmapFormat format, fsBitmapFormatMask fmask,
- XID id, FontPtr *pFont, char **aliasName,
- FontPtr non_cachable_font)
-{
- if (XpClientIsPrintClient(client,fpe))
- return (FontFileOpenFont (client, fpe, flags, name, namelen, format,
- fmask, id, pFont, aliasName, non_cachable_font));
- return BadFontName;
-}
-
-static int
-PrinterFontListFonts (pointer client, FontPathElementPtr fpe, char *pat,
- int len, int max, FontNamesPtr names)
-{
- if (XpClientIsPrintClient(client,fpe))
- return FontFileListFonts (client, fpe, pat, len, max, names);
- return BadFontName;
-}
-
-static int
-PrinterFontStartListFontsWithInfo(pointer client, FontPathElementPtr fpe,
- char *pat, int len, int max,
- pointer *privatep)
-{
- if (XpClientIsPrintClient(client,fpe))
- return FontFileStartListFontsWithInfo(client, fpe, pat, len,
- max, privatep);
- return BadFontName;
-}
-
-static int
-PrinterFontListNextFontWithInfo(pointer client, FontPathElementPtr fpe,
- char **namep, int *namelenp,
- FontInfoPtr *pFontInfo,
- int *numFonts, pointer private)
-{
- if (XpClientIsPrintClient(client,fpe))
- return FontFileListNextFontWithInfo(client, fpe, namep, namelenp,
- pFontInfo, numFonts, private);
- return BadFontName;
-}
-
-static int
-PrinterFontStartListFontsAndAliases(pointer client, FontPathElementPtr fpe,
- char *pat, int len, int max,
- pointer *privatep)
-{
- if (XpClientIsPrintClient(client,fpe))
- return FontFileStartListFontsAndAliases(client, fpe, pat, len,
- max, privatep);
- return BadFontName;
-}
-
-static int
-PrinterFontListNextFontOrAlias(pointer client, FontPathElementPtr fpe,
- char **namep, int *namelenp,
- char **resolvedp, int *resolvedlenp,
- pointer private)
-{
- if (XpClientIsPrintClient(client,fpe))
- return FontFileListNextFontOrAlias(client, fpe, namep, namelenp,
- resolvedp, resolvedlenp, private);
- return BadFontName;
-}
-
-void
-PrinterFontRegisterFpeFunctions (void)
-{
- RegisterFPEFunctions(PrinterFontNameCheck,
- PrinterFontInitFPE,
- FontFileFreeFPE,
- FontFileResetFPE,
- PrinterFontOpenFont,
- FontFileCloseFont,
- PrinterFontListFonts,
- PrinterFontStartListFontsWithInfo,
- PrinterFontListNextFontWithInfo,
- NULL,
- NULL,
- NULL,
- PrinterFontStartListFontsAndAliases,
- PrinterFontListNextFontOrAlias,
- FontFileEmptyBitmapSource);
-}
diff --git a/libXfont/src/fontfile/register.c b/libXfont/src/fontfile/register.c
index 5b70df76a..1a63cb331 100644
--- a/libXfont/src/fontfile/register.c
+++ b/libXfont/src/fontfile/register.c
@@ -1,5 +1,3 @@
-/* $Xorg: register.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */
-
/*
Copyright 1994, 1998 The Open Group
@@ -25,13 +23,6 @@ used in advertising or otherwise to promote the sale, use or other dealings
in this Software without prior written authorization from The Open Group.
*/
-/* $XFree86: xc/lib/font/fontfile/register.c,v 1.14 2001/01/17 19:43:30 dawes Exp $ */
-
-/*
- * This is in a separate source file so that small programs
- * such as mkfontdir that want to use the fontfile utilities don't
- * end up dragging in code from all the renderers, which is not small.
- */
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -42,7 +33,6 @@ in this Software without prior written authorization from The Open Group.
#include <X11/fonts/fontmisc.h>
#include <X11/fonts/fntfilst.h>
#include <X11/fonts/bitmap.h>
-#include <X11/fonts/fontmod.h>
/*
* Translate monolithic build symbols to modular build symbols.
@@ -51,72 +41,20 @@ in this Software without prior written authorization from The Open Group.
* with other packages.
*/
-#ifndef CRAY
-# ifdef BUILD_SPEEDO
-# define XFONT_SPEEDO 1
-# endif
-# ifdef BUILD_TYPE1
-# define XFONT_TYPE1 1
-# endif
-#endif
-
#ifdef BUILD_FREETYPE
# define XFONT_FREETYPE 1
#endif
-/* Font renderers to initialize when not linked into something like
- Xorg that provides its own module configuration options */
-static const FontModule builtinFontModuleList[] = {
-#ifdef XFONT_SPEEDO
- {
- SpeedoRegisterFontFileFunctions,
- "speedo",
- NULL
- },
-#endif
-#ifdef XFONT_TYPE1
- {
- Type1RegisterFontFileFunctions,
- "type1",
- NULL
- },
-#endif
-#ifdef XFONT_FREETYPE
- {
- FreeTypeRegisterFontFileFunctions,
- "freetype",
- NULL
- },
-#endif
- /* List terminator - must be last entry */
- { NULL, NULL, NULL }
-};
-
void
FontFileRegisterFpeFunctions(void)
{
- const FontModule *fmlist = builtinFontModuleList;
-
#ifdef XFONT_BITMAP
/* bitmap is always builtin to libXfont now */
BitmapRegisterFontFileFunctions ();
#endif
-
-#ifdef LOADABLEFONTS
- if (FontModuleList) {
- fmlist = FontModuleList;
- }
-#endif
-
- if (fmlist) {
- int i;
-
- for (i = 0; fmlist[i].name; i++) {
- if (fmlist[i].initFunc) {
- fmlist[i].initFunc();
- }
- }
- }
+#ifdef XFONT_FREETYPE
+ FreeTypeRegisterFontFileFunctions();
+#endif
FontFileRegisterLocalFpeFunctions ();
CatalogueRegisterLocalFpeFunctions ();
diff --git a/libXfont/src/fontfile/renderers.c b/libXfont/src/fontfile/renderers.c
index f110ba817..bf82c1c1e 100644
--- a/libXfont/src/fontfile/renderers.c
+++ b/libXfont/src/fontfile/renderers.c
@@ -1,5 +1,3 @@
-/* $Xorg: renderers.c,v 1.4 2001/02/09 02:04:03 xorgcvs Exp $ */
-
/*
Copyright 1991, 1998 The Open Group
@@ -62,13 +60,13 @@ FontFilePriorityRegisterRenderer (FontRendererPtr renderer, int priority)
rendererGeneration = serverGeneration;
renderers.number = 0;
if (renderers.renderers)
- xfree(renderers.renderers);
+ free(renderers.renderers);
renderers.renderers = NULL;
}
for (i = 0; i < renderers.number; i++) {
- if (!strcmp (renderers.renderers[i].renderer->fileSuffix,
- renderer->fileSuffix)) {
+ if (!strcasecmp (renderers.renderers[i].renderer->fileSuffix,
+ renderer->fileSuffix)) {
if(renderers.renderers[i].priority >= priority) {
if(renderers.renderers[i].priority == priority) {
if (rendererGeneration == 1)
@@ -84,7 +82,7 @@ FontFilePriorityRegisterRenderer (FontRendererPtr renderer, int priority)
}
if(i >= renderers.number) {
- new = xrealloc (renderers.renderers, sizeof(*new) * (i + 1));
+ new = realloc (renderers.renderers, sizeof(*new) * (i + 1));
if (!new)
return FALSE;
renderers.renderers = new;
@@ -108,7 +106,7 @@ FontFileMatchRenderer (char *fileName)
{
r = renderers.renderers[i].renderer;
if (fileLen >= r->fileSuffixLen &&
- !strcmp (fileName + fileLen - r->fileSuffixLen, r->fileSuffix))
+ !strcasecmp (fileName + fileLen - r->fileSuffixLen, r->fileSuffix))
{
return r;
}
diff --git a/libXfont/src/stubs/Makefile.am b/libXfont/src/stubs/Makefile.am
index 963470f52..4d60c2a58 100644
--- a/libXfont/src/stubs/Makefile.am
+++ b/libXfont/src/stubs/Makefile.am
@@ -12,7 +12,6 @@ libstubs_la_SOURCES = \
errorf.c \
fatalerror.c \
findoldfnt.c \
- fontmod.c \
getcres.c \
getdefptsize.c \
getnewfntcid.c \
@@ -23,5 +22,4 @@ libstubs_la_SOURCES = \
servclient.c \
setfntauth.c \
stfntcfnt.c \
- stubs.h \
- xpstubs.c
+ stubs.h
diff --git a/libXfont/src/stubs/Makefile.in b/libXfont/src/stubs/Makefile.in
index 53363bb45..e67e12003 100644
--- a/libXfont/src/stubs/Makefile.in
+++ b/libXfont/src/stubs/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -45,12 +45,11 @@ CONFIG_CLEAN_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
libstubs_la_LIBADD =
am_libstubs_la_OBJECTS = cauthgen.lo csignal.lo delfntcid.lo errorf.lo \
- fatalerror.lo findoldfnt.lo fontmod.lo getcres.lo \
- getdefptsize.lo getnewfntcid.lo gettime.lo initfshdl.lo \
- regfpefunc.lo rmfshdl.lo servclient.lo setfntauth.lo \
- stfntcfnt.lo xpstubs.lo
+ fatalerror.lo findoldfnt.lo getcres.lo getdefptsize.lo \
+ getnewfntcid.lo gettime.lo initfshdl.lo regfpefunc.lo \
+ rmfshdl.lo servclient.lo setfntauth.lo stfntcfnt.lo
libstubs_la_OBJECTS = $(am_libstubs_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include/X11/fonts
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -81,22 +80,18 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENCODINGSDIR = @ENCODINGSDIR@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
FREETYPE_LIBS = @FREETYPE_LIBS@
FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
@@ -106,17 +101,24 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATH_LIBS = @MATH_LIBS@
MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -126,6 +128,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -139,8 +142,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -173,6 +175,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -185,6 +188,7 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = \
@@ -199,7 +203,6 @@ libstubs_la_SOURCES = \
errorf.c \
fatalerror.c \
findoldfnt.c \
- fontmod.c \
getcres.c \
getdefptsize.c \
getnewfntcid.c \
@@ -210,8 +213,7 @@ libstubs_la_SOURCES = \
servclient.c \
setfntauth.c \
stfntcfnt.c \
- stubs.h \
- xpstubs.c
+ stubs.h
all: all-am
@@ -221,8 +223,8 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -270,7 +272,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errorf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fatalerror.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/findoldfnt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fontmod.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getcres.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdefptsize.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getnewfntcid.Plo@am__quote@
@@ -281,7 +282,6 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/servclient.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setfntauth.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stfntcfnt.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpstubs.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -315,8 +315,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -328,8 +328,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -339,13 +339,12 @@ ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
diff --git a/libXfont/src/stubs/fontmod.c b/libXfont/src/stubs/fontmod.c
deleted file mode 100644
index 5a0bd0e9d..000000000
--- a/libXfont/src/stubs/fontmod.c
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef LOADABLEFONTS
-#include "stubs.h"
-#include <X11/fonts/fontmod.h>
-
-#ifdef __SUNPRO_C
-#pragma weak FontModuleList
-#endif
-
-weak FontModule *FontModuleList;
-#endif /* LOADABLEFONTS */
diff --git a/libXfont/src/stubs/xpstubs.c b/libXfont/src/stubs/xpstubs.c
deleted file mode 100644
index 939b34f21..000000000
--- a/libXfont/src/stubs/xpstubs.c
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include "stubs.h"
-
-#ifdef __SUNPRO_C
-#pragma weak XpClientIsBitmapClient
-#pragma weak XpClientIsPrintClient
-#endif
-
-weak Bool
-XpClientIsBitmapClient(ClientPtr client)
-{
- return True;
-}
-
-weak Bool
-XpClientIsPrintClient(ClientPtr client, FontPathElementPtr fpe)
-{
- return False;
-}
diff --git a/libXfont/src/util/Makefile.in b/libXfont/src/util/Makefile.in
index a86e54064..63b966b12 100644
--- a/libXfont/src/util/Makefile.in
+++ b/libXfont/src/util/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.10 from Makefile.am.
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -48,7 +48,7 @@ am_libutil_la_OBJECTS = atom.lo fontaccel.lo fontnames.lo fontutil.lo \
fontxlfd.lo format.lo miscutil.lo patcache.lo private.lo \
utilbitmap.lo
libutil_la_OBJECTS = $(am_libutil_la_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(top_builddir) -I$(top_builddir)/include/X11/fonts@am__isrc@
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -I$(top_builddir)/include/X11/fonts
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
@@ -79,22 +79,18 @@ CHANGELOG_CMD = @CHANGELOG_CMD@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CWARNFLAGS = @CWARNFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ENCODINGSDIR = @ENCODINGSDIR@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
FREETYPE_CFLAGS = @FREETYPE_CFLAGS@
FREETYPE_LIBS = @FREETYPE_LIBS@
FREETYPE_REQUIRES = @FREETYPE_REQUIRES@
@@ -104,17 +100,24 @@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATH_LIBS = @MATH_LIBS@
MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -124,6 +127,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
@@ -137,8 +141,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -171,6 +174,7 @@ libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
@@ -183,6 +187,7 @@ sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
INCLUDES = \
@@ -211,8 +216,8 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
@@ -297,8 +302,8 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
@@ -310,8 +315,8 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
@@ -321,13 +326,12 @@ ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
diff --git a/libXfont/src/util/atom.c b/libXfont/src/util/atom.c
index b770dc9de..bfb05ccbd 100644
--- a/libXfont/src/util/atom.c
+++ b/libXfont/src/util/atom.c
@@ -84,14 +84,13 @@ ResizeHashTable (void)
newHashSize = 1024;
else
newHashSize = hashSize * 2;
- newHashTable = (AtomListPtr *) xalloc (newHashSize * sizeof (AtomListPtr));
+ newHashTable = calloc (newHashSize, sizeof (AtomListPtr));
if (!newHashTable) {
fprintf(stderr, "ResizeHashTable(): Error: Couldn't allocate"
" newHashTable (%ld)\n",
newHashSize * (unsigned long)sizeof (AtomListPtr));
return FALSE;
}
- bzero ((char *) newHashTable, newHashSize * sizeof (AtomListPtr));
newHashMask = newHashSize - 1;
newRehash = (newHashMask - 2);
for (i = 0; i < hashSize; i++)
@@ -111,7 +110,7 @@ ResizeHashTable (void)
newHashTable[h] = hashTable[i];
}
}
- xfree (hashTable);
+ free (hashTable);
hashTable = newHashTable;
hashSize = newHashSize;
hashMask = newHashMask;
@@ -127,7 +126,7 @@ ResizeReverseMap (void)
reverseMapSize = 1000;
else
reverseMapSize *= 2;
- reverseMap = (AtomListPtr *) xrealloc (reverseMap, reverseMapSize * sizeof (AtomListPtr));
+ reverseMap = realloc (reverseMap, reverseMapSize * sizeof (AtomListPtr));
if (!reverseMap) {
fprintf(stderr, "ResizeReverseMap(): Error: Couldn't reallocate"
" reverseMap (%ld)\n",
@@ -187,7 +186,7 @@ MakeAtom(char *string, unsigned len, int makeit)
}
if (!makeit)
return None;
- a = (AtomListPtr) xalloc (sizeof (AtomListRec) + len + 1);
+ a = malloc (sizeof (AtomListRec) + len + 1);
if (a == NULL) {
fprintf(stderr, "MakeAtom(): Error: Couldn't allocate AtomListRec"
" (%ld)\n", (unsigned long)sizeof (AtomListRec) + len + 1);
diff --git a/libXfont/src/util/fontnames.c b/libXfont/src/util/fontnames.c
index 2d3a51752..d03cea773 100644
--- a/libXfont/src/util/fontnames.c
+++ b/libXfont/src/util/fontnames.c
@@ -49,11 +49,11 @@ FreeFontNames(FontNamesPtr pFN)
if (!pFN)
return;
for (i = 0; i < pFN->nnames; i++) {
- xfree(pFN->names[i]);
+ free(pFN->names[i]);
}
- xfree(pFN->names);
- xfree(pFN->length);
- xfree(pFN);
+ free(pFN->names);
+ free(pFN->length);
+ free(pFN);
}
FontNamesPtr
@@ -61,18 +61,18 @@ MakeFontNamesRecord(unsigned int size)
{
FontNamesPtr pFN;
- pFN = (FontNamesPtr) xalloc(sizeof(FontNamesRec));
+ pFN = malloc(sizeof(FontNamesRec));
if (pFN) {
pFN->nnames = 0;
pFN->size = size;
if (size)
{
- pFN->length = (int *) xalloc(size * sizeof(int));
- pFN->names = (char **) xalloc(size * sizeof(char *));
+ pFN->length = malloc(size * sizeof(int));
+ pFN->names = malloc(size * sizeof(char *));
if (!pFN->length || !pFN->names) {
- xfree(pFN->length);
- xfree(pFN->names);
- xfree(pFN);
+ free(pFN->length);
+ free(pFN->names);
+ free(pFN);
pFN = (FontNamesPtr) 0;
}
}
@@ -91,7 +91,7 @@ AddFontNamesName(FontNamesPtr names, char *name, int length)
int index = names->nnames;
char *nelt;
- nelt = (char *) xalloc(length + 1);
+ nelt = malloc(length + 1);
if (!nelt)
return AllocError;
if (index >= names->size) {
@@ -101,16 +101,16 @@ AddFontNamesName(FontNamesPtr names, char *name, int length)
if (size == 0)
size = 8;
- nlength = (int *) xrealloc(names->length, size * sizeof(int));
- nnames = (char **) xrealloc(names->names, size * sizeof(char *));
+ nlength = realloc(names->length, size * sizeof(int));
+ nnames = realloc(names->names, size * sizeof(char *));
if (nlength && nnames) {
names->size = size;
names->length = nlength;
names->names = nnames;
} else {
- xfree(nelt);
- xfree(nlength);
- xfree(nnames);
+ free(nelt);
+ free(nlength);
+ free(nnames);
return AllocError;
}
}
diff --git a/libXfont/src/util/fontutil.c b/libXfont/src/util/fontutil.c
index 05fe5c2f2..aa89ce01a 100644
--- a/libXfont/src/util/fontutil.c
+++ b/libXfont/src/util/fontutil.c
@@ -149,7 +149,7 @@ QueryTextExtents(FontPtr pFont,
unsigned char defc[2];
int firstReal;
- charinfo = (xCharInfo **) xalloc(count * sizeof(xCharInfo *));
+ charinfo = malloc(count * sizeof(xCharInfo *));
if (!charinfo)
return FALSE;
encoding = TwoD16Bit;
@@ -188,7 +188,7 @@ QueryTextExtents(FontPtr pFont,
QueryGlyphExtents(pFont, (CharInfoPtr*) charinfo + firstReal,
n - firstReal, info);
pFont->info.constantMetrics = cm;
- xfree(charinfo);
+ free(charinfo);
return TRUE;
}
@@ -315,15 +315,13 @@ add_range(fsRange *newrange,
/* Grow the list if necessary */
if (*nranges == 0 || *range == (fsRange *)0)
{
- *range = (fsRange *)xalloc(range_alloc_granularity *
- SIZEOF(fsRange));
+ *range = malloc(range_alloc_granularity * SIZEOF(fsRange));
*nranges = 0;
}
else if (!(*nranges % range_alloc_granularity))
{
- *range = (fsRange *)xrealloc((char *)*range,
- (*nranges + range_alloc_granularity) *
- SIZEOF(fsRange));
+ *range = realloc(*range, (*nranges + range_alloc_granularity) *
+ SIZEOF(fsRange));
}
/* If alloc failed, just return a null list */
@@ -413,31 +411,3 @@ add_range(fsRange *newrange,
return Successful;
}
-
-/* It is difficult to find a good place for this. */
-#ifdef NEED_STRCASECMP
-int
-f_strcasecmp(const char *s1, const char *s2)
-{
- char c1, c2;
-
- if (*s1 == 0)
- if (*s2 == 0)
- return 0;
- else
- return 1;
-
- c1 = (isupper (*s1) ? tolower (*s1) : *s1);
- c2 = (isupper (*s2) ? tolower (*s2) : *s2);
- while (c1 == c2) {
- if (c1 == '\0')
- return 0;
- s1++;
- s2++;
- c1 = (isupper (*s1) ? tolower (*s1) : *s1);
- c2 = (isupper (*s2) ? tolower (*s2) : *s2);
- }
- return c1 - c2;
-}
-#endif
-
diff --git a/libXfont/src/util/fontxlfd.c b/libXfont/src/util/fontxlfd.c
index 7adf74f4c..462554006 100644
--- a/libXfont/src/util/fontxlfd.c
+++ b/libXfont/src/util/fontxlfd.c
@@ -202,7 +202,6 @@ xlfd_round_double(double x)
defined(__hppa__) || \
defined(__amd64__) || defined(__amd64) || \
defined(sgi)
-#if !defined(__UNIXOS2__)
#include <float.h>
/* if we have IEEE 754 fp, we can round to binary digits... */
@@ -263,7 +262,6 @@ xlfd_round_double(double x)
}
else
#endif
-#endif /* !__UNIXOS2__ */
#endif /* i386 || __i386__ */
{
/*
diff --git a/libXfont/src/util/miscutil.c b/libXfont/src/util/miscutil.c
index c44527a29..345927515 100644
--- a/libXfont/src/util/miscutil.c
+++ b/libXfont/src/util/miscutil.c
@@ -43,66 +43,12 @@ from The Open Group.
#ifdef __SUNPRO_C
#pragma weak serverGeneration
-#pragma weak Xalloc
-#pragma weak Xrealloc
-#pragma weak Xfree
-#pragma weak Xcalloc
-#pragma weak CopyISOLatin1Lowered
#pragma weak register_fpe_functions
#endif
/* make sure everything initializes themselves at least once */
weak long serverGeneration = 1;
-weak void *
-Xalloc (unsigned long m)
-{
- return malloc (m);
-}
-
-weak void *
-Xrealloc (void *n, unsigned long m)
-{
- if (!n)
- return malloc (m);
- else
- return realloc (n, m);
-}
-
-weak void
-Xfree (void *n)
-{
- if (n)
- free (n);
-}
-
-weak void *
-Xcalloc (unsigned long n)
-{
- return calloc (n, 1);
-}
-
-weak void
-CopyISOLatin1Lowered (char *dst, char *src, int len)
-{
- register unsigned char *dest, *source;
-
- for (dest = (unsigned char *)dst, source = (unsigned char *)src;
- *source && len > 0;
- source++, dest++, len--)
- {
- if ((*source >= XK_A) && (*source <= XK_Z))
- *dest = *source + (XK_a - XK_A);
- else if ((*source >= XK_Agrave) && (*source <= XK_Odiaeresis))
- *dest = *source + (XK_agrave - XK_Agrave);
- else if ((*source >= XK_Ooblique) && (*source <= XK_Thorn))
- *dest = *source + (XK_oslash - XK_Ooblique);
- else
- *dest = *source;
- }
- *dest = '\0';
-}
-
weak void
register_fpe_functions (void)
{
diff --git a/libXfont/src/util/patcache.c b/libXfont/src/util/patcache.c
index 0351b1ac2..5411810d6 100644
--- a/libXfont/src/util/patcache.c
+++ b/libXfont/src/util/patcache.c
@@ -77,7 +77,7 @@ EmptyFontPatternCache (FontPatternCachePtr cache)
cache->entries[i].next = &cache->entries[i+1];
cache->entries[i].prev = 0;
cache->entries[i].pFont = 0;
- xfree (cache->entries[i].pattern);
+ free (cache->entries[i].pattern);
cache->entries[i].pattern = 0;
cache->entries[i].patlen = 0;
}
@@ -91,7 +91,7 @@ MakeFontPatternCache (void)
{
FontPatternCachePtr cache;
int i;
- cache = (FontPatternCachePtr) xalloc (sizeof *cache);
+ cache = malloc (sizeof *cache);
if (!cache)
return 0;
for (i = 0; i < NENTRIES; i++) {
@@ -110,8 +110,8 @@ FreeFontPatternCache (FontPatternCachePtr cache)
int i;
for (i = 0; i < NENTRIES; i++)
- xfree (cache->entries[i].pattern);
- xfree (cache);
+ free (cache->entries[i].pattern);
+ free (cache);
}
/* compute id for string */
@@ -139,7 +139,7 @@ CacheFontPattern (FontPatternCachePtr cache,
char *newpat;
int i;
- newpat = (char *) xalloc (patlen);
+ newpat = malloc (patlen);
if (!newpat)
return;
if (cache->free)
@@ -157,7 +157,7 @@ CacheFontPattern (FontPatternCachePtr cache,
if (e->next)
e->next->prev = e->prev;
*e->prev = e->next;
- xfree (e->pattern);
+ free (e->pattern);
}
/* set pattern */
memcpy (newpat, pattern, patlen);
@@ -214,7 +214,7 @@ RemoveCachedFontPattern (FontPatternCachePtr cache,
*e->prev = e->next;
e->next = cache->free;
cache->free = e;
- xfree (e->pattern);
+ free (e->pattern);
e->pattern = 0;
}
}
diff --git a/libXfont/src/util/private.c b/libXfont/src/util/private.c
index 85e90e57b..6b760b4c3 100644
--- a/libXfont/src/util/private.c
+++ b/libXfont/src/util/private.c
@@ -53,7 +53,7 @@ CreateFontRec (void)
size = sizeof(FontRec) + (sizeof(pointer) * _FontPrivateAllocateIndex);
- pFont = (FontPtr)xalloc(size);
+ pFont = malloc(size);
if(pFont) {
bzero((char*)pFont, size);
@@ -69,8 +69,8 @@ void
DestroyFontRec (FontPtr pFont)
{
if (pFont->devPrivates && pFont->devPrivates != (pointer)(&pFont[1]))
- xfree(pFont->devPrivates);
- xfree(pFont);
+ free(pFont->devPrivates);
+ free(pFont);
}
void
@@ -86,11 +86,12 @@ _FontSetNewPrivate (FontPtr pFont, int n, pointer ptr)
if (n > pFont->maxPrivate) {
if (pFont->devPrivates && pFont->devPrivates != (pointer)(&pFont[1])) {
- new = (pointer *) xrealloc (pFont->devPrivates, (n + 1) * sizeof (pointer));
+ new = realloc (pFont->devPrivates, (n + 1) * sizeof (pointer));
if (!new)
return FALSE;
} else {
- new = (pointer *) xalloc ((n + 1) * sizeof (pointer));
+ /* omg realloc */
+ new = malloc ((n + 1) * sizeof (pointer));
if (!new)
return FALSE;
if (pFont->devPrivates)
diff --git a/libXfont/src/util/utilbitmap.c b/libXfont/src/util/utilbitmap.c
index a817a4ec6..978db89c8 100644
--- a/libXfont/src/util/utilbitmap.c
+++ b/libXfont/src/util/utilbitmap.c
@@ -1,5 +1,3 @@
-/* $Xorg: utilbitmap.c,v 1.4 2001/02/09 02:04:04 xorgcvs Exp $ */
-
/*
Copyright 1990, 1994, 1998 The Open Group
@@ -38,7 +36,7 @@ in this Software without prior written authorization from The Open Group.
/* Utility functions for reformating font bitmaps */
-static unsigned char _reverse_byte[0x100] = {
+static const unsigned char _reverse_byte[0x100] = {
0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
@@ -79,7 +77,7 @@ static unsigned char _reverse_byte[0x100] = {
void
BitOrderInvert(unsigned char *buf, int nbytes)
{
- unsigned char *rev = _reverse_byte;
+ const unsigned char *rev = _reverse_byte;
for (; --nbytes >= 0; buf++)
*buf = rev[*buf];