mgp_1.06a.19991206.orig.tar.gz mgp-1.06a.19991206
authormirabilos <t.glaser@tarent.de>
Wed, 22 May 2019 18:46:49 +0000 (20:46 +0200)
committermirabilos <mirabilos@evolvis.org>
Wed, 22 May 2019 18:46:49 +0000 (20:46 +0200)
identical to mgp-snap-991206.tar.gz (upstream)

115 files changed:
.cvsignore
CHANGELOG [deleted file]
FAQ [new file with mode: 0644]
Imakefile.in
README
README.fonts
README.fonts.jp
README.lang [new file with mode: 0644]
SYNTAX
USAGE
USAGE.jp
background.c
config.guess [new file with mode: 0755]
config.sub [new file with mode: 0755]
configure
configure.in
contrib/eqn2eps.sh [new file with mode: 0755]
contrib/mgp-el/COPYING [new file with mode: 0644]
contrib/mgp-el/README [new file with mode: 0644]
contrib/mgp-el/mgp.el [new file with mode: 0644]
contrib/mgp-el/mgp.sty [new file with mode: 0644]
contrib/mgp-el/sample.tex [new file with mode: 0644]
contrib/mgp-mode.el [new file with mode: 0644]
contrib/mgp2html.pl.in
contrib/tex2eps.sh [new file with mode: 0644]
contrib/xmindpath/main.c
contrib/xmindpath/uucplock.c
contrib/xmindpath/xmindpath.1
ctlwords.c [new file with mode: 0644]
ctlwords.pl [deleted file]
draw.c
embed.c
font.c
globals.c
grammar.y
image/Imakefile.in
image/bright.c
image/clip.c
image/cmuwmraster.c
image/compress.c
image/copyright.h
image/faces.c
image/fbm.c
image/g3.c
image/gif.c
image/gif.h
image/halftone.c
image/image.h
image/imagetypes.c
image/imagetypes.h
image/jpeg.c
image/mcidas.c
image/misc.c
image/new.c
image/path.c
image/pbm.c
image/pcx.c
image/reduce.c
image/rle.c
image/rle.h
image/rlelib.c
image/rotate.c
image/send.c
image/sunraster.c
image/window.c
image/xbitmap.c
image/xpixmap.c
image/xwd.c
image/zio.c
image/zoom.c
install-sh [new file with mode: 0755]
mgp.c
mgp.h
mgp.man
mgp2ps.man
mgpembed.pl.in
missing/snprintf.c
parse.c
plist.c
postscript.c
print.c
sample/Imakefile.in
sample/cloud.gif [deleted file]
sample/cloud.jpg [new file with mode: 0644]
sample/dad.gif [deleted file]
sample/dad.jpg [new file with mode: 0644]
sample/default.mgp
sample/embed-jp.mgp
sample/embed.mgp
sample/mgp-old1.gif [deleted file]
sample/mgp-old1.jpg [new file with mode: 0644]
sample/mgp-old2.gif [deleted file]
sample/mgp-old2.jpg [new file with mode: 0644]
sample/mgp-old3.gif [deleted file]
sample/mgp-old3.jpg [new file with mode: 0644]
sample/mgp1.gif [deleted file]
sample/mgp1.jpg [new file with mode: 0644]
sample/mgp2.gif [deleted file]
sample/mgp2.jpg [new file with mode: 0644]
sample/mgp3.gif [deleted file]
sample/mgp3.jpg [new file with mode: 0644]
sample/sample-fr.mgp [new file with mode: 0644]
sample/sample-jp.mgp
sample/sample.mgp
sample/tutorial-jp.mgp
sample/tutorial.mgp
sample/v6-jp.mgp
sample/v6.mgp
sample/v6header.gif [deleted file]
sample/v6header.jpg [new file with mode: 0644]
scanner.l
tfont.c
unimap.c [new file with mode: 0644]
x11.c
x11dummy.c

index c456bc9..623a64c 100644 (file)
@@ -16,3 +16,5 @@ grammar.c
 tokdefs.h
 scanner.c
 mgpembed.pl
+.depend
+ctlwords
diff --git a/CHANGELOG b/CHANGELOG
deleted file mode 100644 (file)
index 267add9..0000000
--- a/CHANGELOG
+++ /dev/null
@@ -1,51 +0,0 @@
-CHANGELOG for magicpoint
-$Id: CHANGELOG,v 1.9 1998/09/04 15:11:21 onoe Exp $
-
-Fri Sep  5 1998  onoe@sm.sony.co.jp
-       * handle key inputs from invoked terminal as pressed on Xserver,
-         even if the Xserver is running on a remote host.
-
-Mon Aug 26 1998  itojun@iijlab.net
-       * new copyright. (BSDish copyright without clause 3)
-
-Mon Aug 25 1998  itojun@iijlab.net
-       * print.c: better x11/freetype/vflib -> postscript font mapping.
-
-Mon Aug 23 1998  kato@wide.ad.jp
-       * embedded image support (added mgpembed.pl and embed.c)
-
-Mon Aug 22 1998  itojun@iijlab.net
-       * added contrib/xmindpath, MindPath PocketPoint user-level driver.
-
-Fri Jul 10 11:57:59 JST 1998  itojun@iijlab.net
-       * cache gs-generated image file.
-         Suggested by: luigi@FreeBSD.org
-
-Mon Jul  6 11:38:32 JST 1998  itojun@iijlab.net
-       * capable of handling GB2312 and KSC5601 encoding.
-         they must be encoded by using iso-2022 like escape sequences.
-         EUC-cn or EUC-kr does not work.
-       * -x option is added.
-
-Thu Jul  2 18:04:16 JST 1998  itojun@iijlab.net
-       * eliminate gsview.
-       * revamp "xfont" directive. (see SYNTAX for detail)
-
-Thu Jun 25 13:10:28 JST 1998  itojun@iijlab.net
-       * print.c: color postscript support by "mgp2ps -c".
-
-changes between 1.02a and 1.03a:
-       * To allow color name that has space inbetween ("dark blue"), 
-         color name after directives SHOULD come with doublequote.
-         Therefore,
-               %fore blue
-         should be
-               %fore "blue"
-         At this moment, doublequote can be ommitted for backward
-         compatibility.  We may require to have doublequote in the future.
-         Font names and other string parameter obeys the same rule.
-       * %image is now capable of rendering encapsulated postscript files
-         (*.eps).
-               %image foo.eps
-         should work fine.
-         By using -X option, you can specify device name for ghostscript.
diff --git a/FAQ b/FAQ
new file mode 100644 (file)
index 0000000..a887dcc
--- /dev/null
+++ b/FAQ
@@ -0,0 +1,33 @@
+MagicPoint FAQ
+$Id: FAQ,v 1.2 1999/06/17 05:21:23 kazu Exp $
+
+
+Q: When I incorporate postscript in MagicPoint presentation, "ghostscript"
+   dies with "WARN: cannot generate pnmraw+ file from test.eps".
+A:     install more recent version of "ghostscript", which supports "pnmraw"
+       output driver.
+A:     give the -X option to "mgp", with name of "ghostscript" output driver
+       which is configured into your "ghostscript".
+
+Q: Background image will not be reflected to postscript output from "mgp2ps".
+A:     This is a feature (or known bug).
+
+Q: I'm using European language for presentations and line-breaks are not
+   correct.
+Q: I'm using European language for presentations and accented characters
+   will not be generated on postscript output.
+A:     see README.lang for detail.
+
+Q: I would like to try a more-recent snapshot version of MagicPoint.
+A:     ftp://sh.wide.ad.jp/WIDE/free-ware/mgp-snap/
+
+Q: I'm trouble finding scalable fonts.
+Q: Presentations using X11 font looks awful.
+A:     see README.fonts for detail.
+
+Q: I have special Adobe type 1 font installed to my X11 configuration,
+   and I cannot use that font with postscript output.
+A:     (1) modify print.c to include the font into fontname mapping table,
+       (2) regenerate postscript file,
+       (3) download your font to your printer,
+       (4) try printing the file.
index f018171..5e52435 100644 (file)
@@ -1,28 +1,29 @@
-# $Id: Imakefile.in,v 1.37 1998/09/04 09:00:40 onoe Exp $
+# $Id: Imakefile.in,v 1.49 1999/08/18 12:13:01 kazu Exp $
 
 @SET_MAKE@
 srcdir=        @srcdir@
 VPATH= @srcdir@
 SRCS=  mgp.c draw.c parse.c plist.c print.c globals.c x11.c x11dummy.c \
        font.c background.c scanner.c grammar.c postscript.c tfont.c \
-       embed.c 
+       embed.c unimap.c
 TPOBJS=        mgp.o draw.o parse.o plist.o globals.o x11.o font.o background.o \
-       scanner.o grammar.o postscript.o tfont.o embed.o
+       scanner.o grammar.o postscript.o tfont.o embed.o unimap.o
 PROBJS=        print.o parse.o globals.o x11dummy.o scanner.o grammar.o postscript.o \
-       embed.o
+       embed.o 
 LIBOBJS=       @LIBOBJS@
 OBJS=  ${TPOBJ} ${PROBJS} ${LIBOBJS}
-LIBS=  $(srcdir)/image/libimage.a
+LIBS=  $(srcdir)/image/libmgpimage.a
 AWK=   @AWK@
 PERL=  @mgp_cv_path_perl@
 YACC=  @YACC@
 LEX=   @LEX@
+# NOTE: we must not define CC here, since imake may assume other CC to be used.
 
 OPTFLAGS=      @OPTFLAGS@
 DEFS=  @DEFS@ -DMGPLIBDIR=\"$(LIBDIR)/mgp\"
 #DEFS+=        -DGLYPHEDGE
 
-SYS_LIBRARIES= -L$(srcdir)/image -limage @LIBS@
+SYS_LIBRARIES= -L$(srcdir)/image -lmgpimage @LIBS@
 EXTRA_DEPLIBS= @DEPLIBS@
 
 #undef DefaultCDebugFlags
@@ -72,7 +73,7 @@ SpecialObjectRule(embed.o,embed.c, $(DEFS) $(OPTFLAGS))
 #define IHaveSubdirs
 
 SUBDIRS=       image sample contrib
-NamedMakeSubdirs($(srcdir)/image/libimage.a, image)
+NamedMakeSubdirs($(srcdir)/image/libmgpimage.a, image)
 MakeSubdirs(sample contrib)
 
 mgp.o: $(srcdir)/mgp.c ctlwords.h
@@ -83,19 +84,26 @@ parse.o: $(srcdir)/parse.c ctlwords.h
 plist.o: $(srcdir)/plist.c ctlwords.h
 print.o: $(srcdir)/print.c ctlwords.h
 
-ctlwords.h: $(srcdir)/ctlwords.pl $(srcdir)/globals.c
-       $(PERL) $(srcdir)/ctlwords.pl < $(srcdir)/globals.c > ctlwords.h
+ctlwords.h: $(srcdir)/ctlwords.c $(srcdir)/globals.c
+       $(CC) -o ./ctlwords $(srcdir)/ctlwords.c
+       ./ctlwords < $(srcdir)/globals.c > ctlwords.h
+
+clean::
+       rm -f ctlwords
 
 scanner.c: $(srcdir)/scanner.l
        $(LEX) -t $(srcdir)/scanner.l > scanner.c
 scanner.o: scanner.c tokdefs.h
 
-grammar.c: $(srcdir)/grammar.y
+grammar.c tokdefs.h: $(srcdir)/grammar.y
        $(YACC) -d $(srcdir)/grammar.y
        mv y.tab.c grammar.c
        mv y.tab.h tokdefs.h
 
-tokdefs.h: grammar.c
+# -O2 will work badly...
+unimap.o:
+       $(CC) -c $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES) \
+               -I$(srcdir) $(DEFS) $(OPTFLAGS) unimap.c
 
 # missing libraries
 memcmp.o: missing/memcmp.c
diff --git a/README b/README
index 030e4bc..9ebbc72 100644 (file)
--- a/README
+++ b/README
@@ -1,6 +1,6 @@
             MagicPoint - an X11 based presentation tool
 
-                         September 4, 1998
+                           June 10, 1999
 
 MagicPoint is an X11 based presentation tool.  It is designed to make
 simple presentations easy while to make complicated presentations
@@ -8,21 +8,22 @@ possible.  Its presentation file (whose suffix is typically .mgp) is
 just text so that you can create presentation files quickly with your
 favorite editor (e.g. Emacs).
 
-This is alpha release of MagicPoint.  We're planing to add version
-control mechanism of .mgp file for forward compatibly.  But currently,
-such a mechanism is missing. Please use this package at your own risk.
+This is one of the alpha releases of MagicPoint.  We're planing to add
+a version control mechanism of .mgp file for forward compatibly.  But
+currently, such a mechanism is missing. Please use this package at
+your own risk.
 
 MagicPoint is completely free but absolutely no warranty. For more
 information, please refer to COPYRIGHT or COPYRIGHT.jp.  Please note
-that some of the source code is derived from other people's work, and
-may have different distribution policy.  Be sure to check the comment
-in the source code.
+that some of the source codes is derived from other people's works,
+and may have different distribution policies.  Be sure to check the
+comments in the source codes.
 
 
                             INSTALLATION
 
-Since MagicPoint extensively uses fonts in various sizes we recommend
-you to have good font rendering capability in your system.  Please
+Since MagicPoint extensively uses fonts in various sizes, we recommend
+you to install good font rendering systems in your system.  Please
 refer to README.fonts for detail.
 
 - Short summary for non-Japanese readers:
@@ -30,11 +31,11 @@ refer to README.fonts for detail.
 We recommend you to either:
 
     (1) compile MagicPoint with FreeType linked, or
-    (2) use X11 server with good outline font capability.
+    (2) use the X11 server with good outline font capabilities.
 
 The former one is recommended.  For the latter case, it should be okay
-if you have adobe Type1 font in X11 font directory.  There are some
-advanced methods, such as modified X11 server.
+if you have the adobe Type1 font in your X11 font directory.  There
+are some advanced methods, such as modified X11 servers.
 
 - Short summary to Japanese readers:
 
@@ -43,12 +44,12 @@ We recommend you to either:
     (1) compile MagicPoint with FreeType and VFlib linked, or
     (2) compile MagicPoint with FreeType linked, or
     (3) compile MagicPoint with VFlib linked, or
-    (4) use X11 server with outline English/Japanese font capability.
+    (4) use an X11 server with outline English/Japanese font capabilities.
 
 At this moment, MagicPoint uses FreeType only for English fonts, and
 VFlib only for Japanese fonts.  Therefore, Approach (1) is the best.
-(4) needs some special software as standard X11 server will not render
-Japanese scalable font files.
+(4) needs some special software as a standard X11 server will not
+render Japanese scalable font files.
 
 
 Follow the steps below to make MagicPoint:
@@ -58,16 +59,33 @@ Follow the steps below to make MagicPoint:
        % make Makefiles
        % make
 
-Note1: if you have vflib installed AND you do NOT want to compile the
+Note 1: if you have vflib installed AND you do NOT want to compile the
 vflib support into the binary, try the following option: 
+
        % ./configure --disable-vflib
 
-Note2: if you have FreeType installed AND you do NOT want to compile the
+Note 2: if you have FreeType installed AND you do NOT want to compile the
 FreeType support into the binary, try the following option: 
+
        % ./configure --disable-freetype
 
+Note 3: if you have to use a non-standard compiler, you must declare
+your compiler by using "env" command, like:
+
+       % env CC=gcc ./configure                # force gcc
+       % env CC=shlicc2 ./configure            # force shlicc2 (bsdi3)
+
+We cannot make a guess in the configure script, since "imake" may
+dislike the compiler that was guessed by configure.  This applies to,
+for example, Solaris without the Sun compiler license (gcc-only
+environment).
+
+Note 4: If you are willing to use the iso-8859-x character set
+(i.e. you would like setlocale() to be called at startup), specify 
+the --enable-locale option.
+
 Invoking `configure' updates Imakefile.  So, do NOT forget to invoke
-`xmkmf' every time you update Imakefile.
+`xmkmf' everytime you update Imakefile.
 
 It's a good idea to preview a sample file before installation.
 
@@ -81,8 +99,8 @@ When you believe that everything is OK, install MagicPoint as follows:
        # make install
        # make install.man
 
-If you want to paste EPS figure into your presentation, you will need to
-install ghostscript or alike.
+If you want to paste EPS figures into your presentation, you will need
+to install "ghostscript" or "alike".
 
                             FOR MORE INFO
 
@@ -91,9 +109,14 @@ Official home page of MagicPoint is "http://www.Mew.org/mgp/".
 Latest packages are available from "ftp://ftp.Mew.org/pub/MagicPoint/"
 as well as this home page.
 
+Pre-release snapshots are generated weekly, to
+"ftp://sh.wide.ad.jp/WIDE/free-ware/mgp-snap/".  These snapshots MAY
+NOT WORK AT ALL. Keep in your mind that these are just for people who
+would like to hack.
+
 Please send comments to the developer mailing-list "mgp@Mew.org".
 
-There are two mailing list for magicpoint users:
+There are two mailing lists for magicpoint users:
        mgp-users@Mew.org       (language: English)
        mgp-users-jp@Mew.org    (language: Japanese)
 For subscription, please send an email to
index 4dc8ce0..3ced304 100644 (file)
@@ -1,54 +1,57 @@
            Configuring fonts for MagicPoint presentation
 
-$Id: README.fonts,v 1.16 1998/09/04 10:47:35 kazu Exp $
+$Id: README.fonts,v 1.24 1999/06/17 04:26:07 kazu Exp $
 
-For better presentation with "MagicPoint" presentation tool, it is
-necessary to configure your MagicPoint, and maybe your X11 server to
-handle large-size fonts.  The document tries to summarize steps to
+For better presentations with the "MagicPoint" presentation tool, it
+is necessary to configure your MagicPoint, and maybe your X11 server
+to handle large-size fonts.  The document tries to summarize steps to
 make use of large-size fonts with MagicPoint.
 
 
 Standard methods
 ================
 
-Scalable English fonts, with FreeType library
+Scalable English fonts, with the FreeType library
 ---------------------------------------------
 FreeType project, a free software project for TrueType scalable font
-renderer, provides FreeType library at:
+renderer, provides the FreeType library at:
        http://www.freetype.org/
-MagicPoint implements native support for FreeType library.  You can
-compile the renderer into MagicPoint.  If you have FreeType library
-(libttf.a) somewhere in your system, "configure" script will find the
-library and links the library into MagicPoint binary.
+MagicPoint implements native support for the FreeType library.  You
+can compile the renderer into MagicPoint.  If you have the FreeType
+library (libttf.a) somewhere in your system, the "configure" script
+will find the library and links the library into the MagicPoint
+binary.
+
+To avoid linking libttf.a into the MagicPoint binary, you can specify
+the --disable-freetype option to the "configure" script, as below:
 
-To avoid compiling libttf.a into MagicPoint binary, you can specify 
---disable-freetype option to "configure" script, as below:
        ./configure --disable-freetype
 
-If you want to get Free/Commercial TrueType fonts, read below section
-"How to get TrueType font."
+If you want to get Free/Commercial TrueType fonts, read the section
+"How to get TrueType fonts" below.
 
 
-Scalable English fonts, with standard X11 server
+Scalable English fonts, with standard X11 server
 ------------------------------------------------
-Standard X11 server is capable of rendering "Adobe Type-1" scalable
+A standard X11 server is capable of rendering "Adobe Type-1" scalable
 fonts.  To use Adobe Type-1 fonts, you have to install their font
 files.  You can find some fonts in /usr/X11R6/lib/X11/fonts/Type1,
 which is a part of the X11 standard distribution.  If you do not have
-the directory (or similar directory), please install adequate font
+the directory (or similar directory), please install adequate font
 files into your system.
 
 Some good additional fonts can be found at:
        http://www.gimp.org/fonts.html
        ftp://ftp.gimp.org/pub/gimp/fonts/
 
-You may also add X11 font search path.  Refer to the manual for your
-system.  Also, please do not forget to perform "xset fp rehash", if
-you added X11 font path while X11 sever is running.
+You may also add some directories to the X11 font search path.  Refer
+to the manual for your system.  Also, please do not forget to perform
+"xset fp rehash", if you modify the X11 font path while your X11 sever
+is running.
 
 You can query these fonts by using XLFD (X11 font specification
-string) staring from "-adobe-".  Use xfontsel to confirm if it is
-installed or not.
+string) starting with "-adobe-".  Use "xfontsel" to see whether or not
+it is installed.
 
 Scalable Japanese fonts, with VFLib
 -----------------------------------
@@ -56,35 +59,48 @@ For non-Adobe and Adobe scalable fonts, a library called VFLib is
 available from:
        ftp://gull.se.hiroshima-u.ac.jp/pub/VFlib/.
 MagicPoint implements native support for VFlib library.  You can
-compile the renderer into MagicPoint.  If you have VFlib library
+compile the renderer into MagicPoint.  If you have the VFlib library
 (libVFlib.a) somewhere in your system, "configure" script will find
-the library and links the library into MagicPoint binary.
+the library and links the library into the MagicPoint binary.
+
+To avoid compiling libVFlib.a into the MagicPoint binary, you can
+specify --disable-vflib option to "configure" script, as below:
 
-To avoid compiling libVFlib.a into MagicPoint binary, you can specify 
---disable-vflib option to "configure" script, as below:
        ./configure --disable-vflib
 
 English fonts will become scalable as well, however, this method is
-not very suitable for western readers as this approach usually uses
-Japanese font files.  Japanese font file includes several thousand of
-letters and will occupies several megabytes on your disk.
+not very suitable for western readers since this approach usually uses
+Japanese font files.  The Japanese font files include several thousand
+of letters and will occupies several megabytes on your disk.
 
-Combination of FreeType and VFlib
+Scalable Japanese fonts, with FreeType
 ---------------------------------
-MagicPoint uses FreeType only for rendering English fonts, and uses
-VFlib only for rendering Japanese fonts, at this moment.  Therefore,
-it would be the best for Japanese people to link BOTH FreeType and
-VFlib into MagicPoint binary.
+Recent MagicPoint can use the FreeType library for rendering Japanese
+fonts.  You can use this function by executing configure script as
+below:
+
+       ./configure --enable-freetype-charset16
+
+You also need to specify Japanese truetype font files with 'tmfont'
+directive.  The usage of 'tmfont' directive is described in the SYNTAX
+file.
+
+Note: 
+If you have already installed the VFlib library and you want to use
+the FreeType library to render Japanese fonts, you have to disable
+VFlib as below:
+
+       ./configure --disable-vflib --enable-freetype-charset16
 
 
 Advanced/complex methods
 ========================
 
-Scalable fonts, with FreeType-ready X11 server
+Scalable fonts, with FreeType-ready X11 server
 ------------------------------------------------------
 There seems to be several projects for implementing FreeType into X11
-server, or X11 font server (xfs).  By using these kind of
-implementation X11 server will be able to render wide variety of
+server, or X11 font servers (xfs).  By using these kind of
+implementation, a X11 server will be able to render wide variety of
 TrueType scalable fonts.  For obtaining implementation, visit the
 following URL:
        http://www.freetype.org/projects.htm
@@ -96,23 +112,23 @@ Asian languages:
        http://cclub.cc.tut.ac.jp/~go/unix/xtt.html
        http://hawk.ise.chuo-u.ac.jp/student/person/tshiozak/x-tt/index-eng.html
 
-By specifying proper XLFD you can use those scalable fonts from
+By specifying proper XLFD, you can use those scalable fonts with
 MagicPoint.  You may have to modify some of the FreeType-X11 font
 specification file as well.
 
 
-Scalable Japanese/English fonts, with VFlib-ready X11 server
+Scalable Japanese/English fonts, with VFlib-ready X11 server
 ------------------------------------------------------------
 There are several project to compiling VFlib into X11 server, or X11
 font server (xfs), for example:
        http://karin.ip.titech.ac.jp/~takagi/X-VFlib/index.html
 
-By specifying proper XLFD you can use those scalable fonts from
+By specifying proper XLFD, you can use those scalable fonts with
 MagicPoint.  You may have to modify some of the VFlib-X11 font
 specification file as well.
 
 
-Scalable Japanese fonts, with VFlib/FreeType-hetero library
+Scalable Japanese fonts, with the VFlib/FreeType-hetero library
 -----------------------------------------------------------
 It may be really confusing (even for the authors), but there are
 several attempts to merge VFlib and FreeType.  Some try to provide
@@ -121,21 +137,31 @@ others try to do the other way around (VFlib-in-FreeType).
 
 In either cases, you can link the library into MagicPoint itself.
 
-There are, of course, attempts to merge those font renderer into X11
-server or X11 font server (xfs).  In this case, you can use scalable
+There are, of course, attempts to merge those font renderers into X11
+servers or X11 font servers (xfs).  In this case, you can use scalable
 font by using proper XLFD.
 
 
 Miscellaneous 
 =============
 
-How to get TrueType Fonts.
+How to get TrueType fonts.
 ---------------------------------
-You can get freely available TrueType font from following:
+You can get freely available TrueType fonts from following:
        http://www.aaa.nl/people/mkatwijk/freettf.html
        http://come.to/freefonts
        CTAN mirros, pub/CTAN/fonts/cm/ps-type1/bakoma/ttf
                Computer modern fonts in TrueType format
+       http://www.linux.or.jp/~ishikawa/linux/X-TT/
+               Freely redistributable Japanese fonts are converted into
+               TrueType format.  (Wadalab gothic and Watanabe mincho)
+
+       http://members.aol.com/JR9er/index.html
+       http://members.xoom.com/acidfonts/
+       http://dingbats.i-us.com/
+       http://www.freestuffcenter.com/fonts.html
+       http://www.fontpool.com/
+               TrueType font collections and collections of links.
 
 Also there are several sources for free-of-charge fonts, with some
 licensing things:
@@ -157,3 +183,7 @@ TrueType fonts:
 
 You may also able to purchase "font collection CD-ROM", at computer
 store near you.
+
+NOTE: TeX-deribed fonts (including computer modern fonts) places marks
+like "<" or ">" in strange places.  Therefore, you may have some trouble
+writing formulas and other non-plain text.
index 69b88d8..80f1c9e 100644 (file)
@@ -1,6 +1,6 @@
         MagicPoint\e$B%W%l%<%s%F!<%7%g%sMQ$N%U%)%s%H@_Dj$K$D$$$F\e(B
 
-$Id: README.fonts.jp,v 1.6 1998/09/04 10:47:37 kazu Exp $
+$Id: README.fonts.jp,v 1.12 1999/05/27 03:22:47 nishida Exp $
 
        -----\e$BF|K\8lHG\e(B(README.fonts.jp)\e$B$K4X$9$kCm0U\e(B-----
        \e$B1Q8lHG\e(B(README.fonts)\e$B$NJ}$,@5<0$G$9!#\e(B
@@ -33,9 +33,6 @@ FreeType \e$B%i%$%V%i%j$O!"\e(BFreeType \e$B%W%m%8%'%/%H\e(B
 \e$B$N$h$&$K!"\e(Bconfigure\e$B%9%/%j%W%H$N0z?t$K\e(B--disable-freetype\e$B$r$D$1$F<B9T$7\e(B
 \e$B$F$/$@$5$$!#\e(B
 
-\e$BCm0U!'8=:_\e(B FreeType \e$B%i%$%V%i%j$rD>@\MxMQ$9$kJ}K!$G$O!"1QJ8;z%U%)%s%H$7\e(B
-\e$B$+MxMQ$G$-$^$;$s!#6aF|Cf$K$O!"F|K\8l%U%)%s%H$b%5%]!<%H$9$kM=Dj$G$9!#\e(B
-
 TrueType \e$B%U%)%s%H\e(B(\e$B%U%j!<\e(B/\e$B>&MQ\e(B)\e$B$N<hF@J}K!$O!"!X\e(BTrueType \e$B%U%)%s%H$N<hF@\e(B
 \e$BJ}K!!Y$r;2>H$7$F$/$@$5$$!#\e(B
 
@@ -95,10 +92,26 @@ MagicPoint \e$B$O\e(B VFlib \e$B%i%$%V%i%j$rAH$_9~$`$3$H$G!"MM!9$J7A<0$N%9%1!<%i%V\e
 \e$BF|K\8l$N%U%)%s%H$O?t@iJ8;z$N%U%)%s%H$r4^$s$G$$$k4X78>e$H$F$bBg$-$$$N$G!"\e(B
 \e$B1Q8l$7$+MxMQ$7$J$$%f!<%6$K$H$C$F$O$A$g$C$HL5BL$+$b$7$l$^$;$s!#\e(B
 
-[VFlib\e$B$H\e(BFreeType\e$B$NJ#9gMxMQ\e(B]
+[FreeType\e$B$NMxMQ\e(B]
+
+\e$B8=:_$N\e(BMagicPoint\e$B$G$O\e(BFreeType(http://www.freetype.org/)\e$B$rMxMQ$7$F\e(B TrueType
+\e$B$NF|K\8l$rI=<($9$k$3$H$,$G$-$^$9!#\e(BFreeType\e$B$,%$%s%9%H!<%k$5$l$F$$$k\e(B
+\e$B4D6-$G!"\e(B
+
+       ./configure --enable-freetype-charset16
+
+\e$B$N$h$&$K%*%W%7%g%s$r;XDj$7$F\e(Bconfigure\e$B$r<B9T$7$F$/$@$5$$!#\e(B
+\e$B$3$N@_Dj$K$h$j!"\e(B'tmfont'\e$B$H$$$&\e(Bdirective\e$B$,;HMQ$G$-$k$h$&$K$J$j$^$9!#\e(B
+'tmfont' directive\e$B$G!"F|K\8l$N\e(BTrueType\e$B%U%)%s%H$r;XDj$7$F$/$@$5$$!#\e(B
+tmfont directive\e$B$N\e(BSYNTAX\e$B$K$D$$$F$O!"\e(BSYNTAX\e$B%U%!%$%k$r;2>H$7$F$/$@$5$$!#\e(B
+
+(*\e$BCm\e(B) VFlib\e$B$,%$%s%9%H!<%k$5$l$F$$$k4D6-$G!"\e(BFreeType\e$B$rMxMQ$7$FF|K\8l%U%)%s%H\e(B
+\e$B$rI=<($7$?$$>l9g$O!"\e(Bconfigure \e$B%9%/%j%W%H$N<B9T;~$K\e(B
 
-\e$B8=;~E@$G$O!"\e(BMagicPoint \e$B$G$O\e(B FreeType \e$B$O1QJ8;z%U%)%s%H$N$_$K!"\e(BVFlib \e$B$O\e(B
-\e$BF|K\8l%U%)%s%H$N$_$KMxMQ$9$k$h$&$K$J$C$F$$$^$9!#\e(B
+       ./configure --disable-vflib --enable-freetype-charset16
+
+\e$B$N$h$&$K%*%W%7%g%s$G\e(B--disable-vflib\e$B$r;XDj$7$F!"\e(BVFlib\e$B$r%j%s%/$7$J$$$h$&$K\e(B
+\e$B$7$F2<$5$$!#\e(B
 
 
 \e$B9g$o$;5;\e(B
@@ -181,6 +194,16 @@ TrueType \e$B%U%)%s%H$N<hF@J}K!\e(B
        http://come.to/freefonts
        CTAN mirros, pub/CTAN/fonts/cm/ps-type1/bakoma/ttf
                Computer modern fonts in TrueType format
+       http://www.linux.or.jp/~ishikawa/linux/X-TT/
+               \e$BG[I[<+M3$J%U%)%s%H$,\e(BTrueType\e$B%U%)!<%^%C%H$KJQ49$5$l$F\e(B
+               \e$BCV$$$F$"$j$^$9!#\e(B(\e$BOBED8&%4%7%C%/$HEOJUL@D+\e(B)
+
+       http://members.aol.com/JR9er/index.html
+       http://members.xoom.com/acidfonts/
+       http://dingbats.i-us.com/
+       http://www.freestuffcenter.com/fonts.html
+       http://www.fontpool.com/
+               TrueType\e$B%U%)%s%H=8!"$^$?$O%j%s%/=8\e(B
 
 \e$B$^$?!"0J2<$N%5%$%H$G<hF@$G$-$k%U%)%s%H$O!"L5NA$G$9$,%i%$%;%s%9$K>/$7Ld\e(B
 \e$BBj$,$"$j$^$9!#\e(B
@@ -202,3 +225,8 @@ TrueType \e$B%U%)%s%H$N<hF@J}K!\e(B
 
 \e$B$^$?!"%Q%=%3%s!&%7%g%C%WE9F,$G!V%U%)%s%H!&%3%l%/%7%g%s\e(B CD-ROM\e$B!W$NN`$r\e(B
 \e$B9XF~$9$k$N$b$$$$$G$7$g$&!#\e(B
+
+NOTE: TeX\e$B5/8;$N%U%)%s%H\e(B(computer modern font\e$B$b$3$NCg4V\e(B)\e$B$G$O!"\e(B"<"\e$B$d\e(B">"\e$B$J$I$N\e(B
+\e$B5-9fN`$,\e(BASCII\e$B$H0c$&G[Ns$K$J$C$F$$$^$9!#$3$N$?$a!"?t<0$d$=$NB>$N5-9fF~$j$N\e(B
+\e$BJ8$r=q$/$H$-$K6lO+$9$k$+$b$7$l$^$;$s!#\e(B
+
diff --git a/README.lang b/README.lang
new file mode 100644 (file)
index 0000000..fdb1279
--- /dev/null
@@ -0,0 +1,26 @@
+Making multilingual presentations with MagicPoint
+$Id: README.lang,v 1.3 1999/06/17 04:26:08 kazu Exp $
+
+
+MagicPoint has no idea about what kind of character set you are using
+with your presentation file, or what kind of language you are using.
+For example, if you use Latin-1 (iso-8859-1) you MUST tell that explicitly
+to MagicPoint.
+
+In the future, we will be adding a MagicPoint directive to specify
+the encoding of the file explicitly, like:
+       %charset "iso-8859-1"
+       %charset "iso-2022-jp"
+
+Making MagicPoint presentations in European languages
+- Use "/configure  --enable-locale" before compilation.
+  In some operating systems you may need -lxpg4 with this.
+       (so that ctype functions, such as isprint(), works with 
+         locale support)
+- When invoking MagicPoint, configure the LANG environment variable to
+  proper value.
+- When making a PostScript file for the presentation, use -e option.
+
+Making MagicPoint presentations in Asian languages
+- Use iso-2022 family encoding (iso-2022-jp, iso-2022-cn and others).
+  Or, the X11 ctext encoding for your file.
diff --git a/SYNTAX b/SYNTAX
index e44f924..b963c27 100644 (file)
--- a/SYNTAX
+++ b/SYNTAX
@@ -1,4 +1,4 @@
-$Id: SYNTAX,v 1.18 1998/09/04 13:11:54 itojun Exp $
+$Id: SYNTAX,v 1.29 1999/08/18 03:18:23 itojun Exp $
 
 placement restriction for directives:
                .mgprc          preamble        main pages
@@ -16,6 +16,10 @@ others               x               x               okay
 #
        Comment lines.
 
+\ (at the end of line)
+       Line continuation.  Spaces/tabs at the beginning of next line
+       will be ignored.
+
 %size <size>
        <size> :: size of fonts
 
@@ -70,20 +74,50 @@ others              x               x               okay
        Disable effect of default directive.
 
 %xfont "font"
-       <font> :: use X11's <font> to draw ASCII characters.
+%xfont "font" "registry"
+       <font> :: use X11's <font> to draw characters.
+       "font" is for specifying X11 XLFD, font alias name, or
+       "family-weight-slant".
+       "registry" is for specifying "registry-encoding".
+
+       interpretation of "registry":
+       - If none specified, "iso8859-1" is assumed.
+       - If no dash inside, encoding of "*" is assumed.
+         Therefore, you'll get "REGISTRY-*".
+       - If there's a single dash inside, use specified value.
+         Therefore, you'll get "REGISTRY-SPECIFIED".
 
        interpretation of "font":
        - If it has no dash inside,
                Try font alias, such as "8x5" or "a14".
                If there's no font alias matched, it should be "times" or
                something like that. In this case, try
-               "-*-FONT-*-*-*-*-SIZE-*-*-*-*-*-iso8859-1".
+               "-*-FONT-*-*-*-*-SIZE-*-*-*-*-*-REGISTERY-SPECIFIED".
        - If it has single dash inside, such as "times-medium":
-               Try "-*-FONT-NAME-*-*-*-SIZE-*-*-*-*-*-iso8859-1".
+               Try "-*-FONT-NAME-*-*-*-SIZE-*-*-*-*-*-REGISTRY-SPECIFIED".
        - If it has two dash inside, such as "times-medium-r":
-               Try "-*-FONT-NAME-SPECIFIED-*-*-SIZE-*-*-*-*-*-iso8859-1".
+               Try "-*-FONT-NAME-SPECIFIED-*-*-SIZE-*-*-*-*-*-REGISTRY-SPECIFIED".
        - Otherwise, try the specified string itself as XLFD.
 
+       Some exercises:
+       %xfont "times"
+               You'll get "-*-times-*-*-*-*-SIZE-*-*-*-*-*-iso8859-1".
+       %xfont "mincho" "jisx0208.1983"
+               You'll get "-*-mincho-*-*-*-*-SIZE-*-*-*-*-*-jisx0208.1983-*".
+       %xfont "mincho-medium-r" "jisx0208.1983"
+               You'll get "-*-mincho-medium-r-*-*-SIZE-*-*-*-*-*-jisx0208.1983-*".
+
+       NOTE: Only the following items are meaningful as "registry".
+               jisx0208.1983-*
+               gb2312.1980-*
+               ksc5601.1987-*
+               iso8859-1
+               iso8859-2
+               iso8859-3
+               iso8859-4
+       It would be nice if we can support "adobe-specific" for symbols,
+       however, we have no escape sequence to designate the it...
+
 %vfont "font"
        <font> :: use VFlib's <font> to draw Kanji characters.
 
@@ -92,6 +126,10 @@ others              x               x               okay
                <font> can be full pathname, or just filename.  Use %tfdir
                for setting default font directory.
 
+%tmfont "font"
+       <font> :: use TrueType font <font> to draw Kanji characters.
+               <font> can be full pathname, or just filename. 
+
 %tfont0 "font"
        <font> :: use TrueType font <font>, if none of the font specified by
                %tfont directive is found.  This is the last-resort for the
@@ -105,7 +143,7 @@ others              x               x               okay
        <length> :: length percent of display width. default 100.
 
 %image "imagefile" <numcolor> <xzoomrate> <yzoomrate> <zoomflag>
-%image "imagefile" [<numcolor>] <screensize>
+%image "imagefile" [ [<numcolor>] <screensize> ]
        "imagefile" :: name of image file
        <numcolor> :: number of colors, 0 means no reduction.
        <xzoomrate> :: height percentage against physical display or original
@@ -123,6 +161,30 @@ others             x               x               okay
        Note that if the image is a binary image, current foreground
        and background colors are applied to the drawn image.
 
+%newimage [options] "imagefile"
+
+       Same as %image, but it is much easier to understand.
+       options include:
+           -colors numcolors
+           -xysize piel pixel
+           -zoom percentage
+           -xyzoom x-percentage y-percentage
+               Percentage is against the original image.
+               "100" means the original image size, "50" means
+               half the original image size.
+           -scrzoom percentage
+           -xscrzoom percentage
+           -yscrzoom percentage
+           -xyscrzoom x-percentage y-percentage
+               Percentage is against the screen. "100" means screen
+               width/height, "50" means half the screen width/height.
+               -xscrzoom and -yscrzoom scales image with aspect
+               ratio unchanged.
+
+       TODO: supersede %image by %newimage?
+       TODO: option for auto resize mode (fit image into the room left on
+               the screen)
+
 %prefix "string"
        Place "string" at the beginning of line.
        "string" should be a set of blank characters (\040).
@@ -138,8 +200,12 @@ others             x               x               okay
        gives you an green box on the leftmost column of line.
        size is the percentage against the current character size.
 
-%bimage "imagefile"
+%bimage "imagefile" [ <screensize> ]
        Specify the name of background image file
+       <screensize> :: auto resizing.
+                       specify the original screen size by WIDTHxHEIGHT.
+                       unless screensize is the same size of the physical
+                       display, zoomrate is calculated automagically.
 
 %default <linenum> <list-of-directives>
        Unless nodefault directive is specified, the directives in the
@@ -254,3 +320,13 @@ TEXT
 
 %noop
        No operation
+
+%pcache <flag> <mode> <effect> <value>
+       <flag> :: enable or disable forward page cache
+                       0 means disable forward page cache
+                       1 means enable forward page cache
+       <mode> :: cache mode
+                       0 means caching is executed after 2seconds idle.
+                       1 means caching is executed immediately.
+       <effect> :: type of 'special effect' for the forward page cache (0-2)
+       <value> ::  speed of 'special effect'. value 1 means the highest speed.
diff --git a/USAGE b/USAGE
index 6e0fccf..ce5d269 100644 (file)
--- a/USAGE
+++ b/USAGE
@@ -2,8 +2,7 @@
 
                      Kazu Yamamoto (with Chaki)
 
-                         September 4, 1998
-
+                           June 17, 1999
 
 All .mgp commands start with "%". After making sure that
 /usr/X11R6/lib/X11/mgp/default.mgp exists, add the following line to
@@ -54,7 +53,7 @@ parameters of default.mgp are set as follows:
        %default 4 size 5, fore "white", vgap 30, prefix " ", font "standard"
 
 %default set the parameters for the line specified in the first
-argment to the values specified the second and later argments. In the
+argument to the values specified the second and later argments. In the
 first line, the size is 2% and in the second line the size is set to
 7%. Parameters set in previous lines are valid unless
 overwritten. Therefore, the text in the second line will be white.
@@ -67,13 +66,13 @@ Let's take a look at the following example:
 
        %page
                                                (A space of 2%)
-       TITLE --- size 7% color white and in gothic font
-                                               (horizontal line)
-       text --- size 5% white gothic font
+       TITLE --- size 7% color white and in thick font
+                                               (horizontal line)
+       text --- size 5% white thick font
        %fore yellow, size 4
-       text --- size 4% yellow gothic font 
+       text --- size 4% yellow thick font 
        %vfont min
-       text --- size 4% yellow mincho font 
+       text --- size 4% yellow standard font 
 
 %tab is a command that directly associates with the line. In
 default.mgp it is set as follows:
@@ -84,13 +83,14 @@ default.mgp it is set as follows:
 
 When there is a singular tab at the head of the line, the values of
 %tab override the current values and become valid. When there are two
-tabs at the head of the line, %tab2 becomes valid, when there are
-three tabs at the head of the line %tab3 becomes valid and so on.
+tabs at the head of the line, %tab 2 becomes valid, when there are
+three tabs at the head of the line %tab 3 becomes valid and so on.
 
 In other words,
 1 tab means text size 5% and the line starts with spaces and green box icon.
 2 tabs mean text size 4% and the line starts with spaces and yellow arc icon. 
-3 tabs mean text size 3% and the line starts with spaces and white delta3 icon.
+3 tabs mean text size 3% and the line starts with spaces and white delta icon.
+
 
 By using this, it's easy to itemize. Let's take a look at an example:
 
@@ -114,42 +114,30 @@ sample/*.mgp.
                            Life with tgif
 
 
-MagicPoint cannot display tgif objs but there is a way to sort of get
-around this.
+MagicPoint cannot display "tgif" objs but there is a way to sort of
+get around this.
+
+(1) If you cannot use "ghostscript":
+    - make "tgif" create a GIF file for screen display
+    - make "tgif" create an EPS file for printing out
 
-       If you cannot use ghostscript:
-       - make tgif create a GIF file for screen display
-       - make tgif create an EPS file for printing out
-       If you have ghostscript:
-       - craete EPS file from tgif "obj" file and use that for both cases
+(2) If you have "ghostscript":
+    - craete an EPS file from a "tgif" obj file and use that for both cases
 
-If you cannot use ghostscript:
+(1) If you cannot use "ghostscript":
 
-The image created by tgif is displayed "as is" on MagicPoint's screen.
-This is pretty sad when fonts aren't displayed clearly when viewing
-with tgif. Either Mincho or Gothic font is provided for 14, 16, 24,
-and 26 dot. So it's possible to give xrdb something like the
-following, and then make tgif create a GIF file.
+The image created by "tgif" is displayed "as is" on MagicPoint's
+screen.  This is pretty sad when fonts aren't displayed clearly when
+viewing with "tgif". Either Mincho or Gothic font is provided for 14,
+16, 24, and 26 dot. So it's possible to give "xrdb" something like the
+following, and then make "tgif" create a GIF file.
 
 Tgif*Background: black
 Tgif*Foreground: white
 Tgif*WhereToPrint: EPS
 Tgif*InitialFontSize: 16
-Tgif*InitialKanjiFont: Gothic
 Tgif*FontSizes: 14 16 24 26
-Tgif*NihongoFonts: \
-       -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-0,, \
-       Ryumin-Light-EUC-H, Ryumin, \
-       H, false, 24, 26 \n\
-       -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-0,, \
-       GothicBBB-Medium-EUC-H, Gothic, \
-       H, false, 16, 18 \n\
-       -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-0,, \
-       Ryumin-Light-EUC-V, Ryumin-V, \
-       V, false, 24, 26 \n\
-       -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-0,, \
-       GothicBBB-Medium-EUC-V, Gothic-V, \
-       V, false, 16, 18
+Tgif.XpmToGif: xpmtoppm %s | ppmtogif -transparent black
 
 EPS files can be created just by typing:
        tgif -print -eps *.obj
@@ -157,24 +145,52 @@ This is convenient when you have a whole lot of files.
 
 However, some files might not get the right colors using this way. If
 you find any files that don't have the right colors, try manually
-creating the EPS file using tgif.
+creating the EPS file using "tgif".
 
-If corresponding filename.eps exists for filename.{gif,jpg,...}, mgp2ps
-uses filename.eps when creating a PS file.
+If corresponding filename.eps exists for filename.{gif,jpg,...},
+"mgp2ps" uses filename.eps when creating a PS file.
 
-If you want to bundle two pages into one, you could try this:
-       pstops '2:0R@.5(2cm,26cm)+1R@.5(2cm,13cm)' input.ps > output.ps
-
-If you can ghostscript:
+(2) If you can "ghostscript":
 
-Generate eps file, again by using
+Generate an EPS file, again by using
        tgif -print -eps *.obj
 command.
 
-Paste the eps file into your presentation by adding
-       %image "foobaa.eps"
-then, mgp will render the eps file on-the-fly, by invoking ghostscript.
-mgp2ps will properly include the eps file into the output.
+Paste the EPS file into your presentation by adding
+       %image "foobar.eps"
+then, mgp will render the EPS file on-the-fly, by invoking "ghostscript".
+"mgp2ps" will properly include the EPS file into the output.
+
+(3) Distributing presentation materials
+
+If you want to bundle two pages into one, you could try this:
+       psnup -l -m100 -q -2 input.ps > output.ps
+
+"psnup" is included the "psutils"
+package(ftp://ftp.dcs.ed.ac.uk/pub/ajcd).
+
+                       Tips for better presentation
+
+(1) Refrain from using "vfont", "xfont" and "tfont" directive
+directly.  Use "deffont" in preamble and "font" in body instead.  This
+should allow people to view your presentation in all the configuration
+of the renderer.  (i.e. with/without FreeType, with/without VFlib)
+
+(2) Use EPS files for vector image.
+
+(3)Install the latest "ghostscript".  Configure so that it can
+generate grayscaled image as output.
+
+(4) Before the actual presentation, go through the presentation in the
+same configuration as "the real thing".  It will make rendering
+faster.  (For the included EPS images, pixel image will be generated
+and be cached).  If you execute "mgp" with the "-F" option, "mgp"
+fetches and caches the next page so that it makes faster to visualize
+the next page.
+
+(5) Check/practice the connection with the VGA projector.
+
+(6) Practice your oral presentation well :-)
 
 
                        Mathematical Formulas
@@ -184,22 +200,34 @@ There are, at least, three way to include mathematical formulas in
 
 (1) TeX
 - Obtain .dvi file for the expression with TeX.
-- With dvipr you can obtain .eps file for the dvi.
+e.g. the following code would do:
+
+\documentstyle{article}
+\pagestyle{empty}
+\thispagestyle{empty}
+\begin{document}
+...formula...
+\end{document}
+
+- With dvips you can obtain .eps file for the dvi.
+
+e.g. latex foo.tex ; dvips -f -E foo.dvi > foo.eps
+
 - Include .eps file into your presentation as follows:
 
-       %image "foo.eps"
+       %image "foo.eps" 0 width height
 
-(2) eqn/troff
-- Obtain .ps file for the expression with eqn/troff.
-- Convert .ps file to .eps file. (e.g. pstoepsi)
+(2) "eqn"/"troff"
+- Obtain .ps file for the expression with "eqn"/"troff".
+- Convert .ps file to .eps file. (e.g. "pstoepsi")
 - Include .eps file into your presentation as follows:
 
        %image "foo.eps"
 
 (3) Bitmap (not recommended)
-- Obtain .ps file for the expression with TeX or eqn/troff.
-- Convert .ps file to .pnm file.(e.g. pstopnm)
-- Convert .pnm file to .pbm file (e.g. pnmcrop)
+- Obtain .ps file for the expression with TeX or "eqn"/"troff".
+- Convert .ps file to .pnm file.(e.g. "pstopnm")
+- Convert .pnm file to .pbm file (e.g. "pnmcrop")
 - Include .pbm file into your presentation as follows:
 
        %image "foo.pbm"
@@ -207,27 +235,33 @@ There are, at least, three way to include mathematical formulas in
 
                        Pasting foils onto the web
 
-If you wish to paste your magicpoint presentation, you have three options.
+If you wish to paste your MagicPoint presentation, you have three options.
+
+(1) If you can assume that the client-side has MagicPoint, you can
+paste a presentation file after processing that by "mgpembed" program.
+
+(1.1) Merge images into presentation file, by using "mgpembed".
+"mgpembed" generates single archive-like presentation file, which
+includes images (encoded by "uuencode").
+
+(1.2) Paste the generated file onto the web, under name "foo.mgp".
 
-If you can assume that the client-side has magicpoint, you can paste
-a presentation file after processing that by "mgpembed" program.
-       1. Merge images into presentation file, by using "mgpembed".
-          mgpembed generates single archive-like presentation file, which
-          includes images (encoded by uuencode).
-       2. Paste the generated file onto the web, under name "foo.mgp".
 Client side (Browser) needs to be configured as follows:
-Define "helper application" for extention ".mgp" as,
+Define "helper application" for extention ".mgp" as,
        mgp -g 400x300 -S <filename>
-You can specify any screeen size as you want.  Here, -S is REALLY important
-for security, since magicpoint presentation can include arbitrary shell
-command.  -S option disables invocation of any external process from
-magicpoint.
-If you need to configure content-type for ".mgp", use
-"application/x-magicpoint".  I believe "text/plain" would be a last resort.
-
-If you cannot asuume that there's no magicpoint at the client's site,
-you'll need to convert presentation into html file.  use mgp -D for this.
-
-You may convert your presentation as postscript file, after processing it
-with "mgp2ps".   It would be nice if you would like nobody to reuse your
-work at ease.
+You can specify any screeen size as you want.  Here, -S is REALLY
+important for security, since MagicPoint presentation can include
+arbitrary shell command.  -S option disables invocation of any
+external process from MagicPoint.  If you need to configure
+content-type for ".mgp", use "application/x-magicpoint".  I believe
+"text/plain" would be a last resort.
+
+(2) If you cannot asuume that there's no MagicPoint at the client's
+site, you'll need to convert presentation into a html file.  Use the
+-D option for this.
+
+(3) You may convert your presentation as postscript file, after
+processing it with "mgp2ps".  It would be nice if you would like
+nobody to reuse your work at ease.
+
+END
index 187a7f6..97a32b6 100644 (file)
--- a/USAGE.jp
+++ b/USAGE.jp
@@ -2,9 +2,9 @@
 
                               \e$B;3K\OBI'\e(B
 
-                            1998\e$BG/\e(B9\e$B7n\e(B4\e$BF|\e(B
+                           1999\e$BG/\e(B6\e$B7n\e(B17\e$BF|\e(B
 
-.mgp \e$B$N%3%^%s%I\e(B(directive) \e$B$O\e(B "%" \e$B$G;O$^$j$^$9!#$H$j$"$($:!"\e(B
+.mgp \e$B%U%!%$%k$N%3%^%s%I\e(B(directive) \e$B$O\e(B "%" \e$B$G;O$^$j$^$9!#$H$j$"$($:!"\e(B
 /usr/X11R6/lib/X11/mgp/default.mgp \e$B$,$"$k$3$H$r3NG'$7$?$i!"\e(B.mgp \e$B%U%!%$\e(B
 \e$B%k$N:G=i$K0J2<$N9T$rF~$l$F2<$5$$!#\e(B
 
@@ -57,17 +57,17 @@ MagicPoint \e$B$O$"$k9T$rI=<($9$k:]$K!"$^$:$=$N9T$N\e(B %default \e$B$N@_Dj$rH?1G\e(
 \e$B$7$^$9!#<!$KK\J8Cf$G;XDj$5$l$?@_Dj$rH?1G$7$^$9!#$?$@$7!"L@<(E*$K;XDj$5\e(B
 \e$B$l$J$$B0@-$O!"A0$N9T$NCM$r0z$-$:$j$^$9!#\e(B
 
-\e$BNc$r$_$F8+$^$7$g$&\e(B
+\e$BNc$r8+$F$_$^$7$g$&\e(B
 
        %page
                                                (\e$BBg$-$5\e(B 2 \e$B!s\e(B \e$B$NM>Gr\e(B)
-       \e$BBg$-$5\e(B 7 \e$B!s$GGr?'$G%4%A%C%/$N%?%$%H%k\e(B
+       \e$BBg$-$5\e(B 7 \e$B!s$GGr?'$GB@;z$N%?%$%H%k\e(B
                                                (\e$B2#K@\e(B)
-       \e$BBg$-$5\e(B 5 \e$B!s\e(B \e$B$GGr?'$G%4%A%C%/$NJ8;z\e(B
+       \e$BBg$-$5\e(B 5 \e$B!s\e(B \e$B$GGr?'$GB@;z$NJ8;z\e(B
        %fore yellow, size 4
-       \e$BBg$-$5\e(B 4 \e$B!s\e(B \e$B$G2+?'$G%4%A%C%/$NJ8;z\e(B
-       %vfont min
-       \e$BBg$-$5\e(B 4 \e$B!s\e(B \e$B$G2+?'$GL@D+$NJ8;z\e(B
+       \e$BBg$-$5\e(B 4 \e$B!s\e(B \e$B$G2+?'$GB@;z$NJ8;z\e(B
+       %font standard
+       \e$BBg$-$5\e(B 4 \e$B!s\e(B \e$B$G2+?'$GI8=`$NJ8;z\e(B
 
 \e$B$"$H!"9T$HD>9T$9$kL?Na$K\e(B %tab \e$B$,$"$j$^$9!#\e(Bdefault.mgp \e$B$G$O0J2<$N$h$&$K\e(B
 \e$BDj5A$5$l$F$$$^$9!#\e(B
@@ -107,21 +107,23 @@ MagicPoint \e$B$O$"$k9T$rI=<($9$k:]$K!"$^$:$=$N9T$N\e(B %default \e$B$N@_Dj$rH?1G\e(
                            tgif \e$B$H$N@83h\e(B
 
 
-MagicPoint \e$B$O\e(B tgif \e$B$N\e(B obj \e$B$rI=<($G$-$J$$$1$I!"9,$;$K$J$kJ}K!$O$"$j$^$9!#\e(B
+MagicPoint \e$B$O\e(B tgif \e$B$N\e(B .obj \e$B%U%!%$%k$rD>@\I=<($G$-$J$$$1$l$I!"9,$;$K$J\e(B
+\e$B$l$kJ}K!$O$"$j$^$9!#\e(B
 
-       ghostscript\e$B$r;H$($J$$$J$i\e(B...
-       - \e$B2hLLI=<($N$?$a$K$O\e(B tgif \e$B$K\e(B GIF \e$B$rEG$+$;$k\e(B
-       - \e$B0u:~$N$?$a$K$O\e(B tgif \e$B$K\e(B EPS \e$B$rEG$+$;$F;H$&\e(B
-       ghostscript\e$B$r;H$($k$J$i\e(B...
-       - \e$B2hLLI=<(\e(B/\e$B0u:~$H$b!"\e(Btgif \e$B$K\e(B EPS \e$B$rEG$+$;$?$N$r;H$&\e(B
+(1) \e$B2hLLI=<($K\e(B ghostscript \e$B$rMxMQ$7$J$$$J$i\e(B
+    - \e$B2hLLI=<($K$O\e(B tgif \e$B$,EG$$$?\e(B GIF \e$B$r;H$&\e(B
+    - \e$B0u:~$K$O\e(B tgif \e$B$,EG$$$?\e(B EPS \e$B$r;H$&\e(B
 
-ghostscript \e$B$r;H$($J$$>l9g\e(B:
+(2) \e$B2hLLI=<($K\e(B ghostscript \e$B$rMxMQ$9$k$J$i\e(B
+    - \e$B2hLLI=<(\e(B/\e$B0u:~6&$K\e(B tgif \e$B$,EG$$$?\e(B EPS \e$B$r;H$&\e(B
 
-tgif \e$B$GI=<($5$l$?%$%a!<%8$,$=$N$^$^!"\e(Bmgp \e$B$N2hLL$K=P$^$9!#$@$+$i!"%U%)\e(B
-\e$B%s%H$,\e(B tgif \e$B$G$-$l$$$KI=<($5$l$F$$$J$$$HHa$7$$$G$9!#$H$j$"$($:!"\e(B14\e$B!"\e(B16\e$B!"\e(B
-24\e$B!"\e(B26 \e$B%I%C%H$N%U%)%s%H$O!"L@D+$+%4%7%C%/$I$A$i$+$,$"$j$^$9!#$@$+$i!"\e(B
-\e$B0J2<$N$h$&$J%U%!%$%k$r\e(B xrdb \e$B$K?)$o$;$F!"\e(Btgif \e$B$r>e$2!"\e(BGIF \e$B$rEG$+$;$k$H\e(B
-\e$B$$$$$G$7$g$&!#\e(B
+(1) GIF and EPS
+
+tgif \e$B$GI=<($5$l$?%$%a!<%8$,$=$N$^$^!"\e(Bmgp \e$B$N2hLL$KI=<($5$l$^$9!#$@$+$i!"\e(B
+\e$B%U%)%s%H$,\e(B tgif \e$B$G$-$l$$$KI=<($5$l$F$$$J$$$HHa$7$$$G$9!#$H$j$"$($:!"\e(B14\e$B!"\e(B
+16\e$B!"\e(B24\e$B!"\e(B26 \e$B%I%C%H$N%U%)%s%H$O!"L@D+$+%4%7%C%/$I$A$i$+$,$"$j$^$9!#$=$3\e(B
+\e$B$G!"0J2<$N$h$&$J%U%!%$%k$r\e(B xrdb \e$B$K?)$o$;$F!"\e(Btgif \e$B$r>e$2!"\e(BGIF \e$B$rEG$+$;\e(B
+\e$B$k$H$$$$$G$7$g$&!#\e(B
 
 Tgif*Background: black
 Tgif*Foreground: white
@@ -142,6 +144,7 @@ Tgif*NihongoFonts: \
        -*-fixed-medium-r-normal--%d-*-*-*-*-*-jisx0208.1983-0,, \
        GothicBBB-Medium-EUC-V, Gothic-V, \
        V, false, 16, 18
+Tgif.XpmToGif: xpmtoppm %s | ppmtogif -transparent black
 
 EPS \e$B$O!"\e(B
        tgif -print -eps *.obj
@@ -153,73 +156,144 @@ tgif \e$B$r>e$2$F%^%K%e%"%kA`:n$G\e(B EPS \e$B$rEG$+$;$^$7$g$&!#\e(B
 mgp2ps \e$B$O!"\e(Bfilename.{gif,jpg,...} \e$B$KBP$7!"\e(Bfilename.eps \e$B$,$"$l$P$=$A$i\e(B
 \e$B$rFI$_9~$s$G\e(B PS \e$B$r:n$j$^$9!#$"$"!"$J$s$FJXMx!#\e(B
 
-2 \e$B$D$N%Z!<%8$r\e(B 1 \e$B$D$K$^$H$a$k$K$O!"\e(B
-       pstops '2:0R@.5(2cm,26cm)+1R@.5(2cm,13cm)' input.ps > output.ps
-\e$B$H<vJ8$r>'$($l$P$$$$$G$7$g$&!#\e(B\^^/
-
-ghostscript \e$B$r;H$($k>l9g\e(B:
+(2) EPS only
 
 EPS \e$B$r$D$/$j$^$9!#7+$jJV$7$K$J$j$^$9$,!"\e(B
        tgif -print -eps *.obj
 \e$B$H$d$l$P:n$l$^$9!#\e(B
 
-nantara.mgp \e$B$NCf$G!"\e(B
-       %image "hoge.eps"
-\e$B$H$9$l$P!"%W%l%<%s$N:]$K$O\e(B mgp \e$B$NCf$+$i\e(B ghostscript \e$B$,8F$S=P$5$l!"\e(B
-EPS \e$B%U%!%$%k$NCf?H$,2hLL>e$KIA2h$5$l$^$9!#\e(B
-\e$B0u:~$N:]$K$O\e(B mgp2ps \e$B$,@5$7$/\e(B eps \e$B$r=hM}$7$^$9!#\e(B
+.mgp \e$B%U%!%$%k$NCf$G!"\e(B
+       %image "foo.eps"
+\e$B$H$9$l$P!"%W%l%<%s$N:]$K$O\e(B mgp \e$B$NCf$+$i\e(B ghostscript \e$B$,8F$S=P$5$l!"\e(BEPS 
+\e$B%U%!%$%k$NCf?H$,2hLL>e$KIA2h$5$l$^$9!#\e(B
+
+\e$B0u:~$9$k>l9g$O!"\e(B(1) \e$B$HF1MM$K\e(B mgp2ps \e$B$rMxMQ$7$F2<$5$$!#\e(B
+
+
+(3) \e$B;qNA$NG[I[\e(B
+
+2 \e$B$D$N%Z!<%8$r\e(B 1 \e$B$D$K$^$H$a$k$K$O!"\e(B
+       psnup -l -m100 -q -2 input.ps > output.ps
+\e$B$H<vJ8$r>'$($l$P$$$$$G$7$g$&!#\e(B\^^/
+
+psnup \e$B$O\e(B psutils (ftp://ftp.dcs.ed.ac.uk/pub/ajcd) \e$B$KF~$C$F$$$^$9!#\e(B
+
+                       \e$B>e<j$J%W%l%<%s$N$?$a$K\e(B
+
+(1) "vfont"\e$B!"\e(B"xfont"\e$B!"\e(B"tfont"\e$B$rK\J8Cf$GD>@\;H$&$N$OHr$1$^$7$g$&!#@k8@\e(B
+\e$BNN0h$G\e(B"deffont"\e$B$7$F!"K\J8Cf$G$O\e(B"font"\e$B$r;H$$$^$7$g$&!#$3$&$9$k$H!"\e(B
+MagicPoint\e$B$N%U%)%s%HE83+%(%s%8%s$K0MB8$7$J$$\e(B .mgp \e$B%U%!%$%k$r:n@.$G$-$^\e(B
+\e$B$9!#\e(B
+
+(2) \e$B%Y%/%H%k2hA|$K$O6KNO\e(B EPS \e$B%U%!%$%k$r;H$$$^$7$g$&!#\e(B
+
+(3) \e$B%0%l%$%9%1!<%k2hA|$r=PNO$G$-$k\e(B ghostscript \e$B$r%$%s%9%H!<%k$7$^$7$g\e(B
+\e$B$&!#\e(B
+
+(4) \e$BK\HV$N%W%l%<%sA0$K!"0lEYK\HV$HF1$8@_Dj$G%W%l%<%s$rI=<($7$F$*$/$H!"\e(B
+EPS \e$B%U%!%$%k$,E83+$5$l$F%-%c%C%7%e$5$l$^$9$N$GK\HV$G$N2hA|I=<($,B.$/$J\e(B
+\e$B$j$^$9!#\e(BMagicPoint \e$B$K\e(B -F \e$B$r;XDj$9$k$H!"<!$N%Z!<%8$r@hFI$_$7$^$9$N$G!"\e(B
+\e$BI=<($,B.$/$J$j$^$9!#\e(B
+
+(5) VGA\e$B%W%m%8%'%/%?$H$N@\B3$r$A$c$s$H3N$+$a$^$7$g$&!#$^$?!"Aa$a$K$&$^\e(B
+\e$B$/7Q$k$+3NG'$7$F$*$-$^$7$g$&!#\e(B
+
+(6) \e$B$A$c$s$HH/I=N}=,$7$^$7$g$&\e(B :-)
 
 
                                 \e$B?t<0\e(B
 
-.mgp \e$B%U%!%$%k$K?t<0$rKd$a9~$`$K$O>/$J$/$H$b\e(B 3 \e$B$D$NJ}K!$,$"$j$^$9!#\e(B
+.mgp \e$B%U%!%$%k$K?t<0$rKd$a9~$`J}K!$K$OBg$-$/J,$1$F!"\e(B
+       1) \e$B;vA0$K$J$s$i$+$NJ}K!$G?^7A%U%!%$%k$KJQ49$7$F$*$/\e(B
+       2) \e$B%U%#%k%?%3%^%s%I$rMxMQ$7$F!"F0E*$K:n@.$9$k\e(B
+\e$B$N\e(B2\e$B$D$,$"$j$^$9!#\e(B
 
-(1) TeX
-- TeX \e$B$G?t<0$r=q$$$F\e(B .dvi \e$B%U%!%$%k$r@8@.$7$^$9!#\e(B
-- dvipr \e$B$r;H$C$F!"\e(B.dvi \e$B%U%!%$%k$r\e(B .eps \e$B%U%!%$%k$KJQ49$7$^$9!#\e(B
-- .eps \e$B%U%!%$%k$r0J2<$N$h$&$KFI$_9~$_$^$9!#\e(B
+[\e$B@EE*$JJ}K!\e(B]
+  (1) TeX
+  - TeX \e$B$G?t<0$r=q$$$F\e(B .dvi \e$B%U%!%$%k$r@8@.$7$^$9!#\e(B
+  - dvips \e$B$r;H$C$F!"\e(B.dvi \e$B%U%!%$%k$r\e(B .eps \e$B%U%!%$%k$KJQ49$7$^$9!#\e(B
+  - .eps \e$B%U%!%$%k$r0J2<$N$h$&$KFI$_9~$_$^$9!#\e(B
 
        %image "foo.eps"
 
-(2) eqn/troff
-- eqn/troff \e$B$G?t<0$r=q$$$F\e(B .ps \e$B%U%!%$%k$rF@$^$9!#\e(B
-- .ps \e$B%U%!%$%k$r\e(B .eps \e$B%U%!%$%k$KJQ49$7$^$9!#\e(B(e.g. pstoepsi)
-- .eps \e$B%U%!%$%k$r0J2<$N$h$&$KFI$_9~$_$^$9!#\e(B
+  (2) eqn/troff
+  - eqn/troff \e$B$G?t<0$r=q$$$F\e(B .ps \e$B%U%!%$%k$rF@$^$9!#\e(B
+  - .ps \e$B%U%!%$%k$r\e(B .eps \e$B%U%!%$%k$KJQ49$7$^$9!#\e(B(e.g. pstoepsi)
+  - .eps \e$B%U%!%$%k$r0J2<$N$h$&$KFI$_9~$_$^$9!#\e(B
 
        %image "foo.eps"
 
-(3) \e$B%S%C%H%^%C%W\e(B (\e$B$*4+$a$G$-$^$;$s\e(B)
-- TeX \e$B$+\e(B eqn/troff \e$B$r;H$C$F?t<0$r=q$-!"\e(B.ps \e$B%U%!%$%k$rF@$^$9!#\e(B
-- .ps \e$B%U%!%$%k$r\e(B .pnm \e$B%U%!%$%k$KJQ49$7$^$9!#\e(B(e.g. pstopnm)
-- .pnm \e$B%U%!%$%k$r\e(B .pbm \e$B%U%!%$%k$KJQ49$7$^$9!#\e(B(e.g. pnmcrop)
-- .pbm \e$B%U%!%$%k$r0J2<$N$h$&$KFI$_9~$_$^$9!#\e(B
+  (3) \e$B%S%C%H%^%C%W\e(B (\e$B$*4+$a$G$-$^$;$s\e(B)
+  - TeX \e$B$+\e(B eqn/troff \e$B$r;H$C$F?t<0$r=q$-!"\e(B.ps \e$B%U%!%$%k$rF@$^$9!#\e(B
+  - .ps \e$B%U%!%$%k$r\e(B .pnm \e$B%U%!%$%k$KJQ49$7$^$9!#\e(B(e.g. pstopnm)
+  - .pnm \e$B%U%!%$%k$r\e(B .pbm \e$B%U%!%$%k$KJQ49$7$^$9!#\e(B(e.g. pnmcrop)
+  - .pbm \e$B%U%!%$%k$r0J2<$N$h$&$KFI$_9~$_$^$9!#\e(B
 
        %image "foo.pbm"
 
 
+[\e$BF0E*$JJ}K!\e(B]
+  (1) TeX
+  - mgp\e$B%U%!%$%kCf$K\e(BTeX\e$B7A<0$G=q$$$??t<0$rKd$a9~$a$^$9\e(B
+  - \e$B?t<0$r\e(B
+       %filter "tex2eps.sh eqn1"
+       My \TeX\ is nicer with $Magic$ Point  <=\e$B$3$3$K\e(BTeX\e$B7A<0$G=q$/\e(B
+       %endfilter
+       %image "eqn1.eps" 250x200
+    \e$B$N$h$&$J7A$G5-=R$7$^$9!#\e(B
+
+  (\e$BCm0U\e(B)  tex2eps\e$B%3%^%s%I$,<B9T$G$-$k$h$&$K$J$C$F$$$kI,MW$,$"$j$^$9!#\e(B
+         magicpoint\e$BG[I[%-%C%H$N\e(Bcontrib\e$B$K$"$k\e(Btex2eps.sh\e$B$r%Q%9$,DL$k\e(B
+         \e$B>l=j$K<B9T%S%C%H$r$?$F$FCV$$$F$/$@$5$$!#\e(B
+
+         \e$B$=$l$K2C$($F!"\e(Btex\e$B$*$h$S\e(Bdvips\e$B%3%^%s%I$,I,MW$G$9!#\e(B
+
+  (2) eqn/troff
+  - mgp\e$B%U%!%$%kCf$K\e(Beqn\e$B7A<0$G=q$$$??t<0$rKd$a9~$a$^$9\e(B
+  - \e$B?t<0$r\e(B
+       %filter "eqn2eps.sh eqn1"
+       1 over sqrt {ax sup 2+bx+c}     <=\e$B$3$3$K\e(Beqn\e$B7A<0$G=q$/\e(B
+       %endfilter
+       %center, image "eqn1.eps" 0 400 400 1
+    \e$B$N$h$&$J7A$G5-=R$7$^$9!#\e(B
+
+   (\e$BCm0U\e(B)  eqn2eps\e$B%3%^%s%I$,<B9T$G$-$k$h$&$K$J$C$F$$$kI,MW$,$"$j$^$9!#\e(B
+          magicpoint\e$BG[I[%-%C%H$N\e(Bcontrib\e$B$K$"$k\e(Btex2eps.sh\e$B$r%Q%9$,DL$k\e(B
+          \e$B>l=j$K<B9T%S%C%H$r$?$F$FCV$$$F$/$@$5$$!#\e(B
+
+         \e$B$=$l$K2C$($F!"\e(Bgroff\e$B$*$h$S\e(Bghostscript/ps2epsi\e$B%3%^%s%I$,I,\e(B
+         \e$BMW$G$9!#\e(B
+
+
+                  \e$B%W%l%<%s%U%!%$%k$r\e(B Web \e$B$KE=$m$&\e(B
+
+MagicPoint \e$B$N%W%l%<%s%F!<%7%g%s%U%!%$%k$r\e(B Web \e$B$KE=$k>l9g!"\e(B3\e$B$D$NJ}K!$,\e(B
+\e$B$"$j$^$9!#\e(B
+
+(1) \e$B%/%i%$%"%s%HB&$K\e(B MagicPoint \e$B$,$"$k$H2>Dj$G$-$k>l9g$K$O!"\e(Bmgpembed 
+\e$B$G:n@.$7$?%U%!%$%k$r$=$N$^$^\e(B Web \e$B%5!<%P$GDs6!$9$l$P\e(B OK \e$B$G$9!#\e(B
 
-                       \e$B%W%l%<%s%U%!%$%k$r\e(Bweb\e$B$KE=$m$&\e(B
+(1.1) mgpembed \e$B%3%^%s%I$r;H$C$F!"2hA|%U%!%$%k$r\e(B .mgp \e$B%U%!%$%kCf$KKd$a\e(B
+\e$B9~$_$^$9!#7k2L$H$7$FC10l$N%U%!%$%k$,$G$-$"$,$j$^$9!#\e(B
 
-magicpoint\e$B$N%W%l%<%s%F!<%7%g%s%U%!%$%k$r\e(Bweb\e$B$KE=$k>l9g!"\e(B3\e$B$D$NJ}K!$,$"$j$^$9!#\e(B
+(1.2) \e$B$G$-$"$,$C$?%U%!%$%k$N3HD%;R$r\e(B .mgp \e$B$K$7$F\e(B Web \e$B%5!<%P$KCV$-$^$9!#\e(B
 
-\e$B%/%i%$%"%s%HB&$K\e(Bmagicpoint\e$B$,$"$k$H2>Dj$G$-$k>l9g$K$O!"\e(Bmgpembed\e$B$G=hM}$7$?\e(B
-\e$B%W%l%<%s%U%!%$%k$r$=$N$^$^\e(Bweb\e$B%5!<%P$GDs6!$9$l$P\e(Bok\e$B$G$9!#\e(B
-       1. mgpembed\e$B%3%^%s%I$r;H$C$F!"2hA|%U%!%$%k$r%W%l%<%s%U%!%$%kCf$K\e(B
-          \e$BKd$a9~$_$^$9!#7k2L$H$7$FC10l$N%W%l%<%s%U%!%$%k$,$G$-$"$,$j$^$9!#\e(B
-       2. \e$B$G$-$"$,$C$?%U%!%$%k$r\e(B"foo.mgp"\e$B$J$I$H$7$F\e(Bweb\e$B%5!<%P$KCV$-$^$9!#\e(B
-\e$B%/%i%$%"%s%HB&$O!"\e(B".mgp"\e$B$H$$$&3HD%;R$N%U%!%$%kL>$KBP$9$k\e(Bhelper application
-\e$B$H$7$F!"\e(B
+\e$B%/%i%$%"%s%HB&$O!"\e(B".mgp" \e$B$H$$$&3HD%;R$KBP$9$k30It%"%W%j%1!<%7%g%s$H$7\e(B
+\e$B$F!"\e(B
        mgp -g 400x300 -S <filename>
-\e$B$r;XDj$7$^$9\e(B(\e$B2hLL%5%$%:$O$J$s$G$b$+$^$$$^$;$s\e(B)\e$B!#\e(B-S\e$B$r$D$1$k$N$O%;%-%e%j%F%#>e\e(B
-\e$BHs>o$K=EMW$G$9!#\e(Bmagicpoint\e$B$N%W%l%<%s%U%!%$%k$OG$0U$N\e(Bshell\e$B%3%^%s%I$r4^$`\e(B
-\e$B$3$H$,$G$-$^$9$N$G!"0-0U$N%W%l%<%s%U%!%$%k$r$&$+$D$K<B9T$9$k$H:$$C$?$3$H$K\e(B
-\e$B$J$j$^$9!#\e(B-S\e$B$r;H$&$H\e(Bshell\e$B%3%^%s%I$N<B9T$rM^;_$G$-$^$9!#\e(B
-".mgp"\e$B$K\e(BContent-type\e$B$rDj5A$9$k>l9g!"\e(B"application/x-magicpoint"\e$B$r;H$C$F\e(B
-\e$B$/$@$5$$!#\e(B"text/plain"\e$B$G$b$$$$$H$O;W$$$^$9$,!#\e(B
-
-\e$BG$0U$N%/%i%$%"%s%H$G8+$?$$>l9g!"%W%l%<%s%F!<%7%g%s$r\e(Bhtml\e$B$KJQ49$9$k$3$H$K\e(B
-\e$B$J$j$^$9!#$3$N$?$a$K$O\e(Bmgp -D\e$B$r;H$$$^$9!#\e(B
-
-\e$B%W%l%<%s%U%!%$%k$r\e(Bpostscript\e$B%U%!%$%k$KJQ49$7$F$+$iE=$k$N$b$$$$$+$b$7$l$^$;$s!#\e(B
-\e$B$3$N>l9g\e(Bmgp2ps\e$B$G=hM}$7$F$+$i\e(Bweb\e$B%5!<%P$KCV$/$3$H$K$J$j$^$9!#$3$&$9$k$H!"\e(B
-\e$BB>?M$K%W%l%<%s%U%!%$%k$r:FMxMQ$5$l$k$N$rKI$2$^$9\e(B(\e$B>/$7Fq$7$/$J$k$@$1$G$9$,\e(B)\e$B!#\e(B
+\e$B$r;XDj$7$^$9\e(B(\e$B2hLL%5%$%:$O$J$s$G$b$+$^$$$^$;$s\e(B)\e$B!#\e(B-S\e$B$r$D$1$k$N$O%;%-%e%j\e(B
+\e$B%F%#>e=EMW$G$9!#\e(BMagicPoint\e$B$N%W%l%<%s%U%!%$%k$OG$0U$N%7%'%k!&%3%^%s%I$r\e(B
+\e$B4^$`$3$H$,$G$-$^$9$N$G!"0-0U$N%W%l%<%s%U%!%$%k$r$&$+$D$K<B9T$9$k$H:$$C\e(B
+\e$B$?$3$H$K$J$j$^$9!#\e(B-S \e$B$r;H$&$H%7%'%k!&%3%^%s%I$N<B9T$rM^;_$G$-$^$9!#\e(B
+".mgp"\e$B$K\e(B Content-type \e$B$rDj5A$9$k>l9g!"\e(B "Application/X-MagicPoint" \e$B$r;H$C\e(B
+\e$B$F$/$@$5$$!#\e(B
+
+(2) \e$BG$0U$N%/%i%$%"%s%H$G8+$?$$>l9g!"3F2hLL$N%@%s%W$r\e(B GIF \e$B$KMn$7!"$=$l\e(B
+\e$B$>$l$N\e(B GIF \e$B%U%!%$%k$r\e(B HTML \e$B$+$i\e(B "IMG" \e$B$G;2>H$7$^$9!#\e(BMagicPoint \e$B$O$3$N\e(B
+\e$B$h$&$J%F%s%W%l!<%H$r4JC1$K:n@.$7$F$/$l$^$9!#\e(Bmgp -D \e$B$rMxMQ$7$F2<$5$$!#\e(B
+
+(3) \e$B%W%l%<%s%U%!%$%k$r\e(B PS \e$B%U%!%$%k$KJQ49$7$F$+$iE=$k$N$b$$$$$+$b$7$l$^\e(B
+\e$B$;$s!#$3$N>l9g\e(B mgp2ps \e$B$G:n@.$7$?\e(B PS \e$B%U%!%$%k$r\e(B Web \e$B%5!<%P$KCV$/$3$H$K\e(B
+\e$B$J$j$^$9!#\e(B
+
+\e$B$*$7$^$$\e(B
index ca48404..f865f7c 100644 (file)
@@ -26,7 +26,7 @@
  * SUCH DAMAGE.
  */
 /*
- * $Id: background.c,v 1.10 1998/09/04 21:05:07 itojun Exp $
+ * $Id: background.c,v 1.12 1998/12/28 08:22:22 itojun Exp $
  */
 
 #include <math.h>
@@ -37,7 +37,7 @@
 #define G_PI2  1.5707963267948966192
 
 static void draw_gradation0 __P((int, int, int, int, int, int,
-       byte *, byte *, int, int, byte));
+       byte *, byte *, int, int, u_int));
 static void g_rotate __P((byte *, struct ctrl_grad *, int, int));
 
 /*
@@ -53,7 +53,7 @@ draw_gradation0(x1, x2, y1, y2, z1, z2, p1, p2, dpy, dpz, mask)
        int z1, z2;
        byte *p1, *p2;
        int dpy, dpz;   /* delta of p in x/y's direction */
-       byte mask;
+       u_int mask;
 {
        int s, step;
        int dx, dy;
@@ -120,16 +120,14 @@ draw_gradation(width, height, cg)
 {
        int bmask[8] = { 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff };
        byte *pic;
-       u_int bits = 8;
+       const u_int bits = 8;
        int i, j;
-       int x1, x2;
-       int y1, y2, dpy;
-       int z1, z2, dpz;
-       byte *p1, *p2;
+       int x1 = 0, x2 = 0;
+       int y1 = 0, y2 = 0, dpy = 0;
+       int z1 = 0, z2 = 0, dpz = 0;
+       byte *p1 = NULL, *p2 = NULL;
        byte mask;
 
-       bits = 8;
-
        pic = (byte *)malloc(width * height * 3 * sizeof(byte));
        if (!pic) {
                fprintf(stderr,"couldn't alloc space for gradation image\n");
@@ -275,12 +273,12 @@ g_rotate(pic, cg, width, height)
     td1 = cx - cx*dcost;
     td2 = cy + 0.5*cx*sin2t;
 
-    for (y=0; y < height; y++) {
+    for (y = 0; y < height; y++) {
        pp = pic + (y * width * 3);
        dy = (cy-y)*0.5*sin2t + td1;
        ey = (y-cy)*dsint + td2;
 
-       for (x=0; x < width; x++) {
+       for (x = 0; x < width; x++) {
            d = lcdist(x, y, cx, cy, rot, mode, dy, ey);
            rat = (d - mind) / del;
 
@@ -402,7 +400,7 @@ make_XImage(pic, width, height)
 #if USE_COLOR_DEPTH
 #define PM_SCALE(a, b, c) (long)((a) * (c))/(b)
     /* color depth (future use) */
-    maxval=0xff;
+    maxval = 0xff;
 
     destptr= image->data;
     for (y= 0; y < size; y++) {
diff --git a/config.guess b/config.guess
new file mode 100755 (executable)
index 0000000..4c314d9
--- /dev/null
@@ -0,0 +1,571 @@
+#! /bin/sh
+# Attempt to guess a canonical system name.
+#   Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+#
+# This file is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Written by Per Bothner <bothner@cygnus.com>.
+# The master version of this file is at the FSF in /home/gd/gnu/lib.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub.  If it succeeds, it prints the system name on stdout, and
+# exits with 0.  Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit system type (host/target name).
+#
+# Only a few systems have been added to this list; please add others
+# (but try to keep the structure clean).
+#
+
+# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
+# (ghazi@noc.rutgers.edu 8/24/94.)
+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
+       PATH=$PATH:/.attbin ; export PATH
+fi
+
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+
+trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
+
+# Note: order is significant - the case branches are not exclusive.
+
+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+    alpha:OSF1:V*:*)
+       # After 1.2, OSF1 uses "V1.3" for uname -r.
+       echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^V//'`
+       exit 0 ;;
+    alpha:OSF1:*:*)
+       # 1.2 uses "1.2" for uname -r.
+       echo alpha-dec-osf${UNAME_RELEASE}
+        exit 0 ;;
+    21064:Windows_NT:50:3)
+       echo alpha-dec-winnt3.5
+       exit 0 ;;
+    amiga:NetBSD:*:*)
+      echo m68k-cbm-netbsd${UNAME_RELEASE}
+      exit 0 ;;
+    arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+       echo arm-acorn-riscix${UNAME_RELEASE}
+       exit 0;;
+    Pyramid*:OSx*:*:*)
+       if test "`(/bin/universe) 2>/dev/null`" = att ; then
+               echo pyramid-pyramid-sysv3
+       else
+               echo pyramid-pyramid-bsd
+       fi
+       exit 0 ;;
+    sun4*:SunOS:5.*:*)
+       echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    i86pc:SunOS:5.*:*)
+       echo i386-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:6*:*)
+       # According to config.sub, this is the proper way to canonicalize
+       # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
+       # it's likely to be more like Solaris than SunOS4.
+       echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+       exit 0 ;;
+    sun4*:SunOS:*:*)
+       case "`/usr/bin/arch -k`" in
+           Series*|S4*)
+               UNAME_RELEASE=`uname -v`
+               ;;
+       esac
+       # Japanese Language versions have a version number like `4.1.3-JL'.
+       echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+       exit 0 ;;
+    sun3*:SunOS:*:*)
+       echo m68k-sun-sunos${UNAME_RELEASE}
+       exit 0 ;;
+    atari*:NetBSD:*:*)
+       echo m68k-atari-netbsd${UNAME_RELEASE}
+       exit 0 ;;
+    sun3*:NetBSD:*:*)
+       echo m68k-sun-netbsd${UNAME_RELEASE}
+       exit 0 ;;
+    mac68k:NetBSD:*:*)
+       echo m68k-apple-netbsd${UNAME_RELEASE}
+       exit 0 ;;
+    RISC*:ULTRIX:*:*)
+       echo mips-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    VAX*:ULTRIX*:*:*)
+       echo vax-dec-ultrix${UNAME_RELEASE}
+       exit 0 ;;
+    mips:*:4*:UMIPS)
+       echo mips-mips-riscos4sysv
+       exit 0 ;;
+    mips:*:5*:RISCos)
+       echo mips-mips-riscos${UNAME_RELEASE}
+       exit 0 ;;
+    m88k:CX/UX:7*:*)
+       echo m88k-harris-cxux7
+       exit 0 ;;
+    m88k:*:4*:R4*)
+       echo m88k-motorola-sysv4
+       exit 0 ;;
+    m88k:*:3*:R3*)
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    AViiON:dgux:*:*)
+       if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
+            -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+               echo m88k-dg-dgux${UNAME_RELEASE}
+       else
+               echo m88k-dg-dguxbcs${UNAME_RELEASE}
+       fi
+       exit 0 ;;
+    M88*:DolphinOS:*:*)        # DolphinOS (SVR3)
+       echo m88k-dolphin-sysv3
+       exit 0 ;;
+    M88*:*:R3*:*)
+       # Delta 88k system running SVR3
+       echo m88k-motorola-sysv3
+       exit 0 ;;
+    XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
+       echo m88k-tektronix-sysv3
+       exit 0 ;;
+    Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
+       echo m68k-tektronix-bsd
+       exit 0 ;;
+    *:IRIX*:*:*)
+       echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
+       exit 0 ;;
+   ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
+       echo romp-ibm-aix      # uname -m gives an 8 hex-code CPU id
+       exit 0 ;;              # Note that: echo "'`uname -s`'" gives 'AIX '
+    i?86:AIX:*:*)
+       echo i386-ibm-aix
+       exit 0 ;;
+    *:AIX:2:3)
+       if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
+               sed 's/^                //' << EOF >dummy.c
+               #include <sys/systemcfg.h>
+
+               main()
+                       {
+                       if (!__power_pc())
+                               exit(1);
+                       puts("powerpc-ibm-aix3.2.5");
+                       exit(0);
+                       }
+EOF
+               ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
+               rm -f dummy.c dummy
+               echo rs6000-ibm-aix3.2.5
+       elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
+               echo rs6000-ibm-aix3.2.4
+       else
+               echo rs6000-ibm-aix3.2
+       fi
+       exit 0 ;;
+    *:AIX:*:4)
+       if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
+               IBM_ARCH=rs6000
+       else
+               IBM_ARCH=powerpc
+       fi
+       if [ -x /usr/bin/oslevel ] ; then
+               IBM_REV=`/usr/bin/oslevel`
+       else
+               IBM_REV=4.${UNAME_RELEASE}
+       fi
+       echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+       exit 0 ;;
+    *:AIX:*:*)
+       echo rs6000-ibm-aix
+       exit 0 ;;
+    ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+       echo romp-ibm-bsd4.4
+       exit 0 ;;
+    ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC NetBSD and
+       echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to 
+       exit 0 ;;                           # report: romp-ibm BSD 4.3
+    *:BOSX:*:*)
+       echo rs6000-bull-bosx
+       exit 0 ;;
+    DPX/2?00:B.O.S.:*:*)
+       echo m68k-bull-sysv3
+       exit 0 ;;
+    9000/[34]??:4.3bsd:1.*:*)
+       echo m68k-hp-bsd
+       exit 0 ;;
+    hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+       echo m68k-hp-bsd4.4
+       exit 0 ;;
+    9000/[3478]??:HP-UX:*:*)
+       case "${UNAME_MACHINE}" in
+           9000/31? )            HP_ARCH=m68000 ;;
+           9000/[34]?? )         HP_ARCH=m68k ;;
+           9000/7?? | 9000/8?[79] ) HP_ARCH=hppa1.1 ;;
+           9000/8?? )            HP_ARCH=hppa1.0 ;;
+       esac
+       HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+       echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+       exit 0 ;;
+    3050*:HI-UX:*:*)
+       sed 's/^        //' << EOF >dummy.c
+       #include <unistd.h>
+       int
+       main ()
+       {
+         long cpu = sysconf (_SC_CPU_VERSION);
+         /* The order matters, because CPU_IS_HP_MC68K erroneously returns
+            true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
+            results, however.  */
+         if (CPU_IS_PA_RISC (cpu))
+           {
+             switch (cpu)
+               {
+                 case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
+                 case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
+                 default: puts ("hppa-hitachi-hiuxwe2"); break;
+               }
+           }
+         else if (CPU_IS_HP_MC68K (cpu))
+           puts ("m68k-hitachi-hiuxwe2");
+         else puts ("unknown-hitachi-hiuxwe2");
+         exit (0);
+       }
+EOF
+       ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
+       rm -f dummy.c dummy
+       echo unknown-hitachi-hiuxwe2
+       exit 0 ;;
+    9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
+       echo hppa1.1-hp-bsd
+       exit 0 ;;
+    9000/8??:4.3bsd:*:*)
+       echo hppa1.0-hp-bsd
+       exit 0 ;;
+    hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
+       echo hppa1.1-hp-osf
+       exit 0 ;;
+    hp8??:OSF1:*:*)
+       echo hppa1.0-hp-osf
+       exit 0 ;;
+    parisc*:Lites*:*:*)
+       echo hppa1.1-hp-lites
+       exit 0 ;;
+    C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
+       echo c1-convex-bsd
+        exit 0 ;;
+    C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+        exit 0 ;;
+    C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
+       echo c34-convex-bsd
+        exit 0 ;;
+    C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
+       echo c38-convex-bsd
+        exit 0 ;;
+    C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
+       echo c4-convex-bsd
+        exit 0 ;;
+    CRAY*X-MP:*:*:*)
+       echo xmp-cray-unicos
+        exit 0 ;;
+    CRAY*Y-MP:*:*:*)
+       echo ymp-cray-unicos${UNAME_RELEASE}
+       exit 0 ;;
+    CRAY*C90:*:*:*)
+       echo c90-cray-unicos${UNAME_RELEASE}
+       exit 0 ;;
+    CRAY-2:*:*:*)
+       echo cray2-cray-unicos
+        exit 0 ;;
+    hp3[0-9][05]:NetBSD:*:*)
+       echo m68k-hp-netbsd${UNAME_RELEASE}
+       exit 0 ;;
+    i?86:BSD/386:*:* | *:BSD/OS:*:*)
+       echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
+       exit 0 ;;
+    *:FreeBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+       exit 0 ;;
+    *:NetBSD:*:*)
+       echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+       exit 0 ;;
+    *:GNU:*:*)
+       echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+       exit 0 ;;
+    *:Linux:*:*)
+       # The BFD linker knows what the default object file format is, so
+       # first see if it will tell us.
+       ld_help_string=`ld --help 2>&1`
+       if echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: elf_i?86"; then
+         echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
+       elif echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: i?86linux"; then
+         echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0
+       elif echo $ld_help_string | grep >/dev/null 2>&1 "supported emulations: i?86coff"; then
+         echo "${UNAME_MACHINE}-unknown-linuxcoff" ; exit 0
+       elif test "${UNAME_MACHINE}" = "alpha" ; then
+         echo alpha-unknown-linux ; exit 0
+       else
+         # Either a pre-BFD a.out linker (linuxoldld) or one that does not give us
+         # useful --help.  Gcc wants to distinguish between linuxoldld and linuxaout.
+         test ! -d /usr/lib/ldscripts/. \
+           && echo "${UNAME_MACHINE}-unknown-linuxoldld" && exit 0
+         # Determine whether the default compiler is a.out or elf
+         cat >dummy.c <<EOF
+main(argc, argv)
+int argc;
+char *argv[];
+{
+#ifdef __ELF__
+  printf ("%s-unknown-linux\n", argv[1]);
+#else
+  printf ("%s-unknown-linuxaout\n", argv[1]);
+#endif
+  return 0;
+}
+EOF
+         ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
+         rm -f dummy.c dummy
+       fi ;;
+# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.  earlier versions
+# are messed up and put the nodename in both sysname and nodename.
+    i?86:DYNIX/ptx:4*:*)
+       echo i386-sequent-sysv4
+       exit 0 ;;
+    i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
+       if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+               echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
+       else
+               echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}
+       fi
+       exit 0 ;;
+    i?86:*:3.2:*)
+       if test -f /usr/options/cb.name; then
+               UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+               echo ${UNAME_MACHINE}-unknown-isc$UNAME_REL
+       elif /bin/uname -X 2>/dev/null >/dev/null ; then
+               UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
+               (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
+               echo ${UNAME_MACHINE}-unknown-sco$UNAME_REL
+       else
+               echo ${UNAME_MACHINE}-unknown-sysv32
+       fi
+       exit 0 ;;
+    Intel:Mach:3*:*)
+       echo i386-unknown-mach3
+       exit 0 ;;
+    paragon:*:*:*)
+       echo i860-intel-osf1
+       exit 0 ;;
+    i860:*:4.*:*) # i860-SVR4
+       if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+         echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+       else # Add other i860-SVR4 vendors below as they are discovered.
+         echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
+       fi
+       exit 0 ;;
+    mini*:CTIX:SYS*5:*)
+       # "miniframe"
+       echo m68010-convergent-sysv
+       exit 0 ;;
+    M680?0:*:R3V[567]*:*)
+       test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
+    3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0)
+        uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4.3 && exit 0 ;;
+    3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+        uname -p 2>/dev/null | grep 86 >/dev/null \
+          && echo i486-ncr-sysv4 && exit 0 ;;
+    m68*:LynxOS:2.*:*)
+       echo m68k-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    mc68*:UNIX_System_V:4.*:*)
+       echo m68k-atari-sysv4
+       exit 0 ;;
+    i?86:LynxOS:2.*:*)
+       echo i386-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    TSUNAMI:LynxOS:2.*:* | uSPARC2:LynxOS:2.*:*)
+       echo sparc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    PowerPC:LynxOS:2.*:*)
+       echo powerpc-unknown-lynxos${UNAME_RELEASE}
+       exit 0 ;;
+    RM*:SINIX-*:*:*)
+       echo mips-sni-sysv4
+       exit 0 ;;
+    *FTX*)
+       echo i860-stratus-sysv4
+       exit 0 ;;
+    *:SINIX-*:*:*)
+       if uname -p 2>/dev/null >/dev/null ; then
+               UNAME_MACHINE=`(uname -p) 2>/dev/null`
+               echo ${UNAME_MACHINE}-sni-sysv4
+       else
+               echo ns32k-sni-sysv
+       fi
+       exit 0 ;;
+    mc68*:A/UX:*:*)
+       echo m68k-apple-aux${UNAME_RELEASE}
+       exit 0 ;;
+esac
+
+#echo '(No uname command or uname output not recognized.)' 1>&2
+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
+
+cat >dummy.c <<EOF
+#ifdef _SEQUENT_
+# include <sys/types.h>
+# include <sys/utsname.h>
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
+     I don't know....  */
+  printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+  printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+          "4"
+#else
+         ""
+#endif
+         ); exit (0);
+#endif
+#endif
+
+#if defined (__arm) && defined (__acorn) && defined (__unix)
+  printf ("arm-acorn-riscix"); exit (0);
+#endif
+
+#if defined (hp300) && !defined (hpux)
+  printf ("m68k-hp-bsd\n"); exit (0);
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+  int version;
+  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
+  printf ("%s-next-nextstep%s\n", __ARCHITECTURE__,  version==2 ? "2" : "3");
+  exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+  printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+  printf ("ns32k-encore-mach\n"); exit (0);
+#else
+  printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+  printf ("i386-unknown-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+  printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+  printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+    struct utsname un;
+
+    uname(&un);
+
+    if (strncmp(un.version, "V2", 2) == 0) {
+       printf ("i386-sequent-ptx2\n"); exit (0);
+    }
+    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+       printf ("i386-sequent-ptx1\n"); exit (0);
+    }
+    printf ("i386-sequent-ptx\n"); exit (0);
+
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+  printf ("vax-dec-bsd\n"); exit (0);
+#else
+  printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+  printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+  exit (1);
+}
+EOF
+
+${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
+rm -f dummy.c dummy
+
+# Apollos put the system type in the environment.
+
+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
+
+# Convex versions that predate uname can use getsysinfo(1)
+
+if [ -x /usr/convex/getsysinfo ]
+then
+    case `getsysinfo -f cpu_type` in
+    c1*)
+       echo c1-convex-bsd
+       exit 0 ;;
+    c2*)
+       if getsysinfo -f scalar_acc
+       then echo c32-convex-bsd
+       else echo c2-convex-bsd
+       fi
+       exit 0 ;;
+    c34*)
+       echo c34-convex-bsd
+       exit 0 ;;
+    c38*)
+       echo c38-convex-bsd
+       exit 0 ;;
+    c4*)
+       echo c4-convex-bsd
+       exit 0 ;;
+    esac
+fi
+
+#echo '(Unable to guess system type)' 1>&2
+
+exit 1
diff --git a/config.sub b/config.sub
new file mode 100755 (executable)
index 0000000..43f0867
--- /dev/null
@@ -0,0 +1,872 @@
+#! /bin/sh
+# Configuration validation subroutine script, version 1.1.
+#   Copyright (C) 1991, 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
+# This file is (in principle) common to ALL GNU software.
+# The presence of a machine in this file suggests that SOME GNU software
+# can handle that machine.  It does not imply ALL GNU software can. 
+#
+# This file is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support.  The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+#      CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+if [ x$1 = x ]
+then
+       echo Configuration name missing. 1>&2
+       echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
+       echo "or     $0 ALIAS" 1>&2
+       echo where ALIAS is a recognized configuration type. 1>&2
+       exit 1
+fi
+
+# First pass through any local machine types.
+case $1 in
+       *local*)
+               echo $1
+               exit 0
+               ;;
+       *)
+       ;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS (if any).
+basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+if [ $basic_machine != $1 ]
+then os=`echo $1 | sed 's/.*-/-/'`
+else os=; fi
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work.  We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+       -sun*os*)
+               # Prevent following clause from handling this invalid input.
+               ;;
+       -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+       -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+       -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+       -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+       -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+       -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp )
+               os=
+               basic_machine=$1
+               ;;
+       -hiux*)
+               os=-hiuxwe2
+               ;;
+       -sco4)
+               os=-sco3.2v4
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
+               ;;
+       -sco3.2.[4-9]*)
+               os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
+               ;;
+       -sco3.2v[4-9]*)
+               # Don't forget version if it is 3.2v4 or newer.
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
+               ;;
+       -sco*)
+               os=-sco3.2v2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
+               ;;
+       -isc)
+               os=-isc2.2
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
+               ;;
+       -clix*)
+               basic_machine=clipper-intergraph
+               ;;
+       -isc*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-unknown/'`
+               ;;
+       -lynx*)
+               os=-lynxos
+               ;;
+       -ptx*)
+               basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+               ;;
+       -windowsnt*)
+               os=`echo $os | sed -e 's/windowsnt/winnt/'`
+               ;;
+esac
+
+# Decode aliases for certain CPU-COMPANY combinations.
+case $basic_machine in
+       # Recognize the basic CPU types without company name.
+       # Some are omitted here because they have special meanings below.
+       tahoe | i[345]86 | i860 | m68k | m68000 | m88k | ns32k | arm \
+               | arme[lb] | pyramid \
+               | tron | a29k | 580 | i960 | h8300 | hppa1.0 | hppa1.1 \
+               | alpha | we32k | ns16k | clipper | sparclite | i370 | sh \
+               | powerpc | powerpcle | sparc64 | 1750a | dsp16xx | mips64 | mipsel \
+               | pdp11 | mips64el | mips64orion | mips64orionel \
+               | sparc)
+               basic_machine=$basic_machine-unknown
+               ;;
+       # Object if more than one company name word.
+       *-*-*)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+       # Recognize the basic CPU types with company name.
+       vax-* | tahoe-* | i[345]86-* | i860-* | m68k-* | m68000-* | m88k-* \
+             | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
+             | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
+             | none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
+             | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
+             | pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
+             | pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
+             | mips64el-* | mips64orion-* | mips64orionel-*)
+               ;;
+       # Recognize the various machine names and aliases which stand
+       # for a CPU type and a company and sometimes even an OS.
+       3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+               basic_machine=m68000-att
+               ;;
+       3b*)
+               basic_machine=we32k-att
+               ;;
+       alliant | fx80)
+               basic_machine=fx80-alliant
+               ;;
+       altos | altos3068)
+               basic_machine=m68k-altos
+               ;;
+       am29k)
+               basic_machine=a29k-none
+               os=-bsd
+               ;;
+       amdahl)
+               basic_machine=580-amdahl
+               os=-sysv
+               ;;
+       amiga | amiga-*)
+               basic_machine=m68k-cbm
+               ;;
+       amigados)
+               basic_machine=m68k-cbm
+               os=-amigados
+               ;;
+       amigaunix | amix)
+               basic_machine=m68k-cbm
+               os=-sysv4
+               ;;
+       apollo68)
+               basic_machine=m68k-apollo
+               os=-sysv
+               ;;
+       balance)
+               basic_machine=ns32k-sequent
+               os=-dynix
+               ;;
+       convex-c1)
+               basic_machine=c1-convex
+               os=-bsd
+               ;;
+       convex-c2)
+               basic_machine=c2-convex
+               os=-bsd
+               ;;
+       convex-c32)
+               basic_machine=c32-convex
+               os=-bsd
+               ;;
+       convex-c34)
+               basic_machine=c34-convex
+               os=-bsd
+               ;;
+       convex-c38)
+               basic_machine=c38-convex
+               os=-bsd
+               ;;
+       cray | ymp)
+               basic_machine=ymp-cray
+               os=-unicos
+               ;;
+       cray2)
+               basic_machine=cray2-cray
+               os=-unicos
+               ;;
+       crds | unos)
+               basic_machine=m68k-crds
+               ;;
+       da30 | da30-*)
+               basic_machine=m68k-da30
+               ;;
+       decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+               basic_machine=mips-dec
+               ;;
+       delta | 3300 | motorola-3300 | motorola-delta \
+             | 3300-motorola | delta-motorola)
+               basic_machine=m68k-motorola
+               ;;
+       delta88)
+               basic_machine=m88k-motorola
+               os=-sysv3
+               ;;
+       dpx20 | dpx20-*)
+               basic_machine=rs6000-bull
+               os=-bosx
+               ;;
+       dpx2* | dpx2*-bull)
+               basic_machine=m68k-bull
+               os=-sysv3
+               ;;
+       ebmon29k)
+               basic_machine=a29k-amd
+               os=-ebmon
+               ;;
+       elxsi)
+               basic_machine=elxsi-elxsi
+               os=-bsd
+               ;;
+       encore | umax | mmax)
+               basic_machine=ns32k-encore
+               ;;
+       fx2800)
+               basic_machine=i860-alliant
+               ;;
+       genix)
+               basic_machine=ns32k-ns
+               ;;
+       gmicro)
+               basic_machine=tron-gmicro
+               os=-sysv
+               ;;
+       h3050r* | hiux*)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       h8300hms)
+               basic_machine=h8300-hitachi
+               os=-hms
+               ;;
+       harris)
+               basic_machine=m88k-harris
+               os=-sysv3
+               ;;
+       hp300-*)
+               basic_machine=m68k-hp
+               ;;
+       hp300bsd)
+               basic_machine=m68k-hp
+               os=-bsd
+               ;;
+       hp300hpux)
+               basic_machine=m68k-hp
+               os=-hpux
+               ;;
+       hp9k2[0-9][0-9] | hp9k31[0-9])
+               basic_machine=m68000-hp
+               ;;
+       hp9k3[2-9][0-9])
+               basic_machine=m68k-hp
+               ;;
+       hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
+               basic_machine=hppa1.1-hp
+               ;;
+       hp9k8[0-9][0-9] | hp8[0-9][0-9])
+               basic_machine=hppa1.0-hp
+               ;;
+       i370-ibm* | ibm*)
+               basic_machine=i370-ibm
+               os=-mvs
+               ;;
+# I'm not sure what "Sysv32" means.  Should this be sysv3.2?
+       i[345]86v32)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
+               os=-sysv32
+               ;;
+       i[345]86v4*)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
+               os=-sysv4
+               ;;
+       i[345]86v)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
+               os=-sysv
+               ;;
+       i[345]86sol2)
+               basic_machine=`echo $1 | sed -e 's/86.*/86-unknown/'`
+               os=-solaris2
+               ;;
+       iris | iris4d)
+               basic_machine=mips-sgi
+               case $os in
+                   -irix*)
+                       ;;
+                   *)
+                       os=-irix4
+                       ;;
+               esac
+               ;;
+       isi68 | isi)
+               basic_machine=m68k-isi
+               os=-sysv
+               ;;
+       m88k-omron*)
+               basic_machine=m88k-omron
+               ;;
+       mac | macintosh)
+               basic_machine=m68k-apple
+               ;;
+       magnum | m3230)
+               basic_machine=mips-mips
+               os=-sysv
+               ;;
+       merlin)
+               basic_machine=ns32k-utek
+               os=-sysv
+               ;;
+       miniframe)
+               basic_machine=m68000-convergent
+               ;;
+       mips3*-*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
+               ;;
+       mips3*)
+               basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
+               ;;
+       ncr3000)
+               basic_machine=i486-ncr
+               os=-sysv4
+               ;;
+       news | news700 | news800 | news900)
+               basic_machine=m68k-sony
+               os=-newsos
+               ;;
+       news1000)
+               basic_machine=m68030-sony
+               os=-newsos
+               ;;
+       news-3600 | risc-news)
+               basic_machine=mips-sony
+               os=-newsos
+               ;;
+       next | m*-next )
+               basic_machine=m68k-next
+               case $os in
+                   -nextstep* )
+                       ;;
+                   -ns2*)
+                     os=-nextstep2
+                       ;;
+                   *)
+                     os=-nextstep3
+                       ;;
+               esac
+               ;;
+       nh3000)
+               basic_machine=m68k-harris
+               os=-cxux
+               ;;
+       nh[45]000)
+               basic_machine=m88k-harris
+               os=-cxux
+               ;;
+       nindy960)
+               basic_machine=i960-intel
+               os=-nindy
+               ;;
+       np1)
+               basic_machine=np1-gould
+               ;;
+       pa-hitachi)
+               basic_machine=hppa1.1-hitachi
+               os=-hiuxwe2
+               ;;
+       paragon)
+               basic_machine=i860-intel
+               os=-osf
+               ;;
+       pbd)
+               basic_machine=sparc-tti
+               ;;
+       pbb)
+               basic_machine=m68k-tti
+               ;;
+        pc532 | pc532-*)
+               basic_machine=ns32k-pc532
+               ;;
+       pentium | p5 | p6)
+               # We don't have specific support for the Intel Pentium (p6) followon yet, so just call it a Pentium
+               basic_machine=i586-intel
+               ;;
+       pentium-* | p5-* | p6-*)
+               # We don't have specific support for the Intel Pentium (p6) followon yet, so just call it a Pentium
+               basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       k5)
+               # We don't have specific support for AMD's K5 yet, so just call it a Pentium
+               basic_machine=i586-amd
+               ;;
+       nexen)
+               # We don't have specific support for Nexgen yet, so just call it a Pentium
+               basic_machine=i586-nexgen
+               ;;
+       pn)
+               basic_machine=pn-gould
+               ;;
+       power)  basic_machine=rs6000-ibm
+               ;;
+       ppc)    basic_machine=powerpc-unknown
+               ;;
+       ppc-*)  basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ppcle | powerpclittle | ppc-le | powerpc-little)
+               basic_machine=powerpcle-unknown
+               ;;
+       ppcle-* | powerpclittle-*)
+               basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+               ;;
+       ps2)
+               basic_machine=i386-ibm
+               ;;
+       rm[46]00)
+               basic_machine=mips-siemens
+               ;;
+       rtpc | rtpc-*)
+               basic_machine=romp-ibm
+               ;;
+       sequent)
+               basic_machine=i386-sequent
+               ;;
+       sh)
+               basic_machine=sh-hitachi
+               os=-hms
+               ;;
+       sps7)
+               basic_machine=m68k-bull
+               os=-sysv2
+               ;;
+       spur)
+               basic_machine=spur-unknown
+               ;;
+       sun2)
+               basic_machine=m68000-sun
+               ;;
+       sun2os3)
+               basic_machine=m68000-sun
+               os=-sunos3
+               ;;
+       sun2os4)
+               basic_machine=m68000-sun
+               os=-sunos4
+               ;;
+       sun3os3)
+               basic_machine=m68k-sun
+               os=-sunos3
+               ;;
+       sun3os4)
+               basic_machine=m68k-sun
+               os=-sunos4
+               ;;
+       sun4os3)
+               basic_machine=sparc-sun
+               os=-sunos3
+               ;;
+       sun4os4)
+               basic_machine=sparc-sun
+               os=-sunos4
+               ;;
+       sun4sol2)
+               basic_machine=sparc-sun
+               os=-solaris2
+               ;;
+       sun3 | sun3-*)
+               basic_machine=m68k-sun
+               ;;
+       sun4)
+               basic_machine=sparc-sun
+               ;;
+       sun386 | sun386i | roadrunner)
+               basic_machine=i386-sun
+               ;;
+       symmetry)
+               basic_machine=i386-sequent
+               os=-dynix
+               ;;
+       tower | tower-32)
+               basic_machine=m68k-ncr
+               ;;
+       udi29k)
+               basic_machine=a29k-amd
+               os=-udi
+               ;;
+       ultra3)
+               basic_machine=a29k-nyu
+               os=-sym1
+               ;;
+       vaxv)
+               basic_machine=vax-dec
+               os=-sysv
+               ;;
+       vms)
+               basic_machine=vax-dec
+               os=-vms
+               ;;
+       vxworks960)
+               basic_machine=i960-wrs
+               os=-vxworks
+               ;;
+       vxworks68)
+               basic_machine=m68k-wrs
+               os=-vxworks
+               ;;
+       vxworks29k)
+               basic_machine=a29k-wrs
+               os=-vxworks
+               ;;
+       xmp)
+               basic_machine=xmp-cray
+               os=-unicos
+               ;;
+        xps | xps100)
+               basic_machine=xps100-honeywell
+               ;;
+       none)
+               basic_machine=none-none
+               os=-none
+               ;;
+
+# Here we handle the default manufacturer of certain CPU types.  It is in
+# some cases the only manufacturer, in others, it is the most popular.
+       mips)
+               basic_machine=mips-mips
+               ;;
+       romp)
+               basic_machine=romp-ibm
+               ;;
+       rs6000)
+               basic_machine=rs6000-ibm
+               ;;
+       vax)
+               basic_machine=vax-dec
+               ;;
+       pdp11)
+               basic_machine=pdp11-dec
+               ;;
+       we32k)
+               basic_machine=we32k-att
+               ;;
+       sparc)
+               basic_machine=sparc-sun
+               ;;
+        cydra)
+               basic_machine=cydra-cydrome
+               ;;
+       orion)
+               basic_machine=orion-highlevel
+               ;;
+       orion105)
+               basic_machine=clipper-highlevel
+               ;;
+       *)
+               echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+
+# Here we canonicalize certain aliases for manufacturers.
+case $basic_machine in
+       *-digital*)
+               basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+               ;;
+       *-commodore*)
+               basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+               ;;
+       *)
+               ;;
+esac
+
+# Decode manufacturer-specific aliases for certain operating systems.
+
+if [ x"$os" != x"" ]
+then
+case $os in
+       # -solaris* is a basic system type, with this one exception.
+       -solaris1 | -solaris1.*)
+               os=`echo $os | sed -e 's|solaris1|sunos4|'`
+               ;;
+       -solaris)
+               os=-solaris2
+               ;;
+       -unixware* | svr4*)
+               os=-sysv4
+               ;;
+       -gnu/linux*)
+               os=`echo $os | sed -e 's|gnu/linux|linux|'`
+               ;;
+       # First accept the basic system types.
+       # The portable systems comes first.
+       # Each alternative MUST END IN A *, to match a version number.
+       # -sysv* is not here because it comes later, after sysvr4.
+       -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+             | -vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[345]* \
+             | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+             | -amigados* | -msdos* | -newsos* | -unicos* | -aos* \
+             | -nindy* | -vxworks* | -ebmon* | -hms* | -mvs* | -clix* \
+             | -riscos* | -linux* | -uniplus* | -iris* | -rtu* | -xenix* \
+             | -hiux* | -386bsd* | -netbsd* | -freebsd* | -riscix* \
+             | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
+             | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
+             | -udi* | -eabi* | -lites* )
+       # Remember, each alternative MUST END IN *, to match a version number.
+               ;;
+       -aux*)
+               ;;
+       -sunos5*)
+               os=`echo $os | sed -e 's|sunos5|solaris2|'`
+               ;;
+       -sunos6*)
+               os=`echo $os | sed -e 's|sunos6|solaris3|'`
+               ;;
+       -osfrose*)
+               os=-osfrose
+               ;;
+       -osf*)
+               os=-osf
+               ;;
+       -utek*)
+               os=-bsd
+               ;;
+       -dynix*)
+               os=-bsd
+               ;;
+       -acis*)
+               os=-aos
+               ;;
+       -ctix* | -uts*)
+               os=-sysv
+               ;;
+       # Preserve the version number of sinix5.
+       -sinix5.*)
+               os=`echo $os | sed -e 's|sinix|sysv|'`
+               ;;
+       -sinix*)
+               os=-sysv4
+               ;;
+       -triton*)
+               os=-sysv3
+               ;;
+       -oss*)
+               os=-sysv3
+               ;;
+       -svr4)
+               os=-sysv4
+               ;;
+       -svr3)
+               os=-sysv3
+               ;;
+       -sysvr4)
+               os=-sysv4
+               ;;
+       # This must come after -sysvr4.
+       -sysv*)
+               ;;
+       -xenix)
+               os=-xenix
+               ;;
+       -none)
+               ;;
+       *)
+               # Get rid of the `-' at the beginning of $os.
+               os=`echo $os | sed 's/[^-]*-//'`
+               echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+               exit 1
+               ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system.  Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+       *-acorn)
+               os=-riscix1.2
+               ;;
+       arm*-semi)
+               os=-aout
+               ;;
+        pdp11-*)
+               os=-none
+               ;;
+       *-dec | vax-*)
+               os=-ultrix4.2
+               ;;
+       m68*-apollo)
+               os=-domain
+               ;;
+       i386-sun)
+               os=-sunos4.0.2
+               ;;
+       m68000-sun)
+               os=-sunos3
+               # This also exists in the configure program, but was not the
+               # default.
+               # os=-sunos4
+               ;;
+       *-tti)  # must be before sparc entry or we get the wrong os.
+               os=-sysv3
+               ;;
+       sparc-* | *-sun)
+               os=-sunos4.1.1
+               ;;
+       *-ibm)
+               os=-aix
+               ;;
+       *-hp)
+               os=-hpux
+               ;;
+       *-hitachi)
+               os=-hiux
+               ;;
+       i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
+               os=-sysv
+               ;;
+       *-cbm)
+               os=-amigados
+               ;;
+       *-dg)
+               os=-dgux
+               ;;
+       *-dolphin)
+               os=-sysv3
+               ;;
+       m68k-ccur)
+               os=-rtu
+               ;;
+       m88k-omron*)
+               os=-luna
+               ;;
+       *-sequent)
+               os=-ptx
+               ;;
+       *-crds)
+               os=-unos
+               ;;
+       *-ns)
+               os=-genix
+               ;;
+       i370-*)
+               os=-mvs
+               ;;
+       *-next)
+               os=-nextstep3
+               ;;
+        *-gould)
+               os=-sysv
+               ;;
+        *-highlevel)
+               os=-bsd
+               ;;
+       *-encore)
+               os=-bsd
+               ;;
+        *-sgi)
+               os=-irix
+               ;;
+        *-siemens)
+               os=-sysv4
+               ;;
+       *-masscomp)
+               os=-rtu
+               ;;
+       *)
+               os=-none
+               ;;
+esac
+fi
+
+# Here we handle the case where we know the os, and the CPU type, but not the
+# manufacturer.  We pick the logical manufacturer.
+vendor=unknown
+case $basic_machine in
+       *-unknown)
+               case $os in
+                       -riscix*)
+                               vendor=acorn
+                               ;;
+                       -sunos*)
+                               vendor=sun
+                               ;;
+                       -aix*)
+                               vendor=ibm
+                               ;;
+                       -hpux*)
+                               vendor=hp
+                               ;;
+                       -hiux*)
+                               vendor=hitachi
+                               ;;
+                       -unos*)
+                               vendor=crds
+                               ;;
+                       -dgux*)
+                               vendor=dg
+                               ;;
+                       -luna*)
+                               vendor=omron
+                               ;;
+                       -genix*)
+                               vendor=ns
+                               ;;
+                       -mvs*)
+                               vendor=ibm
+                               ;;
+                       -ptx*)
+                               vendor=sequent
+                               ;;
+                       -vxworks*)
+                               vendor=wrs
+                               ;;
+                       -aux*)
+                               vendor=apple
+                               ;;
+               esac
+               basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
+               ;;
+esac
+
+echo $basic_machine$os
index a6efaf3..af43341 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.12 
+# Generated automatically using autoconf version 2.13 
 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
 #
 # This configure script is free software; the Free Software Foundation
@@ -14,12 +14,18 @@ ac_default_prefix=/usr/local
 ac_help="$ac_help
   --enable-debug          compile debugging information in."
 ac_help="$ac_help
+  --enable-gif            compile gif support in."
+ac_help="$ac_help
+  --enable-locale         perform setlocale() on invocation."
+ac_help="$ac_help
   --disable-freetype      DON'T use freetype routines."
 ac_help="$ac_help
   --disable-vflib         DON'T use vflib routines."
 ac_help="$ac_help
   --with-vfontcap=PATH    use PATH as vfontcap"
 ac_help="$ac_help
+  --enable-freetype-charset16         use freetype for chaset16."
+ac_help="$ac_help
   --with-x                use the X Window System"
 
 # Initialize some variables set by options.
@@ -59,6 +65,7 @@ mandir='${prefix}/man'
 # Initialize some other variables.
 subdirs=
 MFLAGS= MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
 # Maximum number of lines to put in a shell here document.
 ac_max_here_lines=12
 
@@ -342,7 +349,7 @@ EOF
     verbose=yes ;;
 
   -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.12"
+    echo "configure generated by autoconf version 2.13"
     exit 0 ;;
 
   -with-* | --with-*)
@@ -512,9 +519,11 @@ ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
 cross_compiling=$ac_cv_prog_cc_cross
 
+ac_exeext=
+ac_objext=o
 if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
   # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
   if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
@@ -530,7 +539,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:534: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:543: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -556,190 +565,67 @@ else
   SET_MAKE="MAKE=${MAKE-make}"
 fi
 
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:563: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:592: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  ac_prog_rejected=no
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-       continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:640: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext <<EOF
-#line 650 "configure"
-#include "confdefs.h"
-main(){return(0);}
-EOF
-if { (eval echo configure:654: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  ac_cv_prog_cc_works=yes
-  # If we can't run a trivial program, we are probably using a cross compiler.
-  if (./conftest; exit) 2>/dev/null; then
-    ac_cv_prog_cc_cross=no
-  else
-    ac_cv_prog_cc_cross=yes
+ac_aux_dir=
+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do
+  if test -f $ac_dir/install-sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install-sh -c"
+    break
+  elif test -f $ac_dir/install.sh; then
+    ac_aux_dir=$ac_dir
+    ac_install_sh="$ac_aux_dir/install.sh -c"
+    break
   fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cc_works=no
+done
+if test -z "$ac_aux_dir"; then
+  { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; }
 fi
-rm -fr conftest*
+ac_config_guess=$ac_aux_dir/config.guess
+ac_config_sub=$ac_aux_dir/config.sub
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
-  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:674: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
 
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:679: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:688: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gcc=yes
-else
-  ac_cv_prog_gcc=no
-fi
+# Make sure we can run config.sub.
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
 fi
 
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
+echo $ac_n "checking host system type""... $ac_c" 1>&6
+echo "configure:595: checking host system type" >&5
 
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-  ac_test_CFLAGS="${CFLAGS+set}"
-  ac_save_CFLAGS="$CFLAGS"
-  CFLAGS=
-  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:703: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_cc_g=yes
-else
-  ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
+host_alias=$host
+case "$host_alias" in
+NONE)
+  case $nonopt in
+  NONE)
+    if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
+    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
+    fi ;;
+  *) host_alias=$nonopt ;;
+  esac ;;
+esac
 
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-  if test "$ac_test_CFLAGS" = set; then
-    CFLAGS="$ac_save_CFLAGS"
-  elif test $ac_cv_prog_cc_g = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-O2"
-  fi
-else
-  GCC=
-  test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+echo "$ac_t""$host" 1>&6
 
 for ac_prog in mawk gawk nawk awk
 do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:735: checking for $ac_word" >&5
+echo "configure:620: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$AWK"; then
   ac_cv_prog_AWK="$AWK" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_AWK="$ac_prog"
@@ -764,15 +650,16 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:768: checking for $ac_word" >&5
+echo "configure:654: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_YACC="$ac_prog"
@@ -796,15 +683,16 @@ test -n "$YACC" || YACC="yacc"
 # Extract the first word of "flex", so it can be a program name with args.
 set dummy flex; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:800: checking for $ac_word" >&5
+echo "configure:687: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_LEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   if test -n "$LEX"; then
   ac_cv_prog_LEX="$LEX" # Let the user override the test.
 else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_prog_LEX="flex"
@@ -829,7 +717,7 @@ then
   *) ac_lib=l ;;
   esac
   echo $ac_n "checking for yywrap in -l$ac_lib""... $ac_c" 1>&6
-echo "configure:833: checking for yywrap in -l$ac_lib" >&5
+echo "configure:721: checking for yywrap in -l$ac_lib" >&5
 ac_lib_var=`echo $ac_lib'_'yywrap | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -837,7 +725,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$ac_lib  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 841 "configure"
+#line 729 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -848,7 +736,7 @@ int main() {
 yywrap()
 ; return 0; }
 EOF
-if { (eval echo configure:852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:740: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -875,7 +763,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:879: checking for $ac_word" >&5
+echo "configure:767: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_mgp_cv_path_perl'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -883,9 +771,13 @@ else
   /*)
   ac_cv_path_mgp_cv_path_perl="$mgp_cv_path_perl" # Let the user override the test with a path.
   ;;
+  ?:/*)                         
+  ac_cv_path_mgp_cv_path_perl="$mgp_cv_path_perl" # Let the user override the test with a dos path.
+  ;;
   *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_path_mgp_cv_path_perl="$ac_dir/$ac_word"
@@ -913,7 +805,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:917: checking for $ac_word" >&5
+echo "configure:809: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_mgp_cv_path_uuencode'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -921,9 +813,13 @@ else
   /*)
   ac_cv_path_mgp_cv_path_uuencode="$mgp_cv_path_uuencode" # Let the user override the test with a path.
   ;;
+  ?:/*)                         
+  ac_cv_path_mgp_cv_path_uuencode="$mgp_cv_path_uuencode" # Let the user override the test with a dos path.
+  ;;
   *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_path_mgp_cv_path_uuencode="$ac_dir/$ac_word"
@@ -951,7 +847,7 @@ do
 # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:955: checking for $ac_word" >&5
+echo "configure:851: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_path_mgp_cv_path_gzip'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -959,9 +855,13 @@ else
   /*)
   ac_cv_path_mgp_cv_path_gzip="$mgp_cv_path_gzip" # Let the user override the test with a path.
   ;;
+  ?:/*)                         
+  ac_cv_path_mgp_cv_path_gzip="$mgp_cv_path_gzip" # Let the user override the test with a dos path.
+  ;;
   *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
     test -z "$ac_dir" && ac_dir=.
     if test -f $ac_dir/$ac_word; then
       ac_cv_path_mgp_cv_path_gzip="$ac_dir/$ac_word"
@@ -984,25 +884,145 @@ done
 test -n "$mgp_cv_path_gzip" || mgp_cv_path_gzip="no"
 
 
+for ac_prog in uudecode
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:893: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_mgp_cv_path_uudecode'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case "$mgp_cv_path_uudecode" in
+  /*)
+  ac_cv_path_mgp_cv_path_uudecode="$mgp_cv_path_uudecode" # Let the user override the test with a path.
+  ;;
+  ?:/*)                         
+  ac_cv_path_mgp_cv_path_uudecode="$mgp_cv_path_uudecode" # Let the user override the test with a dos path.
+  ;;
+  *)
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_path_mgp_cv_path_uudecode="$ac_dir/$ac_word"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+fi
+mgp_cv_path_uudecode="$ac_cv_path_mgp_cv_path_uudecode"
+if test -n "$mgp_cv_path_uudecode"; then
+  echo "$ac_t""$mgp_cv_path_uudecode" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+test -n "$mgp_cv_path_uudecode" && break
+done
+test -n "$mgp_cv_path_uudecode" || mgp_cv_path_uudecode="no"
+
+for ac_prog in gunzip
+do
+# Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
+echo "configure:934: checking for $ac_word" >&5
+if eval "test \"`echo '$''{'ac_cv_path_mgp_cv_path_gunzip'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  case "$mgp_cv_path_gunzip" in
+  /*)
+  ac_cv_path_mgp_cv_path_gunzip="$mgp_cv_path_gunzip" # Let the user override the test with a path.
+  ;;
+  ?:/*)                         
+  ac_cv_path_mgp_cv_path_gunzip="$mgp_cv_path_gunzip" # Let the user override the test with a dos path.
+  ;;
+  *)
+  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS=":"
+  ac_dummy="$PATH"
+  for ac_dir in $ac_dummy; do 
+    test -z "$ac_dir" && ac_dir=.
+    if test -f $ac_dir/$ac_word; then
+      ac_cv_path_mgp_cv_path_gunzip="$ac_dir/$ac_word"
+      break
+    fi
+  done
+  IFS="$ac_save_ifs"
+  ;;
+esac
+fi
+mgp_cv_path_gunzip="$ac_cv_path_mgp_cv_path_gunzip"
+if test -n "$mgp_cv_path_gunzip"; then
+  echo "$ac_t""$mgp_cv_path_gunzip" 1>&6
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+test -n "$mgp_cv_path_gunzip" && break
+done
+test -n "$mgp_cv_path_gunzip" || mgp_cv_path_gunzip="no"
+
+
+OPTFLAGS=
+
+DEPLIBS=
+
+
+case $host_os in
+freebsd3*|freebsd2.2.6*|freebsd2.2.7*|freebsd2.2.8*)
+       OPTFLAGS="$OPTFLAGS -DUUDECODEOPT=\\\"-s\\\""
+       ;;
+esac
+OPTFLAGS="$OPTFLAGS -DUUDECODE=\\\"$mgp_cv_path_uudecode\\\""
+OPTFLAGS="$OPTFLAGS -DGUNZIP=\\\"$mgp_cv_path_gunzip\\\""
 
 echo $ac_n "checking if --enable-debug option specified""... $ac_c" 1>&6
-echo "configure:990: checking if --enable-debug option specified" >&5
+echo "configure:985: checking if --enable-debug option specified" >&5
 # Check whether --enable-debug or --disable-debug was given.
 if test "${enable_debug+set}" = set; then
   enableval="$enable_debug"
-  mgp_debug="yes"; DEBUGFLAGS="-DDEBUG -g -Wall"
+  mgp_debug="yes"; OPTFLAGS="$OPTFLAGS -g -DDEBUG -Wall"
 else
   mgp_debug="no"
 fi
 
 echo "$ac_t""$mgp_debug" 1>&6
-DEBUGFLAGS=${DEBUGFLAGS-"OptimizedCDebugFlags"}
 
+echo $ac_n "checking if --enable-gif option specified""... $ac_c" 1>&6
+echo "configure:997: checking if --enable-gif option specified" >&5
+# Check whether --enable-gif or --disable-gif was given.
+if test "${enable_gif+set}" = set; then
+  enableval="$enable_gif"
+  mgp_gif="yes"; cat >> confdefs.h <<\EOF
+#define USE_GIF 1
+EOF
+
+else
+  mgp_gif="no"
+fi
+
+echo "$ac_t""$mgp_gif" 1>&6
+
+echo $ac_n "checking if --enable-locale option specified""... $ac_c" 1>&6
+echo "configure:1012: checking if --enable-locale option specified" >&5
+# Check whether --enable-locale or --disable-locale was given.
+if test "${enable_locale+set}" = set; then
+  enableval="$enable_locale"
+  mgp_locale="yes"; OPTFLAGS="$OPTFLAGS -DUSE_SETLOCALE"
+else
+  mgp_locale="no"
+fi
+
+echo "$ac_t""$mgp_locale" 1>&6
 
 LIBS="-lm $LIBS"
 
 echo $ac_n "checking if --disable-freetype option specified""... $ac_c" 1>&6
-echo "configure:1006: checking if --disable-freetype option specified" >&5
+echo "configure:1026: checking if --disable-freetype option specified" >&5
 # Check whether --enable-freetype or --disable-freetype was given.
 if test "${enable_freetype+set}" = set; then
   enableval="$enable_freetype"
@@ -1013,26 +1033,28 @@ fi
 
 echo "$ac_t""$mgp_skip_freetype" 1>&6
  
-OPTFLAGS=
-
-DEPLIBS=
-
 if test "$mgp_use_freetype" = "yes"; then
        echo $ac_n "checking for freetype library/header""... $ac_c" 1>&6
-echo "configure:1023: checking for freetype library/header" >&5
-       for dir in /usr/local/freetype /usr/local; do
+echo "configure:1039: checking for freetype library/header" >&5
+       for dir in /usr/local/freetype /usr/local /opt/freetype /usr/pkg /usr; do
                ac_cv_ft_lib=no
                ac_cv_ft_include=no
-               if test -d $dir/lib -a -f $dir/lib/libttf.so; then
+               shlib1=`echo $dir/lib/libttf.so* | head -1 | sed -e 's/.*\///'`
+               if test x$shlib1 = x; then
+                       $shlib1=no
+               fi
+               if test -d $dir/lib -a -f $dir/lib/$shlib1; then
                        ac_cv_ft_lib="$dir/lib"
-                       ac_cv_ft_libpath="libttf.so"
+                       ac_cv_ft_libpath="$shlib1"
                elif test -d $dir/lib -a -f $dir/lib/libttf.a; then
                        ac_cv_ft_lib="$dir/lib"
                        ac_cv_ft_libpath="libttf.a"
                fi
                if test -d $dir/include -a -f $dir/include/freetype.h; then
                        ac_cv_ft_include="$dir/include"
-               fi
+               elif test -d $dir/include/freetype -a -f $dir/include/freetype/freetype.h; then
+                       ac_cv_ft_include="$dir/include/freetype"
+               fi
                if test "$ac_cv_ft_lib" != "no" -a "$ac_cv_ft_include" != "no"; then
                        LIBS="-L$ac_cv_ft_lib $LIBS"
                        CFLAGS="-I$ac_cv_ft_include $CFLAGS"
@@ -1051,7 +1073,7 @@ if test "$mgp_use_freetype" = "yes"; then
        OPTFLAGS="-I$ac_cv_ft_include $OPTFLAGS"
        DEPLIBS="$ac_cv_ft_lib/$ac_cv_ft_libpath $DEPLIBS"
        echo $ac_n "checking for TT_Init_FreeType in -lttf""... $ac_c" 1>&6
-echo "configure:1055: checking for TT_Init_FreeType in -lttf" >&5
+echo "configure:1077: checking for TT_Init_FreeType in -lttf" >&5
 ac_lib_var=`echo ttf'_'TT_Init_FreeType | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1059,7 +1081,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-lttf  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1063 "configure"
+#line 1085 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -1070,7 +1092,7 @@ int main() {
 TT_Init_FreeType()
 ; return 0; }
 EOF
-if { (eval echo configure:1074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1100,14 +1122,14 @@ echo "Fatal: libttf.a not found"
 fi
 
        cat > conftest.$ac_ext <<EOF
-#line 1104 "configure"
+#line 1126 "configure"
 #include "confdefs.h"
 #include <freetype.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1111: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1133: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   :
 else
   echo "configure: failed program was:" >&5
@@ -1122,16 +1144,16 @@ rm -f conftest*
 EOF
 
        echo $ac_n "checking for num_CharMaps field in TT_Face_Properties""... $ac_c" 1>&6
-echo "configure:1126: checking for num_CharMaps field in TT_Face_Properties" >&5
+echo "configure:1148: checking for num_CharMaps field in TT_Face_Properties" >&5
        cat > conftest.$ac_ext <<EOF
-#line 1128 "configure"
+#line 1150 "configure"
 #include "confdefs.h"
 #include <freetype.h>
 int main() {
 TT_Face_Properties x; return x.num_CharMaps;
 ; return 0; }
 EOF
-if { (eval echo configure:1135: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1157: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   result=yes; cat >> confdefs.h <<\EOF
 #define HAVE_TT_FACE_PROPERTIES_CHARMAPS 1
@@ -1148,7 +1170,7 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking if --disable-vflib option specified""... $ac_c" 1>&6
-echo "configure:1152: checking if --disable-vflib option specified" >&5
+echo "configure:1174: checking if --disable-vflib option specified" >&5
 # Check whether --enable-vflib or --disable-vflib was given.
 if test "${enable_vflib+set}" = set; then
   enableval="$enable_vflib"
@@ -1161,21 +1183,29 @@ echo "$ac_t""$mgp_skip_vflib" 1>&6
 
 if test "$mgp_use_vflib" = "yes"; then
        echo $ac_n "checking for VFlib library/header""... $ac_c" 1>&6
-echo "configure:1165: checking for VFlib library/header" >&5
-       for dir in /usr/local/VFlib /usr/local/vflib /usr/local; do
+echo "configure:1187: checking for VFlib library/header" >&5
+       for dir in /usr/local/VFlib /usr/local/vflib /usr/local /usr/pkg /usr; do
                ac_cv_vf_libname=VFlib
                ac_cv_vf_libdir=no
                ac_cv_vf_hdrdir=no
-               if test -d $dir/lib -a -f $dir/lib/libVFlib.so; then
+               shlib1=`echo $dir/lib/libVFlib.so* | head -1 | sed -e 's/.*\///'`
+               shlib2=`echo $dir/lib/libVFlib2.so* | head -1 | sed -e 's/.*\///'`
+               if test x$shlib1 = x; then
+                       $shlib1=no
+               fi
+               if test x$shlib2 = x; then
+                       $shlib2=no
+               fi
+               if test -d $dir/lib -a -f $dir/lib/$shlib1; then
                        ac_cv_vf_libdir="$dir/lib"
-                       ac_cv_vf_libpath="libVFlib.so"
+                       ac_cv_vf_libpath=$shlib1
                elif test -d $dir/lib -a -f $dir/lib/libVFlib.a; then
                        ac_cv_vf_libdir="$dir/lib"
                        ac_cv_vf_libpath="libVFlib.a"
-               elif test -d $dir/lib -a -f $dir/lib/libVFlib2.so; then
+               elif test -d $dir/lib -a -f $dir/lib/$shlib2; then
                        ac_cv_vf_libname=VFlib2
                        ac_cv_vf_libdir="$dir/lib"
-                       ac_cv_vf_libpath="libVFlib2.so"
+                       ac_cv_vf_libpath=$shlib2
                elif test -d $dir/lib -a -f $dir/lib/libVFlib2.a; then
                        ac_cv_vf_libname=VFlib2
                        ac_cv_vf_libdir="$dir/lib"
@@ -1202,7 +1232,7 @@ if test "$mgp_use_vflib" = "yes"; then
        OPTFLAGS="-I$ac_cv_vf_hdrdir $OPTFLAGS"
        DEPLIBS="$ac_cv_vf_libdir/$ac_cv_vf_libpath $DEPLIBS"
        echo $ac_n "checking for VF_Init in -l$ac_cv_vf_libname""... $ac_c" 1>&6
-echo "configure:1206: checking for VF_Init in -l$ac_cv_vf_libname" >&5
+echo "configure:1236: checking for VF_Init in -l$ac_cv_vf_libname" >&5
 ac_lib_var=`echo $ac_cv_vf_libname'_'VF_Init | sed 'y%./+-%__p_%'`
 if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1210,7 +1240,7 @@ else
   ac_save_LIBS="$LIBS"
 LIBS="-l$ac_cv_vf_libname  $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1214 "configure"
+#line 1244 "configure"
 #include "confdefs.h"
 /* Override any gcc2 internal prototype to avoid an error.  */
 /* We use char because int might match the return type of a gcc2
@@ -1221,7 +1251,7 @@ int main() {
 VF_Init()
 ; return 0; }
 EOF
-if { (eval echo configure:1225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1255: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -1244,14 +1274,14 @@ echo "Fatal: $ac_cv_vf_libpath not found"
 fi
 
        cat > conftest.$ac_ext <<EOF
-#line 1248 "configure"
+#line 1278 "configure"
 #include "confdefs.h"
 #include <VF.h>
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:1255: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   :
 else
   echo "configure: failed program was:" >&5
@@ -1267,7 +1297,7 @@ EOF
 
 
        echo $ac_n "checking for VFlib configuration file""... $ac_c" 1>&6
-echo "configure:1271: checking for VFlib configuration file" >&5
+echo "configure:1301: checking for VFlib configuration file" >&5
        # Check whether --with-vfontcap or --without-vfontcap was given.
 if test "${with_vfontcap+set}" = set; then
   withval="$with_vfontcap"
@@ -1282,6 +1312,7 @@ fi
                    /usr/local/lib/VFlib /usr/local/lib/fonts/vf \
                    /usr/local/lib /usr/local/etc /etc \
                    /usr/local/libdata/vflib /usr/local/share/VFlib \
+                   /usr/local/share/VFlib/* \
                    ../../VFlib* ../VFlib* VFlib*; do
                        if test -d $ac_dir -a -f $ac_dir/vfontcap; then
                                ac_cv_vf_fontcap=$ac_dir/vfontcap;
@@ -1302,8 +1333,89 @@ EOF
        
 fi
 
+if test "$mgp_use_freetype" = "yes"; then
+       echo $ac_n "checking if --enable-freetype-charset16 option specified""... $ac_c" 1>&6
+echo "configure:1339: checking if --enable-freetype-charset16 option specified" >&5
+       # Check whether --enable-freetype-charset16 or --disable-freetype-charset16 was given.
+if test "${enable_freetype_charset16+set}" = set; then
+  enableval="$enable_freetype_charset16"
+  mgp_use_freetype_c16="yes"
+else
+  mgp_use_freetype_c16="no"
+fi
+
+       echo "$ac_t""$mgp_use_freetype_c16" 1>&6
+
+       if test "$mgp_use_freetype_c16" = "yes"; then
+               cat >> confdefs.h <<\EOF
+#define FREETYPE_CHARSET16 1
+EOF
+
+       fi
+fi
+
+for i in /usr/pkg /usr/local; do
+       if test -f $i/include/png.h -a -f $i/lib/libpng.a; then
+               LIBS="$LIBS -L$i/lib"
+               OPTFLAGS="$OPTFLAGS -I$i/include"
+               DEPLIBS="$DEPLIBS $i/lib/libpng.a"
+               echo $ac_n "checking for png_write_init in -lpng""... $ac_c" 1>&6
+echo "configure:1364: checking for png_write_init in -lpng" >&5
+ac_lib_var=`echo png'_'png_write_init | sed 'y%./+-%__p_%'`
+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+  echo $ac_n "(cached) $ac_c" 1>&6
+else
+  ac_save_LIBS="$LIBS"
+LIBS="-lpng  $LIBS"
+cat > conftest.$ac_ext <<EOF
+#line 1372 "configure"
+#include "confdefs.h"
+/* Override any gcc2 internal prototype to avoid an error.  */
+/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char png_write_init();
+
+int main() {
+png_write_init()
+; return 0; }
+EOF
+if { (eval echo configure:1383: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=yes"
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+LIBS="$ac_save_LIBS"
+
+fi
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
+  echo "$ac_t""yes" 1>&6
+    ac_tr_lib=HAVE_LIB`echo png | sed -e 's/[^a-zA-Z0-9_]/_/g' \
+    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
+  cat >> confdefs.h <<EOF
+#define $ac_tr_lib 1
+EOF
+
+  LIBS="-lpng $LIBS"
+
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+               cat >> confdefs.h <<\EOF
+#define USE_PNG 1
+EOF
+
+               break
+       fi
+done
+
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1307: checking how to run the C preprocessor" >&5
+echo "configure:1419: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -1318,14 +1430,14 @@ else
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 1322 "configure"
+#line 1434 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1328: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
 else
@@ -1335,14 +1447,31 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 1339 "configure"
+#line 1451 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1345: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1457: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+  :
+else
+  echo "$ac_err" >&5
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  CPP="${CC-cc} -nologo -E"
+  cat > conftest.$ac_ext <<EOF
+#line 1468 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1474: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
 else
@@ -1355,6 +1484,8 @@ fi
 rm -f conftest*
 fi
 rm -f conftest*
+fi
+rm -f conftest*
   ac_cv_prog_CPP="$CPP"
 fi
   CPP="$ac_cv_prog_CPP"
@@ -1368,7 +1499,7 @@ echo "$ac_t""$CPP" 1>&6
 # Uses ac_ vars as temps to allow command line to override cache and checks.
 # --without-x overrides everything else, but does not touch the cache.
 echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:1372: checking for X" >&5
+echo "configure:1503: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -1430,13 +1561,13 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 1434 "configure"
+#line 1565 "configure"
 #include "confdefs.h"
 #include <$x_direct_test_include>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1439: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1570: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   # We can compile using X headers with no special include directory.
@@ -1504,14 +1635,14 @@ if test "$ac_x_libraries" = NO; then
   ac_save_LIBS="$LIBS"
   LIBS="-l$x_direct_test_library $LIBS"
 cat > conftest.$ac_ext <<EOF
-#line 1508 "configure"
+#line 1639 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:1515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   LIBS="$ac_save_LIBS"
 # We can link X programs with no special library path.
@@ -1598,12 +1729,12 @@ else
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:1602: checking for ANSI C header files" >&5
+echo "configure:1733: checking for ANSI C header files" >&5
 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1607 "configure"
+#line 1738 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -1611,8 +1742,8 @@ else
 #include <float.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   ac_cv_header_stdc=yes
@@ -1628,7 +1759,7 @@ rm -f conftest*
 if test $ac_cv_header_stdc = yes; then
   # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1632 "configure"
+#line 1763 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -1646,7 +1777,7 @@ fi
 if test $ac_cv_header_stdc = yes; then
   # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
 cat > conftest.$ac_ext <<EOF
-#line 1650 "configure"
+#line 1781 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -1667,7 +1798,7 @@ if test "$cross_compiling" = yes; then
   :
 else
   cat > conftest.$ac_ext <<EOF
-#line 1671 "configure"
+#line 1802 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -1678,7 +1809,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:1682: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:1813: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   :
 else
@@ -1702,12 +1833,12 @@ EOF
 fi
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:1706: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:1837: checking for sys/wait.h that is POSIX.1 compatible" >&5
 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1711 "configure"
+#line 1842 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -1723,7 +1854,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:1727: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1858: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -1743,22 +1874,22 @@ EOF
 
 fi
 
-for ac_hdr in fcntl.h strings.h sys/file.h unistd.h sys/time.h sys/select.h stdarg.h varargs.h termios.h
+for ac_hdr in fcntl.h strings.h sys/file.h unistd.h sys/time.h sys/select.h stdarg.h varargs.h termios.h locale.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1751: checking for $ac_hdr" >&5
+echo "configure:1882: checking for $ac_hdr" >&5
 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1756 "configure"
+#line 1887 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1761: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
+{ (eval echo configure:1892: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
   eval "ac_cv_header_$ac_safe=yes"
@@ -1785,12 +1916,12 @@ done
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:1789: checking for working const" >&5
+echo "configure:1920: checking for working const" >&5
 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1794 "configure"
+#line 1925 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -1839,7 +1970,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:1843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1974: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -1860,21 +1991,21 @@ EOF
 fi
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:1864: checking for inline" >&5
+echo "configure:1995: checking for inline" >&5
 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 1871 "configure"
+#line 2002 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:1878: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2009: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -1900,12 +2031,12 @@ EOF
 esac
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:1904: checking for pid_t" >&5
+echo "configure:2035: checking for pid_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1909 "configure"
+#line 2040 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1914,7 +2045,7 @@ else
 #endif
 EOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  egrep "(^|[^a-zA-Z_0-9])pid_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
   rm -rf conftest*
   ac_cv_type_pid_t=yes
 else
@@ -1933,12 +2064,12 @@ EOF
 fi
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:1937: checking for size_t" >&5
+echo "configure:2068: checking for size_t" >&5
 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1942 "configure"
+#line 2073 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -1947,7 +2078,7 @@ else
 #endif
 EOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  egrep "(^|[^a-zA-Z_0-9])size_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
   rm -rf conftest*
   ac_cv_type_size_t=yes
 else
@@ -1966,12 +2097,12 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:1970: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:2101: checking whether time.h and sys/time.h may both be included" >&5
 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 1975 "configure"
+#line 2106 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -1980,7 +2111,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:1984: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -2001,12 +2132,12 @@ EOF
 fi
 
 echo $ac_n "checking for u_int""... $ac_c" 1>&6
-echo "configure:2005: checking for u_int" >&5
+echo "configure:2136: checking for u_int" >&5
 if eval "test \"`echo '$''{'ac_cv_type_u_int'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2010 "configure"
+#line 2141 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -2015,7 +2146,7 @@ else
 #endif
 EOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "u_int[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  egrep "(^|[^a-zA-Z_0-9])u_int[^a-zA-Z_0-9]" >/dev/null 2>&1; then
   rm -rf conftest*
   ac_cv_type_u_int=yes
 else
@@ -2034,12 +2165,12 @@ EOF
 fi
 
 echo $ac_n "checking for u_char""... $ac_c" 1>&6
-echo "configure:2038: checking for u_char" >&5
+echo "configure:2169: checking for u_char" >&5
 if eval "test \"`echo '$''{'ac_cv_type_u_char'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2043 "configure"
+#line 2174 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -2048,7 +2179,7 @@ else
 #endif
 EOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  egrep "u_char[^a-zA-Z_0-9]" >/dev/null 2>&1; then
+  egrep "(^|[^a-zA-Z_0-9])u_char[^a-zA-Z_0-9]" >/dev/null 2>&1; then
   rm -rf conftest*
   ac_cv_type_u_char=yes
 else
@@ -2068,7 +2199,7 @@ fi
 
 
 echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:2072: checking for 8-bit clean memcmp" >&5
+echo "configure:2203: checking for 8-bit clean memcmp" >&5
 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -2076,7 +2207,7 @@ else
   ac_cv_func_memcmp_clean=no
 else
   cat > conftest.$ac_ext <<EOF
-#line 2080 "configure"
+#line 2211 "configure"
 #include "confdefs.h"
 
 main()
@@ -2086,7 +2217,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:2090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
 then
   ac_cv_func_memcmp_clean=yes
 else
@@ -2101,15 +2232,15 @@ fi
 fi
 
 echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
-test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
+test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:2108: checking return type of signal handlers" >&5
+echo "configure:2239: checking return type of signal handlers" >&5
 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2113 "configure"
+#line 2244 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -2126,7 +2257,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:2130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2261: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -2144,15 +2275,15 @@ cat >> confdefs.h <<EOF
 EOF
 
 
-for ac_func in poll strstr
+for ac_func in poll strstr _setbufend
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2151: checking for $ac_func" >&5
+echo "configure:2282: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2156 "configure"
+#line 2287 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2175,7 +2306,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2179: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2310: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2202,12 +2333,12 @@ done
 for ac_func in usleep strsep strdup mkstemp snprintf memcmp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2206: checking for $ac_func" >&5
+echo "configure:2337: checking for $ac_func" >&5
 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
   cat > conftest.$ac_ext <<EOF
-#line 2211 "configure"
+#line 2342 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -2230,7 +2361,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
@@ -2251,7 +2382,7 @@ EOF
  
 else
   echo "$ac_t""no" 1>&6
-LIBOBJS="$LIBOBJS ${ac_func}.o"
+LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}"
 fi
 done
 
@@ -2259,10 +2390,7 @@ done
 
 mgp_keywords=`$mgp_cv_path_perl $srcdir/keywords.pl $srcdir/globals.c`
 
-
-echo "be sure to generate Makefile from Imakefile, using xmkmf -a."
-/bin/rm -f Makefile image/Makefile
-
 trap '' 1 2 15
 cat > confcache <<\EOF
 # This file is a shell script that caches the results of configure
@@ -2286,7 +2414,7 @@ EOF
 # Ultrix sh set writes to stderr and can't be redirected directly,
 # and sets the high bit in the cache file unless we assign to the vars.
 (set) 2>&1 |
-  case `(ac_space=' '; set) 2>&1` in
+  case `(ac_space=' '; set | grep ac_space) 2>&1` in
   *ac_space=\ *)
     # `set' does not quote correctly, so add quotes (double-quote substitution
     # turns \\\\ into \\, and sed turns \\ into \).
@@ -2365,7 +2493,7 @@ do
     echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
     exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
   -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.12"
+    echo "$CONFIG_STATUS generated by autoconf version 2.13"
     exit 0 ;;
   -help | --help | --hel | --he | --h)
     echo "\$ac_cs_usage"; exit 0 ;;
@@ -2385,9 +2513,11 @@ sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
  s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
 $ac_vpsub
 $extrasub
+s%@SHELL@%$SHELL%g
 s%@CFLAGS@%$CFLAGS%g
 s%@CPPFLAGS@%$CPPFLAGS%g
 s%@CXXFLAGS@%$CXXFLAGS%g
+s%@FFLAGS@%$FFLAGS%g
 s%@DEFS@%$DEFS%g
 s%@LDFLAGS@%$LDFLAGS%g
 s%@LIBS@%$LIBS%g
@@ -2407,7 +2537,11 @@ s%@oldincludedir@%$oldincludedir%g
 s%@infodir@%$infodir%g
 s%@mandir@%$mandir%g
 s%@SET_MAKE@%$SET_MAKE%g
-s%@CC@%$CC%g
+s%@host@%$host%g
+s%@host_alias@%$host_alias%g
+s%@host_cpu@%$host_cpu%g
+s%@host_vendor@%$host_vendor%g
+s%@host_os@%$host_os%g
 s%@AWK@%$AWK%g
 s%@YACC@%$YACC%g
 s%@LEX@%$LEX%g
@@ -2415,7 +2549,8 @@ s%@LEXLIB@%$LEXLIB%g
 s%@mgp_cv_path_perl@%$mgp_cv_path_perl%g
 s%@mgp_cv_path_uuencode@%$mgp_cv_path_uuencode%g
 s%@mgp_cv_path_gzip@%$mgp_cv_path_gzip%g
-s%@DEBUGFLAGS@%$DEBUGFLAGS%g
+s%@mgp_cv_path_uudecode@%$mgp_cv_path_uudecode%g
+s%@mgp_cv_path_gunzip@%$mgp_cv_path_gunzip%g
 s%@OPTFLAGS@%$OPTFLAGS%g
 s%@DEPLIBS@%$DEPLIBS%g
 s%@mgp_cv_vflib_a@%$mgp_cv_vflib_a%g
@@ -2530,3 +2665,7 @@ chmod +x $CONFIG_STATUS
 rm -fr confdefs* $ac_clean_files
 test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
 
+
+/bin/rm -f Makefile image/Makefile
+
+echo "be sure to generate Makefile from Imakefile, by xmkmf and make Makefiles"
index 1a1316e..9a007f0 100644 (file)
@@ -3,12 +3,15 @@ dnl This 'configure' and 'Imakefile.in' are written to be directory
 dnl independent (using srcdir), however, xmkmf and Imake.tmpl do not
 dnl allow us to switch compilation directory.
 dnl
-dnl $Id: configure.in,v 1.41 1998/09/06 02:10:21 itojun Exp $
+dnl $Id: configure.in,v 1.62 1999/11/28 14:35:01 nishida Exp $
 AC_INIT(image/imagetypes.c)
 
 dnl Checks for programs.
 AC_PROG_MAKE_SET
-AC_PROG_CC
+AC_CANONICAL_HOST
+dnl  AC_PROG_CC cannot be specified here, since imake may not like the
+dnl  compiler probed by AC_PROG_CC (i.e. gcc).
+dnl AC_PROG_CC
 AC_PROG_AWK
 AC_PROG_YACC
 AC_PROG_LEX
@@ -18,16 +21,45 @@ AC_PATH_PROGS(mgp_cv_path_uuencode, uuencode, no)
 AC_SUBST(mgp_cv_path_uuencode)
 AC_PATH_PROGS(mgp_cv_path_gzip, gzip, no)
 AC_SUBST(mgp_cv_path_gzip)
+AC_PATH_PROGS(mgp_cv_path_uudecode, uudecode, no)
+AC_PATH_PROGS(mgp_cv_path_gunzip, gunzip, no)
+
+OPTFLAGS=
+AC_SUBST(OPTFLAGS)
+DEPLIBS=
+AC_SUBST(DEPLIBS)
+
+case $host_os in
+freebsd3*|freebsd2.2.6*|freebsd2.2.7*|freebsd2.2.8*)
+       OPTFLAGS="$OPTFLAGS -DUUDECODEOPT=\\\"-s\\\""
+       ;;
+esac
+OPTFLAGS="$OPTFLAGS -DUUDECODE=\\\"$mgp_cv_path_uudecode\\\""
+OPTFLAGS="$OPTFLAGS -DGUNZIP=\\\"$mgp_cv_path_gunzip\\\""
 
 dnl Checks for debugging option.
 AC_MSG_CHECKING(if --enable-debug option specified)
 AC_ARG_ENABLE(debug,
        [  --enable-debug          compile debugging information in.],
-       [mgp_debug="yes"; DEBUGFLAGS="-DDEBUG -g -Wall"],
+       [mgp_debug="yes"; OPTFLAGS="$OPTFLAGS -g -DDEBUG -Wall"],
        [mgp_debug="no"])
 AC_MSG_RESULT($mgp_debug)
-DEBUGFLAGS=${DEBUGFLAGS-"OptimizedCDebugFlags"}
-AC_SUBST(DEBUGFLAGS)
+
+dnl Checks for gif support.
+AC_MSG_CHECKING(if --enable-gif option specified)
+AC_ARG_ENABLE(gif,
+       [  --enable-gif            compile gif support in.],
+       [mgp_gif="yes"; AC_DEFINE(USE_GIF)],
+       [mgp_gif="no"])
+AC_MSG_RESULT($mgp_gif)
+
+dnl Checks for locale option.
+AC_MSG_CHECKING(if --enable-locale option specified)
+AC_ARG_ENABLE(locale,
+       [  --enable-locale         perform setlocale() on invocation.],
+       [mgp_locale="yes"; OPTFLAGS="$OPTFLAGS -DUSE_SETLOCALE"],
+       [mgp_locale="no"])
+AC_MSG_RESULT($mgp_locale)
 
 dnl Checks for libraries.
 LIBS="-lm $LIBS"
@@ -39,25 +71,27 @@ AC_ARG_ENABLE(freetype,
        [mgp_skip_freetype="no"; mgp_use_freetype="yes"])
 AC_MSG_RESULT($mgp_skip_freetype)
  
-OPTFLAGS=
-AC_SUBST(OPTFLAGS)
-DEPLIBS=
-AC_SUBST(DEPLIBS)
 if test "$mgp_use_freetype" = "yes"; then
        AC_MSG_CHECKING(for freetype library/header)
-       for dir in /usr/local/freetype /usr/local; do
+       for dir in /usr/local/freetype /usr/local /opt/freetype /usr/pkg /usr; do
                ac_cv_ft_lib=no
                ac_cv_ft_include=no
-               if test -d $dir/lib -a -f $dir/lib/libttf.so; then
+               shlib1=`echo $dir/lib/libttf.so* | head -1 | sed -e 's/.*\///'`
+               if test x$shlib1 = x; then
+                       $shlib1=no
+               fi
+               if test -d $dir/lib -a -f $dir/lib/$shlib1; then
                        ac_cv_ft_lib="$dir/lib"
-                       ac_cv_ft_libpath="libttf.so"
+                       ac_cv_ft_libpath="$shlib1"
                elif test -d $dir/lib -a -f $dir/lib/libttf.a; then
                        ac_cv_ft_lib="$dir/lib"
                        ac_cv_ft_libpath="libttf.a"
                fi
                if test -d $dir/include -a -f $dir/include/freetype.h; then
                        ac_cv_ft_include="$dir/include"
-               fi
+               elif test -d $dir/include/freetype -a -f $dir/include/freetype/freetype.h; then
+                       ac_cv_ft_include="$dir/include/freetype"
+               fi
                if test "$ac_cv_ft_lib" != "no" -a "$ac_cv_ft_include" != "no"; then
                        LIBS="-L$ac_cv_ft_lib $LIBS"
                        CFLAGS="-I$ac_cv_ft_include $CFLAGS"
@@ -99,20 +133,28 @@ AC_MSG_RESULT($mgp_skip_vflib)
 
 if test "$mgp_use_vflib" = "yes"; then
        AC_MSG_CHECKING(for VFlib library/header)
-       for dir in /usr/local/VFlib /usr/local/vflib /usr/local; do
+       for dir in /usr/local/VFlib /usr/local/vflib /usr/local /usr/pkg /usr; do
                ac_cv_vf_libname=VFlib
                ac_cv_vf_libdir=no
                ac_cv_vf_hdrdir=no
-               if test -d $dir/lib -a -f $dir/lib/libVFlib.so; then
+               shlib1=`echo $dir/lib/libVFlib.so* | head -1 | sed -e 's/.*\///'`
+               shlib2=`echo $dir/lib/libVFlib2.so* | head -1 | sed -e 's/.*\///'`
+               if test x$shlib1 = x; then
+                       $shlib1=no
+               fi
+               if test x$shlib2 = x; then
+                       $shlib2=no
+               fi
+               if test -d $dir/lib -a -f $dir/lib/$shlib1; then
                        ac_cv_vf_libdir="$dir/lib"
-                       ac_cv_vf_libpath="libVFlib.so"
+                       ac_cv_vf_libpath=$shlib1
                elif test -d $dir/lib -a -f $dir/lib/libVFlib.a; then
                        ac_cv_vf_libdir="$dir/lib"
                        ac_cv_vf_libpath="libVFlib.a"
-               elif test -d $dir/lib -a -f $dir/lib/libVFlib2.so; then
+               elif test -d $dir/lib -a -f $dir/lib/$shlib2; then
                        ac_cv_vf_libname=VFlib2
                        ac_cv_vf_libdir="$dir/lib"
-                       ac_cv_vf_libpath="libVFlib2.so"
+                       ac_cv_vf_libpath=$shlib2
                elif test -d $dir/lib -a -f $dir/lib/libVFlib2.a; then
                        ac_cv_vf_libname=VFlib2
                        ac_cv_vf_libdir="$dir/lib"
@@ -157,6 +199,7 @@ if test "$mgp_use_vflib" = "yes"; then
                    /usr/local/lib/VFlib /usr/local/lib/fonts/vf \
                    /usr/local/lib /usr/local/etc /etc \
                    /usr/local/libdata/vflib /usr/local/share/VFlib \
+                   /usr/local/share/VFlib/* \
                    ../../VFlib* ../VFlib* VFlib*; do
                        if test -d $ac_dir -a -f $ac_dir/vfontcap; then
                                ac_cv_vf_fontcap=$ac_dir/vfontcap;
@@ -174,11 +217,35 @@ if test "$mgp_use_vflib" = "yes"; then
        AC_SUBST(mgp_cv_vflib_a)
 fi
 
+if test "$mgp_use_freetype" = "yes"; then
+       AC_MSG_CHECKING(if --enable-freetype-charset16 option specified)
+       AC_ARG_ENABLE(freetype-charset16,
+               [  --enable-freetype-charset16         use freetype for chaset16.],
+               [mgp_use_freetype_c16="yes"],
+               [mgp_use_freetype_c16="no"])
+       AC_MSG_RESULT($mgp_use_freetype_c16)
+
+       if test "$mgp_use_freetype_c16" = "yes"; then
+               AC_DEFINE(FREETYPE_CHARSET16)
+       fi
+fi
+
+for i in /usr/pkg /usr/local; do
+       if test -f $i/include/png.h -a -f $i/lib/libpng.a; then
+               LIBS="$LIBS -L$i/lib"
+               OPTFLAGS="$OPTFLAGS -I$i/include"
+               DEPLIBS="$DEPLIBS $i/lib/libpng.a"
+               AC_CHECK_LIB(png, png_write_init)
+               AC_DEFINE(USE_PNG)
+               break
+       fi
+done
+
 dnl Checks for header files.
 AC_PATH_X
 AC_HEADER_STDC
 AC_HEADER_SYS_WAIT
-AC_CHECK_HEADERS(fcntl.h strings.h sys/file.h unistd.h sys/time.h sys/select.h stdarg.h varargs.h termios.h)
+AC_CHECK_HEADERS(fcntl.h strings.h sys/file.h unistd.h sys/time.h sys/select.h stdarg.h varargs.h termios.h locale.h)
 
 dnl Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
@@ -192,15 +259,16 @@ AC_CHECK_TYPE(u_char, unsigned char)
 dnl Checks for library functions.
 AC_FUNC_MEMCMP
 AC_TYPE_SIGNAL
-AC_CHECK_FUNCS(poll strstr)
+AC_CHECK_FUNCS(poll strstr _setbufend)
 AC_REPLACE_FUNCS(usleep strsep strdup mkstemp snprintf memcmp)
 
 dnl keyword substitution.
 mgp_keywords=`$mgp_cv_path_perl $srcdir/keywords.pl $srcdir/globals.c`
 AC_SUBST(mgp_keywords)
+AC_OUTPUT(Imakefile image/Imakefile sample/Imakefile
+       contrib/mgp2html.pl contrib/mgp2latex.pl contrib/mgpnet mgpembed.pl)
 
-echo "be sure to generate Makefile from Imakefile, using xmkmf -a."
 /bin/rm -f Makefile image/Makefile
 
-AC_OUTPUT(Imakefile image/Imakefile sample/Imakefile
-       contrib/mgp2html.pl contrib/mgp2latex.pl contrib/mgpnet mgpembed.pl)
+echo "be sure to generate Makefile from Imakefile, by xmkmf and make Makefiles"
diff --git a/contrib/eqn2eps.sh b/contrib/eqn2eps.sh
new file mode 100755 (executable)
index 0000000..a0f8089
--- /dev/null
@@ -0,0 +1,22 @@
+#! /bin/sh
+#
+# The script is originary contributed by 
+# Sylvain Pion <Sylvain.Pion@sophia.inria.fr>
+#      modified by Youjiro UO to support of eqn format formura
+#
+# Expected usage:
+#      %filter "eqn2eps.sh eqn1"
+#      1 over sqrt {ax sup 2+bx+c}
+#      %endfilter
+#      %center, image "eqn1.eps" 0 400 400 1
+#
+# temporary filename (without .eps suffix)
+tmp=$1
+
+echo '.EQN' > $tmp.eqn
+echo '.EQ' >> $tmp.eqn
+cat >> $tmp.eqn
+echo '.EN' >> $tmp.eqn
+groff -e $tmp.eqn > $tmp.ps
+ps2epsi $tmp.ps $tmp.eps
+/bin/rm -f $tmp.eqn $tmp.ps 
diff --git a/contrib/mgp-el/COPYING b/contrib/mgp-el/COPYING
new file mode 100644 (file)
index 0000000..d60c31a
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/contrib/mgp-el/README b/contrib/mgp-el/README
new file mode 100644 (file)
index 0000000..aa8bc91
--- /dev/null
@@ -0,0 +1,29 @@
+### mgp.el Ver.0.90 -- convert Magic Point file to LaTeX2e
+
+0. CONTENTS
+
+       o README -- This file.
+       o mgp.el -- Emacs Lisp program to convert mgp file to LaTeX2e.
+       o mgp.sty -- Stype file to be used with the generated LaTeX2e file.
+       o sample.mgp -- Same as distributed with Magic Point.
+       o sample.tex -- LaTeX2e file generated by mgp.el from sample.mgp
+
+
+1. INSTALLATION
+
+1.1 At first you need Emacs Ver.20.X or Mule Ver.2.3.
+
+1.2 Byte compile mgp.el by Emacs or mule, and copy mgp.el and mgp.elc
+to a directory that is in `load-path' of your Emacs.  The directory
+/usr/local/share/emacs/site-lisp/ is a good candidate.
+
+1.3 Copy mgp.sty to a directory that your LaTeX system can find.
+
+
+2. USAGE
+
+2.1 Read your XXX.mpg file into Emacs buffer, and do:
+       M-x mgp-entex-buffer RET
+Then the file XXX.tex is generated.
+
+2.2 Process the generated XXX.tex by your LaTeX system.
diff --git a/contrib/mgp-el/mgp.el b/contrib/mgp-el/mgp.el
new file mode 100644 (file)
index 0000000..82d6687
--- /dev/null
@@ -0,0 +1,686 @@
+;;; mgp.el --- Magic Point tool
+;;; Copyright (C) 1999 Electrotechnical Lab., JAPAN
+
+;; Author: K.Handa <handa@etl.go.jp>
+;; Created: 1999/04/28
+;; Keywords: mgp, Magic Point
+
+;; This file is not part of GNU Emacs, but the same permissions apply.
+;;
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Code:
+
+(eval-and-compile
+
+(or mule-version
+    (error "This program requires Mule feature"))
+
+;; For compatibility between Mule 2.3 and Emacs 20.
+
+(defun mgp-buffer-file-coding-system ()
+  (if (boundp 'buffer-file-coding-system)
+      (symbol-value 'buffer-file-coding-system)
+    (symbol-value 'file-coding-system)))
+
+(or (fboundp 'set-buffer-file-coding-system)
+    (defalias 'set-buffer-file-coding-system 'set-file-coding-system))
+
+(or (fboundp 'coding-system-base)
+    (defun coding-system-base (coding)
+      (cond ((memq coding '(*ctext* *iso-8859-1*)) 'latin-1)
+           ((eq coding '*iso-8859-2*) 'latin-2)
+           ((eq coding '*iso-8859-3*) 'latin-3)
+           ((eq coding '*iso-8859-4*) 'latin-4)
+           ((eq coding '*iso-8859-5*) 'latin-5))))
+
+(or (fboundp 'coding-system-equal)
+    (defalias 'coding-system-equal 'eq))
+
+(or (fboundp 'line-beginning-position)
+    (defun line-beginning-position ()
+      (save-excursion
+       (beginning-of-line)
+       (point))))
+
+(or (fboundp 'line-end-position)
+    (defun line-end-position ()
+      (save-excursion
+       (end-of-line)
+       (point))))
+
+)
+
+(defvar mgp-version "0.90")
+
+(defvar mgp-paper-size "a4")
+(defvar mgp-image-scale-factor 0.95)
+(defvar mgp-landscape t)
+(defvar mgp-lib-directory "/usr/X11R6/lib/X11/mgp")
+(defvar mgp-disable-color t)
+
+(defconst mgp-paper-size-list '("a5" "a4" "b5" "letter" "legal" "executive"))
+(defconst mgp-predefined-color-list
+  '("black" "white" "red" "green" "blue" "yellow" "cyan" "magenta" "gray"))
+(defvar mgp-color-list nil)
+
+(defvar mgp-entex-inbuf nil)
+(defvar mgp-entex-outbuf nil)
+
+(defvar mgp-entex-source nil)
+
+(defun mgp-entex-file (file)
+  (interactive "fMGP source file: ")
+  (setq mgp-entex-source file)
+  (mgp-entex-setup-color-data)
+  (mgp-entex-setup-buffer)
+  (mgp-entex-process-buffer)
+  (switch-to-buffer mgp-entex-outbuf)
+  (goto-char (point-min))
+  (save-buffer))
+
+(defun mgp-entex-buffer ()
+  (interactive)
+  (setq mgp-entex-source (current-buffer))
+  (mgp-entex-setup-color-data)
+  (mgp-entex-setup-buffer)
+  (mgp-entex-process-buffer)
+  (switch-to-buffer mgp-entex-outbuf)
+  (goto-char (point-min))
+  (save-buffer))
+
+(defvar mgp-max-color-value nil)
+
+(defun mgp-entex-setup-color-data ()
+  (if (eq window-system 'x)
+      (setq mgp-max-color-value (car (x-color-values "white")))))
+
+(defmacro mgp-with-output-buffer (&rest body)
+  `(let ((buf (current-buffer)))
+     (or (eq buf mgp-entex-outbuf)
+        (set-buffer mgp-entex-outbuf))
+     (unwind-protect
+        (progn ,@body)
+       (or (eq buf mgp-entex-outbuf)
+          (set-buffer buf)))))
+
+(put 'mgp-with-output-buffer 'lisp-indent-function 0)
+
+(defun mgp-entex-setup-buffer ()
+  (let (filename dir coding)
+    (save-excursion
+      (setq mgp-entex-inbuf (get-buffer-create "*mgp*"))
+      (set-buffer mgp-entex-inbuf)
+      (erase-buffer)
+      (insert "%%\n")
+      (if (bufferp mgp-entex-source)
+         (progn
+           (save-excursion
+             (set-buffer mgp-entex-source)
+             (setq filename (concat (file-name-sans-extension
+                                     (or buffer-file-name (buffer-name)))
+                                    ".tex")
+                   dir default-directory
+                   coding (mgp-buffer-file-coding-system)))
+           (set-buffer-file-coding-system coding)
+           (setq default-directory dir)
+           (insert-buffer mgp-entex-source))
+       (setq filename
+             (concat (file-name-sans-extension mgp-entex-source) ".tex")
+             dir
+             (file-name-directory (expand-file-name mgp-entex-source)))
+       (insert-file-contents (expand-file-name mgp-entex-source))
+       (setq coding (mgp-buffer-file-coding-system))
+       (setq default-directory dir))
+
+      (goto-char (point-min))
+      (while (and (search-forward "\n%include" nil t)
+                 (looking-at " +\\([^ ]+\\)"))
+       (let ((incfile (mgp-entex-get-string-arg))
+             (pos (line-beginning-position))
+             len)
+         (forward-line 1)
+         (delete-region pos (point))
+         (if (or (file-readable-p incfile)
+                 (progn
+                   (setq incfile (expand-file-name incfile mgp-lib-directory))
+                   (file-readable-p incfile)))
+             (progn
+               (message "Inserting file %s..." incfile)
+               (insert-file-contents incfile)))
+         (goto-char (point-min))))
+      (goto-char (point-min))
+      (while (search-forward "\\\n" nil t)
+       (delete-char -2))
+      (goto-char (point-min))
+      (setq mgp-entex-outbuf
+           (get-buffer-create (file-name-nondirectory filename)))
+      (set-buffer mgp-entex-outbuf)
+      (erase-buffer)
+      (setq default-directory dir
+           buffer-file-name filename)
+      (set-buffer-file-coding-system coding))))
+
+(defvar mgp-entex-continue nil)
+(defvar mgp-entex-linehead nil)
+(defvar mgp-entex-prefix "")
+
+(defun mgp-entex-process-buffer ()
+  (message "Converting MGP to LaTeX...")
+  (mgp-entex-init-global-setting)
+  (save-excursion
+    (set-buffer mgp-entex-inbuf)
+    (while (not (or (eobp) (looking-at "^%page")))
+      (mgp-entex-process-preamble)
+      (forward-line 1))
+    (mgp-entex-start-body)
+    (forward-line 1)
+    (let ((page 0)
+         line)
+      (while (not (eobp))
+       (mgp-entex-init-local-setting)
+       (setq page (1+ page))
+       (message "Page %d" page)
+       (setq line 1)
+       (mgp-entex-start-page)
+       (setq mgp-entex-linehead t
+             mgp-entex-prefix "")
+       (while (not (or (eobp) (looking-at "^%page")))
+         (setq line (mgp-entex-process-page line))
+         (forward-line 1))
+       (mgp-entex-finish-page line)
+       (forward-line 1))
+      (mgp-entex-finish-body))))
+
+(defconst mgp-setting-num 128)
+(defvar mgp-global-setting nil)
+(defvar mgp-local-setting nil)
+
+(defun mgp-entex-init-global-setting ()
+  (let ((i 2)
+       (len (* mgp-setting-num 2)))
+    (setq mgp-global-setting (make-vector len nil))
+    (aset mgp-global-setting 1 (list 'font nil))
+    (while (< i len)
+      (aset mgp-global-setting i (list 'font nil))
+      (setq i (1+ i)))))
+
+(defun mgp-entex-init-local-setting ()
+  (let ((len (length mgp-global-setting))
+       (i 0))
+    (if (< (length mgp-local-setting) len)
+       (setq mgp-local-setting (make-vector len nil)))
+    (while (< i len)
+      (aset mgp-local-setting i (copy-sequence (aref mgp-global-setting i)))
+      (setq i (1+ i)))))
+
+(defun mgp-entex-parse-cmd (globalp defaultp index)
+  (save-restriction
+    (narrow-to-region (point) (line-end-position))
+    (while (re-search-forward "[a-z]+" nil t)
+      (let ((func (intern (concat "mgp-entex-cmd-"
+                                 (downcase (match-string 0))))))
+       (if (fboundp func)
+           (funcall func globalp defaultp index)))
+      (skip-chars-forward ",")
+      (or (eobp)
+         (forward-char 1)))))
+
+(defun mgp-entex-process-preamble ()
+  (if (looking-at "^%\\(default\\|tab\\) *")
+      (progn
+       (forward-char 1)
+       (or (eolp)
+           (mgp-entex-parse-cmd 'global nil nil)))))
+
+(defun mgp-entex-start-body ()
+  (mgp-with-output-buffer
+    (insert "%%% This file was generated by mgp.el ")
+    (insert (format "(Ver.%s).\n"  mgp-version))
+    (insert "%%%   Document source: ")
+    (if (bufferp mgp-entex-source)
+       (insert (format "buffer \"%s\"\n" (buffer-name mgp-entex-source)))
+      (insert (format "file \"%s\"\n" mgp-entex-source)))
+    (insert (format "\\documentclass[%spaper%s]{article}\n\\input{mgp.sty}\n"
+                   (if (member mgp-paper-size mgp-paper-size-list)
+                       mgp-paper-size
+                     "a4")
+                   (if mgp-landscape ",landscape" "")))
+    (or mgp-disable-color
+       (progn
+         (insert "\\usepackage{color}\n\\definecolor{gray}{gray}{0.001}")
+         (setq mgp-color-list (cons "gray" mgp-predefined-color-list))))
+    (let ((coding (mgp-buffer-file-coding-system)))
+      (if coding
+         (let ((base (coding-system-base (mgp-buffer-file-coding-system))))
+           (cond ((coding-system-equal base 'latin-1)
+                  (insert "\\usepackage[latin1]{inputenc}\n"))
+                 ((coding-system-equal base 'latin-2)
+                  (insert "\\usepackage[latin2]{inputenc}\n"))
+                 ((coding-system-equal base 'latin-3)
+                  (insert "\\usepackage[latin3]{inputenc}\n"))
+                 ((coding-system-equal base 'latin-5)
+                  (insert "\\usepackage[latin5]{inputenc}\n"))))))
+    (insert "\\begin{document}\n")))
+
+(defun mgp-entex-finish-body ()
+  (mgp-with-output-buffer
+    (insert "\n\\end{document}\n")))
+
+(defun mgp-entex-set-setting (globalp defaultp index prop val)
+  (let ((table (if globalp mgp-global-setting mgp-local-setting)))
+    (or defaultp
+       (setq index (+ mgp-setting-num index)))
+    (plist-put (aref table index) prop val)))
+
+(defun mgp-entex-get-setting (globalp defaultp index prop this-line-only)
+  (let ((table (if globalp mgp-global-setting mgp-local-setting))
+       (limit 0)
+       val)
+    (or defaultp
+       (setq index (+ mgp-setting-num index)
+             limit mgp-setting-num))
+    (if this-line-only
+       (setq limit index))
+    (while (and (>= index limit) (not val))
+      (setq val (plist-get (aref table index) prop))
+      (setq index (1- index)))
+    val))
+
+(defun mgp-entex-get-string-arg ()
+  (skip-chars-forward " \t")
+  (if (= (following-char) ?\")
+      (read (current-buffer))
+    (if (looking-at "[^, \n]+")
+       (progn
+         (goto-char (match-end 0))
+         (match-string 0)))))
+
+(defun mgp-entex-get-number-arg ()
+  (if (looking-at " *[0-9.]+")
+      (let ((num (string-to-int (match-string 0))))
+       (goto-char (match-end 0))
+       num)))
+
+(defun mgp-entex-cmd-default (globalp &rest ignore)
+  (let ((index (mgp-entex-get-number-arg)))
+    (goto-char (match-end 0))
+    (mgp-entex-parse-cmd globalp 'default index)))
+
+(put 'mgp-entex-cmd-default 'mgp-entex-special t)
+
+(defun mgp-entex-cmd-tab (globalp &rest ignore)
+  (let ((index (mgp-entex-get-number-arg)))
+    (goto-char (match-end 0))
+    (mgp-entex-parse-cmd globalp nil index)))
+
+(put 'mgp-entex-cmd-tab 'mgp-entex-special t)
+
+(defvar mgp-mark-position nil)
+(defvar mgp-current-line nil)
+
+(defun mgp-entex-cmd-mark (globalp defaultp index)
+  (setq mgp-mark-position
+       (cons mgp-current-line
+             (mgp-with-output-buffer (line-beginning-position)))))
+
+(defun mgp-entex-cmd-again (globalp defaultp index)
+  (mgp-entex-set-setting globalp defaultp index 'again t))
+
+(defun mgp-entex-cmd-fore (globalp defaultp index)
+  (let ((arg (mgp-entex-get-string-arg)))
+    (if arg
+       (mgp-entex-set-setting globalp defaultp index 'fore arg))))
+
+(defun mgp-entex-cmd-back (globalp defaultp index)
+  (let ((arg (mgp-entex-get-string-arg)))
+    (if arg
+       (mgp-entex-set-setting globalp defaultp index 'back arg))))
+
+(defun mgp-entex-cmd-size (globalp defaultp index)
+  (let ((arg (mgp-entex-get-number-arg)))
+    (if arg
+       (mgp-entex-set-setting globalp defaultp index 'size arg))))
+
+(defun mgp-entex-cmd-center (globalp defaultp index)
+  (mgp-entex-set-setting globalp defaultp index 'align 'center))
+
+(defun mgp-entex-cmd-left (globalp defaultp index)
+  (mgp-entex-set-setting globalp defaultp index 'align 'left))
+
+(defun mgp-entex-cmd-leftfill (globalp defaultp index)
+  (mgp-entex-set-setting globalp defaultp index 'align 'left))
+
+(defun mgp-entex-cmd-right (globalp defaultp index)
+  (mgp-entex-set-setting globalp defaultp index 'align 'right))
+
+(defun mgp-entex-cmd-vgap (globalp defaultp index)
+  (let ((arg (mgp-entex-get-number-arg)))
+    (if arg
+       (mgp-entex-set-setting globalp defaultp index 'vgap arg))))
+
+(defun mgp-entex-cmd-font (globalp defaultp index)
+  (let ((arg (mgp-entex-get-string-arg)))
+    (if arg
+       (mgp-entex-set-setting globalp defaultp index 'font arg))))
+
+(defun mgp-entex-cmd-xfont (globalp defaultp index)
+  (let ((arg (mgp-entex-get-string-arg)))
+    (if arg
+       (mgp-entex-set-setting globalp defaultp index 'font arg))))
+
+(defun mgp-entex-cmd-cont (globalp defaultp index)
+  (mgp-entex-set-setting globalp defaultp index 'cont t))
+
+(defun mgp-entex-cmd-nodefault (globalp defaultp index)
+  (if globalp
+      (error "%nodefault can't be used in preamble"))
+  (let ((len (length mgp-local-setting))
+       (i 2))
+    (aset mgp-local-setting 1 (list 'font nil))
+    (while (< i len)
+      (aset mgp-local-setting i (list 'font nil))
+      (setq i (1+ i)))))
+
+(defun mgp-entex-cmd-bar (globalp defaultp index)
+  (let ((color (mgp-entex-get-string-arg))
+       (width (or (mgp-entex-get-number-arg) 10))
+       (start (or (mgp-entex-get-number-arg) 0))
+       (length (or (mgp-entex-get-number-arg) 100)))
+    (mgp-entex-set-setting globalp defaultp index 'bar
+                          (list color width start length))))
+
+(defun mgp-entex-cmd-image (globalp defaultp index)
+  (let ((arg1 (mgp-entex-get-string-arg)))
+    (if arg1
+       (let ((arg2 (mgp-entex-get-string-arg))
+             (arg3 (mgp-entex-get-string-arg))
+             (arg4 (mgp-entex-get-string-arg))
+             (arg5 (mgp-entex-get-string-arg)))
+;;; SYNTAX for %image is documented as below:    
+;;; %image "imagefile" <numcolor> <xzoomrate> <yzoomrate> <zoomflag>
+;;; %image "imagefile" [<numcolor>] <screensize>
+;;; but it seems the second form should actually be:
+;;; %image "imagefile" [ [<numcolor>] <screensize> ]
+         (if arg4
+             (setq arg2 (and arg2 (string-to-int arg2))
+                   arg3 (and arg3 (string-to-int arg3))
+                   arg4 (and arg4 (string-to-int arg4))
+                   arg5 (and arg5 (string-to-int arg5)))
+           (if arg3
+               (setq arg2 (string-to-int arg2))
+             (setq arg3 arg2 arg2 nil)))
+         (mgp-entex-set-setting globalp defaultp index 'image
+                                (list arg1 arg2 arg3 arg4 arg5))))))
+
+(defun mgp-entex-cmd-prefix (globalp defaultp index)
+  (let ((arg (mgp-entex-get-string-arg)))
+    (if arg
+       (mgp-entex-set-setting globalp defaultp index 'prefix arg))))
+
+(defun mgp-entex-cmd-icon (globalp defaultp index)
+  (let* ((type (mgp-entex-get-string-arg))
+        ;; Currently color and size are just ignored.
+        (color (mgp-entex-get-string-arg))
+        (size (mgp-entex-get-number-arg))
+        (str (cond ((string= type "arc") "$\\bullet$")
+                   ((string= type "box") "$\\Box$")
+                   ((string= type "dia") "$\\Diamond$")
+                   ((string= type "delta1") "$\\bigtriangleup$")
+                   ((string= type "delta2") "$\\bigtriangledown$")
+                   ((string= type "delta3") "$\\triangleright$")
+                   ((string= type "delta4") "$\\triangleleft$")
+                   (t "$\\diamond$"))))
+    (mgp-entex-set-setting globalp defaultp index 'icon str)))
+
+(defconst mgp-entex-special-characters
+  '((?# . "\\#")
+    (?$ . "\\$")
+    (?% . "\\%")
+    (?& . "\\&")
+    (?_ . "\\_")
+    (?@ . "{\\makeatletter@\\makeatother}")
+    (?< . "$<$")
+    (?> . "$>$")
+    (?~ . "\\~{ }")))
+
+(defconst mgp-entex-space-width 4)
+
+(defun mgp-entex-handle-string (str prefix &optional size force-indent)
+  (mgp-with-output-buffer
+    (let ((len (length str))
+         (indent 0)
+         i j)
+      (if prefix
+         (progn
+           (if (string-match "^ +" prefix)
+               (setq indent (match-end 0)
+                     prefix (substring prefix indent)))))
+      (if (and (not force-indent)
+              (= indent 0) (= (length prefix) 0) (= len 0))
+         (if (eq mgp-entex-linehead t)
+             (setq mgp-entex-linehead 'empty))
+       (if (or prefix force-indent)
+           (insert "{"))
+       (if size
+           (mgp-entex-handle-size size))
+       (if (or (> indent 0) (> (length prefix) 0))
+           (insert (format "\\mgpi{%d}{%s}" indent prefix)))
+       (if (string-match "^ +" str)
+           (if (< (match-end 0) len)
+               (progn
+                 (setq i (match-end 0) j i)
+                 (insert (format "\\mgps{%d}" i)))
+             (setq i len j i))
+         (setq i 0 j 0))
+       (while (< i len)
+         (let ((slot (assq (aref str i) mgp-entex-special-characters)))
+           (if slot
+               (progn
+                 (if (< j i)
+                     (insert (substring str j i)))
+                 (insert (cdr slot))
+                 (setq j (1+ i)))))
+         (setq i (1+ i)))
+       (if (< j len)
+           (insert (substring str j)))
+       (setq mgp-entex-linehead nil)))))
+
+(defun mgp-entex-process-page (line)
+  (setq mgp-current-line line)
+  (if (memq (following-char) '(?% ?#))
+      (progn
+       (forward-char 1)
+       (if (or (eolp) (= (preceding-char) ?#) (= (following-char) ?%))
+           nil
+         (mgp-entex-parse-cmd nil 'default line)))
+    (let* ((str (buffer-substring (point) (line-end-position)))
+          (plist (aref mgp-local-setting line))
+          (continued (plist-get plist 'cont)))
+      (if continued
+         (plist-put plist 'cont nil)
+       (mgp-with-output-buffer
+         (cond ((eq mgp-entex-linehead 'empty)
+                (insert "\\nl\n")
+                (setq mgp-entex-linehead t))
+               ((not mgp-entex-linehead)
+                (insert "\\nl}\n")
+                (setq mgp-entex-linehead t)))
+         (setq line (1+ line))))
+      (let (func)
+       (while plist
+         (setq func (intern (concat "mgp-entex-handle-"
+                                    (symbol-name (car plist)))))
+         (if (fboundp func)
+             (funcall func (nth 1 plist)))
+         (setq plist (nthcdr 2 plist))))
+      (let ((indent 0)
+           (len (length str)))
+       (or continued
+           (while (and (< indent len) (= (aref str indent) ?\t))
+             (setq indent (1+ indent))))
+       (if (> indent 0)
+           (mgp-entex-handle-indent indent str)
+         (mgp-entex-handle-string str
+                                  (and (not continued) mgp-entex-prefix))))))
+  line)
+
+(defun mgp-entex-start-page ()
+  (mgp-with-output-buffer
+    (insert "\\parbox{\\hsize}{\n")
+    ))
+
+(defun mgp-entex-finish-page (line)
+  (mgp-with-output-buffer
+    (let ((plist (aref mgp-local-setting line))
+         func)
+      (while plist
+       (setq func (intern (concat "mgp-entex-handle-"
+                                  (symbol-name (car plist)))))
+       (if (fboundp func)
+           (funcall func (nth 1 plist)))
+       (setq plist (nthcdr 2 plist))))
+    (cond ((eq mgp-entex-linehead 'empty)
+          (insert "\\nl\n")
+          (setq mgp-entex-linehead t))
+         ((not mgp-entex-linehead)
+          (insert "\\nl}\n")
+          (setq mgp-entex-linehead t)))
+    (insert "}\n\\newpage\n")
+    (setq mgp-entex-linehead t)))
+
+(defun mgp-entex-handle-again (&rest arg)
+  (mgp-with-output-buffer
+    (if mgp-mark-position
+       (progn
+         ;;(setq line (car mgp-mark-position))
+         (goto-char (cdr mgp-mark-position))
+         (delete-region (point) (point-max))))))
+
+(defun mgp-entex-handle-font (arg)
+  (if arg
+      (mgp-with-output-buffer
+       (insert "\\normalfont")
+       (cond ((string-match "bold-r" arg) (insert "\\bfseries"))
+             ((string-match "bold-[oi]" arg) (insert "\\bfseries\\itshape"))
+             ((string-match "medium-[oi]" arg) (insert "\\itshape")))
+       (insert " "))))
+
+(defun mgp-entex-define-color (arg)
+  (or (member arg mgp-color-list)
+      (and (eq window-system 'x)
+          (let ((color-values (x-color-values arg)))
+            (insert (format "\\definecolor{%s}{rgb}{" arg))
+            (while color-values
+              (insert (format "%.3f" (/ (float (car color-values))
+                                        mgp-max-color-value)))
+              (setq color-values (cdr color-values))
+              (if color-values
+                  (insert ",")))
+            (insert "}")
+            t))))
+
+(defun mgp-entex-handle-back (arg)
+  (or mgp-disable-color
+      (mgp-with-output-buffer
+       (if (string= arg "black")
+           (setq arg "gray"))
+       (if (mgp-entex-define-color arg)
+           (insert (format "\\pagecolor{%s}" arg))))))
+
+(defun mgp-entex-handle-fore (arg)
+  (or mgp-disable-color
+      (mgp-with-output-buffer
+       (if (mgp-entex-define-color arg)
+           (insert (format "\\color{%s}" arg))))))
+
+(defun mgp-entex-handle-size (arg)
+  (mgp-with-output-buffer
+    (cond ((>= arg 10) (insert "\\Huge "))
+         ((>= arg 7) (insert "\\huge "))
+         ((>= arg 6) (insert "\\LARGE "))
+         ((>= arg 5) (insert "\\Large "))
+         ((>= arg 4) (insert "\\large "))
+         ((>= arg 3) (insert "\\normalsize "))
+         (t (insert "\\tiny ")))))
+
+(defun mgp-entex-handle-icon (arg)
+  (mgp-with-output-buffer
+    (insert arg)))
+
+(defun mgp-entex-handle-indent (indent str)
+  (mgp-with-output-buffer
+    (let ((prefix (or (mgp-entex-get-setting nil nil indent 'prefix t) " "))
+         (size (mgp-entex-get-setting nil nil indent 'size t))
+         (icon (mgp-entex-get-setting nil nil indent 'icon t)))
+      (if icon
+         (setq prefix (concat prefix icon)))
+      (mgp-entex-handle-string (substring str indent) prefix size t))))
+
+(defun mgp-entex-handle-prefix (arg)
+  (setq mgp-entex-prefix arg))
+
+(defun mgp-entex-handle-align (arg)
+  (mgp-with-output-buffer
+    (insert
+     (cond ((eq arg 'center) "\\centering ")
+          ((eq arg 'right) "\\raggedleft ")
+          (t "\\raggedright ")))))
+
+(defun mgp-entex-handle-vgap (arg)
+  ;; Currently we don't support it.
+  )
+
+(defun mgp-entex-handle-bar (arg)
+  (mgp-with-output-buffer
+    (cond ((eq mgp-entex-linehead 'empty)
+          (insert "\\nl\n")
+          (setq mgp-entex-linehead t))
+         ((not mgp-entex-linehead)
+          (insert "\\nl}\n")
+          (setq mgp-entex-linehead t)))
+    (insert (format "\\mgpb{%d}{%d}{%d}\n"
+                   (floor (nth 1 arg))
+                   (floor (nth 2 arg))
+                   (floor (nth 3 arg))))))
+
+(defun mgp-entex-handle-image (arg)
+  (let ((file (car arg))
+       ;;(numcolor (nth 1 arg)) ; not supported
+       (xzoom (nth 2 arg))
+       (yzoom (nth 3 arg))
+       (zoomflag (nth 4 arg))
+       (screensize))
+    (setq file (concat (file-name-sans-extension file) ".ps"))
+    (or (file-readable-p file)
+       (setq file (concat (file-name-sans-extension file) ".eps")))
+    (if (file-readable-p file)
+       (mgp-with-output-buffer
+         (if zoomflag
+             (if (and (= yzoom 0) (= xzoom 0))
+                 (insert (format "\\includegraphics{%s}" file))
+               (insert
+                (format "\\scalebox{%f}[%f]{\\includegraphics{%s}}"
+                        (* (/ (float xzoom) 100) mgp-image-scale-factor)
+                        (* (/ (float yzoom) 100) mgp-image-scale-factor)
+                        file)))
+           (insert (format "\\resizebox{\\hsize}{!}{\\includegraphics{%s}}"
+                           file)))))))
+
+\f
+(provide 'mgp)
+
+;; mgp.el ends here
diff --git a/contrib/mgp-el/mgp.sty b/contrib/mgp-el/mgp.sty
new file mode 100644 (file)
index 0000000..b48ad23
--- /dev/null
@@ -0,0 +1,101 @@
+%%% mgp.sty --- style file for a LaTeX file created by mgp.el
+%%% Copyright (C) 1999 Electrotechnical Lab., JAPAN
+
+%% Author: K.Handa <handa@etl.go.jp>
+%% Created: 1999/04/28
+
+%% This file is not part of GNU Emacs, but the same permissions apply.
+%%
+%% GNU Emacs is free software; you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published by
+%% the Free Software Foundation; either version 2, or (at your option)
+%% any later version.
+%%
+%% GNU Emacs is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with GNU Emacs; see the file COPYING.  If not, write to the
+%% Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+%% Boston, MA 02111-1307, USA.
+
+%% Disable special handling of `@'.
+\makeatletter
+%% Copied from slides.cls and modified slightly.
+\def\rmdefault{lcmss}        % no roman
+\def\sfdefault{lcmss}
+\def\ttdefault{lcmtt}
+\def\itdefault{sl}
+\def\sldefault{sl}
+\def\bfdefault{bx}
+\def\ifourteenpt{13.82}
+\def\iseventeenpt{16.59}
+\def\itwentypt{19.907}
+\def\itwentyfourpt{23.89}
+\def\itwentyninept{28.66}
+\def\ithirtyfourpt{34.4}
+\def\ifortyonept{41.28}
+\def\@setfontsize@parms#1{%
+   \lineskip #1\relax%
+   \parskip #1\relax%
+  \baselineskip\baselinestretch\baselineskip%
+  \normalbaselineskip\baselineskip}
+\def\normalsize{%
+      \@setfontsize\normalsize\itwentypt{22\p@}%
+      \@setfontsize@parms{\z@}}
+\def\small{\@setfontsize\small\iseventeenpt{19\p@ plus3\p@}%
+           \@setfontsize@parms{2\p@}}
+\let\footnotesize=\small
+\let\scriptsize=\small
+\def\tiny{\@setfontsize\tiny\ifourteenpt{16\p@ plus2\p@}%
+          \@setfontsize@parms{2pt}}
+\def\large{\@setfontsize\large\itwentyfourpt{26\p@ plus8\p@}%
+           \@setfontsize@parms{2\p@}}
+\def\Large{\@setfontsize\Large\itwentyninept{31\p@ plus10\p@}%
+           \@setfontsize@parms{2\p@}}
+\def\LARGE{\@setfontsize\LARGE\ithirtyfourpt{36\p@ plus10\p@}%
+           \@setfontsize@parms{2\p@}}
+\def\huge{\@setfontsize\huge\ifortyonept{43\p@ plus10\p@}%
+           \@setfontsize@parms{2\p@}}
+\let\Huge\huge
+%% Put 1cm margin at top and bottom.
+\setlength\topmargin{-1in}
+\advance\topmargin by1cm
+\textheight\paperheight\advance\textheight by-2cm
+%% Put 1cm margin at left and right
+\setlength\oddsidemargin{-1in}
+\advance\oddsidemargin by1cm
+\textwidth\paperwidth\advance\textwidth by-2cm
+%% No surplus spaces.
+\setlength\headheight{0pt}
+\setlength\headsep   {0pt}
+\setlength\topskip   {0pt}
+\setlength\footskip  {0pt}
+\setlength\parindent {0pt}
+\pagestretch20mm
+\pagestyle{empty}
+%% Special command for line breaking.
+\def\nl{\hskip0pt minus10mm\nopagebreak[4]\\}
+\newdimen\mgpdimenx
+\newdimen\mgpdimeny
+\newbox\mgpbox
+%% Hanging indent
+\def\mgpi#1#2{\setbox\mgpbox=\hbox{#2\hskip.5mm}%
+\mgpdimenx#1em\divide\mgpdimenx by2\advance\mgpdimenx by\wd\mgpbox%
+\parindent\mgpdimenx\hangindent\mgpdimenx\indent\llap{\box\mgpbox}\ignorespaces}
+%% Horizontal skip
+\def\mgps#1{\mgpdimenx#1em\divide\mgpdimenx by2\hskip\mgpdimenx}
+%% Draw horizontal bar.
+\def\mgpb#1#2#3{%
+\mgpdimeny\textheight\divide\mgpdimeny by1000#1\multiply\mgpdimeny by#1%
+\mgpdimenx\textwidth\divide\mgpdimenx by100\multiply\mgpdimenx by#2%
+\makebox[\mgpdimenx]{}%
+\mgpdimenx\textwidth\divide\mgpdimenx by100\multiply\mgpdimenx by#3%
+\rule{\mgpdimenx}{\mgpdimeny}\\\vskip-10pt minus10pt}
+%% Enable special handling of `@'.
+\makeatother
+%% Some other packages
+\usepackage{latexsym}
+\usepackage{graphics}
diff --git a/contrib/mgp-el/sample.tex b/contrib/mgp-el/sample.tex
new file mode 100644 (file)
index 0000000..d1a7e8b
--- /dev/null
@@ -0,0 +1,180 @@
+%%% This file was generated by mgp.el (Ver.0.90).
+%%%   Document source: file "sample.mgp"
+\documentclass[a4paper,landscape]{article}
+\input{mgp.sty}
+\begin{document}
+\parbox{\hsize}{
+\normalfont \huge \nl
+\nl
+\nl
+\normalfont \centering {MagicPoint\nl}
+\normalfont \nl
+\nl
+\large {Keio University\nl}
+{Yoshifumi Nishida\nl}
+\normalsize {nishida{\makeatletter@\makeatother}sfc.wide.ad.jp\nl}
+\nl
+\large {Type SPC key!!\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}How to Use \nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\Large \mgpi{2}{$\Box$}forward page-$>$ press mouse1 button \nl}
+{\Large \mgpi{2}{$\Box$}backward page-$>$ press mouse3 button \nl}
+{\Large \mgpi{2}{$\Box$}quit -$>$ press q key \nl}
+{\mgpi{1}{}\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Command Line Option \nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\mgpi{4}{-h:}display usage.\nl}
+{\mgpi{4}{-g:}geometry. Set the size of window, and placement.\nl}
+{\mgpi{4}{-o:}Do not override window manager.\nl}
+{\mgpi{4}{-b:}bgcolor. Set background color to bgcolor. (default: black)\nl}
+{\nl}
+\nl
+{\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Place text whereever you like!\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \LARGE \centering {\mgpi{1}{}center\nl}
+{\mgpi{1}{}\nl}
+{\mgpi{1}{}\nl}
+\raggedright {\mgpi{1}{}left\nl}
+{\mgpi{1}{}\nl}
+\raggedleft {\mgpi{1}{}right\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Use any font size as you like!\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\mgpi{1}{}\nl}
+\centering \Huge {\mgpi{1}{}Hello World\nl}
+\huge {\mgpi{1}{}Hello World\nl}
+\Large {\mgpi{1}{}Hello World\nl}
+\large {\mgpi{1}{}Hello World\nl}
+\normalsize {\mgpi{1}{}Hello World\nl}
+\tiny {\mgpi{1}{}Hello World\nl}
+\tiny {\mgpi{1}{}Hello World\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Font is selectable\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\mgpi{1}{}\nl}
+\large \centering {\mgpi{1}{}\nl}
+\normalfont {\mgpi{1}{}This is times-medium-r\nl}
+{\mgpi{1}{}\nl}
+\normalfont\itshape {\mgpi{1}{}This is times-medium-i\nl}
+{\mgpi{1}{}\nl}
+\normalfont\bfseries {\mgpi{1}{}This is times-bold-r\nl}
+{\mgpi{1}{}\nl}
+\normalfont\bfseries\itshape {\mgpi{1}{}This is times-bold-i\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Control can be mixed\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\mgpi{1}{}\nl}
+\normalfont \large {\mgpi{1}{}This is a\normalfont \LARGE Test\normalfont \Large message\nl}
+\normalfont \Large {\mgpi{1}{}\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Automatic folding of long line!\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\Large \mgpi{2}{$\Box$}Hello, this is MagicPoint. I can properly handle the folding opeation of very long line, of course english word-wise.  The source code of this line is made up by a single line.\nl}
+{\large \mgpi{6}{$\bullet$}This is the next line. Even if the indentation changes, I can handle this!  Yey!\nl}
+{\Large \mgpi{2}{$\Box$}You can also connect the line using backslash.  Yes, UNIX tradition.\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Place inline images!\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\normalfont \Large \centering \nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Special effects!\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\mgpi{1}{}\nl}
+\LARGE \centering {\mgpi{1}{}test message\nl}
+{\mgpi{1}{}\nl}
+{\mgpi{1}{}test message\nl}
+{\mgpi{1}{}\nl}
+{\mgpi{1}{}test message\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Pause\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\Large \mgpi{2}{$\Box$}tap space bar (twice) to proceed.\nl}
+{\mgpi{1}{}\nl}
+\centering {\mgpi{1}{}Happy hacking!\nl}
+{\mgpi{1}{}Happy hacking!\nl}
+{\mgpi{1}{}Happy hacking!\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Grab command output into foils\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\Large \mgpi{2}{$\Box$}ls -l /kernel /bsd\nl}
+{\mgpi{1}{}\nl}
+\normalsize {\mgpi{5}{}\nl}
+{\Large \mgpi{2}{$\Box$}echo "this is test" | rev\nl}
+{\mgpi{5}{}\nl}
+{\mgpi{5}{}this is test\nl}
+{\mgpi{5}{}\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Subprocess (multimedia!)\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\mgpi{1}{}\nl}
+{\Large \mgpi{2}{$\Box$}Invoke xanim/mpegplay for multimedia presentation! :-)\nl}
+{\mgpi{1}{}\nl}
+{\Large \mgpi{2}{$\Box$}No duplicated subprocess for one declaration.\nl}
+{\Large \mgpi{2}{$\Box$}Geometry can be presentation-screen relative.\nl}
+{\Large \mgpi{2}{$\Box$}xeyes will vanish if you switch the page.\nl}
+{\mgpi{1}{}\nl}
+}
+\newpage
+\parbox{\hsize}{
+\normalfont \raggedright \tiny \nl
+\huge {\mgpi{1}{}Have a nice day!\nl}
+\tiny \mgpb{10}{0}{100}
+{\mgpi{1}{}\nl}
+\normalfont \Large {\Large \mgpi{2}{$\Box$}Visit\nl}
+{\large \mgpi{6}{$\bullet$}\normalfont http://www.mew.org/mgp/\nl}
+\normalfont {\Large \mgpi{2}{$\Box$}for upcoming information.\nl}
+}
+\newpage
+
+\end{document}
diff --git a/contrib/mgp-mode.el b/contrib/mgp-mode.el
new file mode 100644 (file)
index 0000000..dacae5b
--- /dev/null
@@ -0,0 +1,455 @@
+;; mgp-mode.el 
+;;     --- A mode for editing MagicPoint files
+;;
+;;  Tested on Mule 2.3, based on GNU Emacs 19.28
+
+
+;; Copyright (C) 1999  Hirotsugu Kakugawa
+
+;; Maintainer: Hirotsugu Kakugawa (h.kakugawa@computer.org)
+;;   1 Apr 1999 1.00  First Implementation
+;;   2 Apr 1999 1.01  Added mgp-direc-emph. Changed key bindings.
+;;   2 Apr 1999 1.10  Added jumping to error line in MagicPoint file
+;;   4 Apr 1999 1.20  Added directive completion input feature
+;;   5 Apr 1999 1.21  Added starting MagicPoint at the current page 
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+;; In your ~/.emacs (for example)
+;; 
+;;    (setq auto-mode-alist
+;;          (cons '("\\.mgp?\\'" . mgp-mode) 
+;;            auto-mode-alist))
+;;    (autoload 'mgp-mode "mgp-mode")
+;;    (setq mgp-options "-g 800x600")
+;;    (setq mgp-window-height 6)
+;;
+
+
+;; Editting Commands:
+;;
+;;   KEY SEQUENCE    DESCRIPTION
+;;   ------------    ----------------------------------------------------------
+;;   M-x mgp-mode    Change the mode of current buffer to Magic-Point mode
+;;   C-c C-v         Run MagicPoint for the current buffer.
+;;                   If prefix argument with explicit numbers are given, the 
+;;                   specified page number is displayed as an inital page.
+;;                   If prefix argument without numbe (only 'C-u') is given,
+;;                   the page where the cursor is displayed.
+;;                       Example 1: C-c C-v  ==> the first page
+;;                       Example 2: C-u C-c C-v  ==> the current page
+;;                       Example 3: C-u 7 C-c C-v  ==> the seventh page
+;;   C-x ` or C-c `  Jump the cursor to the error line in the MagicPoint file.
+;;   C-c C-c         Kill the running MagicPoint (if any).
+;;   M-TAB           Completing input. If the character at the beginning of 
+;;                   line is %, MagicPoint directives are completed. Othewise,
+;;                   ISPELL is invoked to complete a word.
+;;   C-c C-f         Insert the "fore" directive.
+;;   C-c C-b         Insert the "back" directive.
+;;   C-c C-p         Insert the "page" directive.
+;;   C-c C-l         Insert the "lcutin" directive.
+;;   C-c C-r         Insert the "rcutin" directive.
+;;   C-c C-i         Insert the "image" directive.      
+;;   C-c C-e         Insert a sequence of directives to emphasizing text.
+;;   C-c c           Insert the "center" directive.
+;;   C-c l           Insert the "leftfill" directive.
+;;   C-c L           Insert the "left-line" directive.
+;;   C-c r           Insert the "right-line" directive.
+;;   C-c f           Insert the "font" directive.
+;;   C-c b           Insert the "bimage" directive.
+;;   C-c e           Insert the "embed, endembed" directive sequnce.
+;;   C-c i           Insert the "icon" directive.
+;;   C-c p           Insert the "pause" directive.
+;;   C-c a           Insert the "again" directive.
+;;   C-c m           Insert the "mark" directive.
+;;   C-c n           Insert the "nodefault" directive.
+;;   C-c s           Insert the "size" directive.
+;;   C-c B           Insert the "bar" directive.
+;;   C-c C           Insert the "cont" directive.
+;;   C-c G           Insert the "bgrad" directive.
+;;   C-c P           Insert the "prefix" directive.
+;;   C-c S           Insert the "system" directive.
+;;   C-c F           Insert the "filter, endfilter" directive sequence.
+
+
+;;  Variables for customization
+;;   NAME                     DISCRIPTION (buffer local var. is marked *)
+;;   --------------------     ---------------------------------------------
+;;   mgp-program               MagicPoint program name
+;;   mgp-options              *Command line option for MagicPoint
+;;   mgp-directives-optional   List of directives for input completion
+;;   mgp-window-height         Height of window for output of MagicPoint
+;;   mgp-page-separator       *String inserted before %page directive
+;;   mgp-emph-color           *Color name for emphasized text, C-c C-e 
+;;   mgp-emph-color-normal    *Color name for unemphasizing text, C-c C-e 
+;;
+
+
+(require 'compile)
+
+;; Program name of MagicPoint 
+(defvar  mgp-program "mgp"
+  "*MagicPoint program name")
+
+;; Command line option for MagicPoint
+(defvar  mgp-options nil
+  "*MagicPoint optional arguments. nil or  string. Buffer local.")
+
+;; Height of MagicPoint message window
+(defvar mgp-window-height nil
+  "*Number of lines of a MagicPoint window.  If nil, use Emacs default.")
+
+;; MagicPoint directive alist for completing input
+(defvar mgp-directives
+  '("size" "fore" "back" "bgrad" "ccolor" "left" "leftfill" "center" "right" 
+    "shrink" "lcutin" "rcutin" "cont" "nodefault" "xfont" "vfont" 
+    "tfont" "tfont0" "bar" "image" "prefix" "icon" "bimage" "default"
+    "tab" "tabprefix" "page" "vgap" "hgap" "pause" "mark" "again" 
+    "system" "xsystem" "filter" "endfilter" "vfcap" "tfdir" "deffont" 
+    "font" "embed" "endembed" "noop" "linestart" "lineend" "quality")
+  "*List of MagicPoint directives for completing input.")
+(defvar mgp-directives-optional nil
+  "*List of optional MagicPoint directives for completing input. For customization.")
+
+;; Style
+(defvar mgp-page-separator "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
+  "Page separator string.")
+(defvar mgp-emph-color "red"
+  "The text color name for emphasized words, for mgp-direc-emph function.")
+(defvar mgp-emph-color-normal "black"
+  "The text color name for non-emphasized words, for mgp-direc-emph function.")
+
+
+
+;; History
+(defvar mgp-history nil
+  "History of mgp commands.")
+
+;; Abbrev Table
+(defvar mgp-mode-abbrev-table nil
+  "Abbrev table used while in mgp mode.")
+(define-abbrev-table 'mgp-mode-abbrev-table ())
+
+;; Directive Completion
+(defvar mgp-directive-alist nil
+  "Alist of MagicPoint directives.")
+(if mgp-directive-alist
+    ()
+  (setq mgp-directive-alist 
+       (mapcar (function (lambda (direc) (list direc)))
+               (sort (append mgp-directives mgp-directives-optional) 
+                     'string<))))
+
+;; Syntax Table
+(defvar mgp-mode-syntax-table nil
+  "Syntax table used while in mgp mode.")
+(if mgp-mode-syntax-table
+    ()
+  (setq mgp-mode-syntax-table (make-syntax-table))
+  (modify-syntax-entry ?% ".   " mgp-mode-syntax-table)
+  (modify-syntax-entry ?\" ".   " mgp-mode-syntax-table)
+  (modify-syntax-entry ?\\ ".   " mgp-mode-syntax-table)
+  (modify-syntax-entry ?' "w   " mgp-mode-syntax-table))
+
+;; Mode Map
+(defvar mgp-mode-map nil
+  "Keymap for Mgp (MagicPoint) mode.
+Many other modes, such as Mail mode, Outline mode and Indented Mgp mode,
+inherit all the commands defined in this map.")
+(if mgp-mode-map
+    ()
+  (setq mgp-mode-map (make-sparse-keymap))
+  (define-key mgp-mode-map "\t" 'tab-to-tab-stop)
+  (define-key mgp-mode-map "\e\t" 'mgp-complete-word)
+  (define-key mgp-mode-map "\C-c\C-v" 'mgp-run-mgp)
+  (define-key mgp-mode-map "\C-c\C-c" 'kill-compilation)
+  (define-key mgp-mode-map "\C-c`"    'next-error)
+  (define-key mgp-mode-map "\C-x`"    'next-error)
+  (define-key mgp-mode-map "\C-c\C-f" 'mgp-direc-fore)
+  (define-key mgp-mode-map "\C-c\C-b" 'mgp-direc-back)
+  (define-key mgp-mode-map "\C-c\C-p" 'mgp-direc-page)
+  (define-key mgp-mode-map "\C-c\C-l" 'mgp-direc-lcutin)
+  (define-key mgp-mode-map "\C-c\C-r" 'mgp-direc-rcutin)
+  (define-key mgp-mode-map "\C-c\C-i" 'mgp-direc-image)
+  (define-key mgp-mode-map "\C-c\C-e" 'mgp-direc-emph)
+  (define-key mgp-mode-map "\C-cc" 'mgp-direc-center-line)
+  (define-key mgp-mode-map "\C-cl" 'mgp-direc-leftfill)
+  (define-key mgp-mode-map "\C-cL" 'mgp-direc-left-line)
+  (define-key mgp-mode-map "\C-cr" 'mgp-direc-right-line)
+  (define-key mgp-mode-map "\C-cf" 'mgp-direc-font)
+  (define-key mgp-mode-map "\C-cb" 'mgp-direc-bimage)
+  (define-key mgp-mode-map "\C-ce" 'mgp-direc-embed)
+  (define-key mgp-mode-map "\C-ci" 'mgp-direc-icon)
+  (define-key mgp-mode-map "\C-cp" 'mgp-direc-pause) 
+  (define-key mgp-mode-map "\C-ca" 'mgp-direc-again) 
+  (define-key mgp-mode-map "\C-cm" 'mgp-direc-mark) 
+  (define-key mgp-mode-map "\C-cn" 'mgp-direc-nodefault)
+  (define-key mgp-mode-map "\C-cs" 'mgp-direc-size)
+  (define-key mgp-mode-map "\C-cB" 'mgp-direc-bar)
+  (define-key mgp-mode-map "\C-cC" 'mgp-direc-cont)
+  (define-key mgp-mode-map "\C-cG" 'mgp-direc-bgrad)
+  (define-key mgp-mode-map "\C-cP" 'mgp-direc-prefix) 
+  (define-key mgp-mode-map "\C-cS" 'mgp-direc-system)
+  (define-key mgp-mode-map "\C-cF" 'mgp-direc-filter))
+
+;; MagicPoint mode
+(defun mgp-mode ()
+  "Major mode for editing MagicPoint files.
+
+Special commands:
+\\{mgp-mode-map}
+Turning on Mgp mode calls the value of the variable `mgp-mode-hook',
+if that value is non-nil.
+
+Variables for customization
+  NAME                     DISCRIPTION (buffer local var. is marked *)
+  --------------------     ---------------------------------------------
+   mgp-program               MagicPoint program name
+   mgp-options              *Command line option for MagicPoint
+   mgp-directives-optional   List of directives for input completion
+   mgp-window-height         Height of window for output of MagicPoint
+   mgp-page-separator       *String inserted before %page directive
+   mgp-emph-color           *Color name for emphasized text, C-c C-e 
+   mgp-emph-color-normal    *Color name for unemphasizing text, C-c C-e 
+"
+  (interactive)
+  (kill-all-local-variables)
+  (use-local-map mgp-mode-map)
+  (setq mode-name "MagicPoint")
+  (setq major-mode 'mgp-mode)
+  (setq local-abbrev-table mgp-mode-abbrev-table)
+  (set-syntax-table mgp-mode-syntax-table)
+  (make-local-variable 'mgp-options)
+  (make-local-variable 'mgp-page-separator)
+  (make-local-variable 'mgp-emph-color)
+  (make-local-variable 'mgp-emph-color-normal)
+  (run-hooks 'mgp-mode-hook))
+
+
+;; Inserting Directives
+
+(defun mgp-direc-center-line ()
+  (interactive)
+  (mgp-insert-directive "center"))
+(defun mgp-direc-left-line ()
+  (interactive)
+  (mgp-insert-directive "left"))
+(defun mgp-direc-leftfill ()
+  (interactive)
+  (mgp-insert-directive "leftfill"))
+(defun mgp-direc-right-line ()
+  (interactive)
+  (mgp-insert-directive "right"))
+(defun mgp-direc-image ()
+  (interactive)
+  (mgp-insert-directive "image" ""))
+(defun mgp-direc-fore ()
+  (interactive)
+  (mgp-insert-directive "fore" ""))
+(defun mgp-direc-back ()
+  (interactive)
+  (mgp-insert-directive "back" ""))
+(defun mgp-direc-lcutin ()
+  (interactive)
+  (mgp-insert-directive "lcutin"))
+(defun mgp-direc-rcutin ()
+  (interactive)
+  (mgp-insert-directive "rcutin"))
+(defun mgp-direc-cont ()
+  (interactive)
+  (mgp-insert-directive "cont"))
+(defun mgp-direc-nodefault ()
+  (interactive)
+  (mgp-insert-directive "nodefault"))
+(defun mgp-direc-bar ()
+  (interactive)
+  (mgp-insert-directive "bar" t))
+(defun mgp-direc-pause ()
+  (interactive)
+  (mgp-insert-directive "pause"))
+(defun mgp-direc-font ()
+  (interactive)
+  (mgp-insert-directive "font" ""))
+(defun mgp-direc-noop ()
+  (interactive)
+  (mgp-insert-directive "noop"))
+(defun mgp-direc-system ()
+  (interactive)
+  (mgp-insert-directive "system" ""))
+(defun mgp-direc-bgrad ()
+  (interactive)
+  (mgp-insert-directive "bgrad" t))
+(defun mgp-direc-size ()
+  (interactive)
+  (mgp-insert-directive "size" t))
+(defun mgp-direc-prefix ()
+  (interactive)
+  (mgp-insert-directive "prefix" ""))
+(defun mgp-direc-icon ()
+  (interactive)
+  (mgp-insert-directive "icon" t))
+(defun mgp-direc-bimage ()
+  (interactive)
+  (mgp-insert-directive "bimage" ""))
+(defun mgp-direc-mark ()
+  (interactive)
+  (mgp-insert-directive "mark"))
+(defun mgp-direc-again ()
+  (interactive)
+  (mgp-insert-directive "again"))
+
+(defun mgp-insert-directive (dirc &optional arg)
+  (let ((pos-eol (save-excursion
+                  (end-of-line)
+                  (point))))
+    (beginning-of-line)
+    (if (looking-at "%")
+       (if (re-search-forward "[a-zA-Z]" pos-eol t)
+           (progn
+             (end-of-line)
+             (insert ", "))
+         (beginning-of-line)
+         (forward-char 1))
+      (insert "%")))
+  (insert dirc)
+  (if arg
+      (if (stringp arg)
+         (insert (concat " " "\"" arg "\""))
+       (insert " ")
+       (backward-char 1))))
+
+(defun mgp-direc-page ()
+  (interactive)
+  (insert mgp-page-separator)
+  (insert "\n%page\n"))
+
+(defun mgp-direc-filter ()
+  (interactive)
+  (mgp-insert-directive2 "filter"))
+(defun mgp-direc-embed ()
+  (interactive)
+  (mgp-insert-directive2 "embed"))
+(defun mgp-insert-directive2 (direc)
+  (insert (concat "%" direc "\n%end" direc "\n")))
+
+(defun mgp-direc-emph (n)
+  (interactive "P")
+  (let ((cn
+        (concat "%" (if n "cont, " "") "fore "))
+       (c1 (if mgp-emph-color 
+               mgp-emph-color ""))
+       (c2 (if mgp-emph-color-normal 
+               mgp-emph-color-normal  "")))
+    (insert (concat cn "\"" c1 "\"\n\n"))
+    (insert (concat cn "\"" c2 "\"\n"))
+    (previous-line 2)))
+
+
+;; Running MagicPoint
+
+(defun mgp-run-mgp (command-args)
+  (interactive
+   (list (let ((page-opt ""))
+          (if current-prefix-arg
+              (setq page-opt 
+                    (concat " -p " 
+                            (mgp-current-page-position current-prefix-arg) 
+                            " ")))
+          (read-from-minibuffer 
+           "Run MagicPoint: "
+           (concat mgp-program " " mgp-options page-opt)
+           nil nil 'mgp-history))))
+  (if (buffer-modified-p)
+      (if (y-or-n-p "MagicPoint document is modified. Save it? ")
+         (save-buffer)))
+  (if (buffer-file-name (current-buffer))
+      (let ((compilation-window-height mgp-window-height))
+       (compile-internal 
+        (concat command-args " " 
+                (file-name-nondirectory (buffer-file-name (current-buffer))))
+        "No more errors" "MagicPoint"))))
+
+(defun mgp-current-page-position (arg)
+  (if (numberp arg)
+      (if (<= arg 0)
+         1
+       (let ((total (mgp-total-pages)))
+         (if (< arg total)
+             arg
+           total)))
+    (save-excursion
+      (end-of-line)
+      (let ((bound (point))
+           (page 0))
+       (goto-char (point-min))
+       (while (search-forward "\n%page" bound t)
+         (setq page (+ page 1)))
+       (number-to-string (if (= page 0) 1 page))))))
+
+(defun mgp-total-pages ()
+  (save-excursion
+    (let ((pages 0))
+      (goto-char (point-min))
+      (while (search-forward "\n%page" (point-max) t)
+       (setq pages (+ pages 1)))
+      pages)))
+
+
+;; Completion 
+
+(defun mgp-complete-word ()
+  "Perform completion on a MagicPoint directive or a word preceding point."
+  (interactive)
+  (if (not (save-excursion
+            (beginning-of-line)
+            (looking-at "%")))
+      (ispell-complete-word)
+    (if (save-excursion 
+         (goto-char (max (point-min) (- (point) 1)))
+         (= (char-syntax (following-char)) ?\w))
+       (let* ((end (point))
+              (beg (save-excursion
+                     (backward-word 1)
+                     (while (= (char-syntax (following-char)) ?\')
+                       (forward-char 1))
+                     (point)))
+              (pattern (buffer-substring beg end)))
+         (mgp-complete-directive pattern))
+      (mgp-complete-directive ""))))
+
+(defun mgp-complete-directive (pattern)
+  (let ((completion (try-completion pattern mgp-directive-alist)))
+    (cond ((eq completion t)
+          (message "Sole completion"))
+         ((null completion)
+          (message "Can't find completion for \"%s\"" pattern)
+          (ding))
+         ((not (string= pattern completion))
+          (delete-region beg end)
+          (insert completion))
+         (t
+          (message "Making completion list...")
+          (let* ((lizt (all-completions pattern mgp-directive-alist))
+                 (new))
+            (while lizt
+              (setq new (cons (car lizt) new))
+              (setq lizt (cdr lizt)))
+            (setq lizt (nreverse new))
+            (with-output-to-temp-buffer "*Completions*"
+              (display-completion-list lizt)))
+          (message "Making completion list...%s" "done")))))
+
+;;; mgp-mode.el ends here
index 38b92cc..b4da1a8 100644 (file)
@@ -2,7 +2,7 @@
 
 # mgp2html.pl
 # converts MagicPoint input file to simple dumb html file.
-# $Id: mgp2html.pl.in,v 1.9 1998/08/26 05:30:12 itojun Exp $
+# $Id: mgp2html.pl.in,v 1.12 1999/08/30 08:20:15 itojun Exp $
 #
 # Copyright (C) 1997 and 1998 WIDE Project.  All rights reserved.
 # 
@@ -40,8 +40,42 @@ $page = -1;
 $line = 0;
 $doimage = 1;
 $nodefault = 0;
-$ignoremode = 0;
 $indent = 0;
+$cont = 0;
+$colortext = "";
+$colorbg = "";
+$colorlink = "";
+$colorvflink = "";
+$mgpdefaultfontsize = 5;
+$mgpfontsize = -1;
+$htmldefaultfontsize = -1;
+$htmlfontsize = -1;
+$htmlfontsizemin = 1;
+$htmlfontsizemax = 9;
+$htmlfontcol = "";
+$colormode = 0;
+$colorlast = "";
+$infont = 0;
+$filtermode = 0;
+$filtercmd = "";
+$filterinput = "";
+
+while ($_ = $ARGV[0], /^-/) {
+       shift;
+       last if /^--$/;
+       if (/^-c/)        { $colormode = 1; next; }
+       if (/^-text$/)    { $colortext = shift; next; }
+       if (/^-link$/)    { $colorlink = shift; next; }
+       if (/^-vlink$/)   { $colorvlink = shift; next; }
+       if (/^-bgcolor$/) { $colorbg = shift; next; }
+       if (/^-f$/)       { $mgpdefaultfontsize = shift; next; }
+       if (/^-fh$/)      { $htmldefaultfontsize = shift; next; }
+       if (/^-fhmin$/)   { $htmlfontsizemin = shift; next; }
+       if (/^-fhmax$/)   { $htmlfontsizemax = shift; next; }
+}
+$fontsize = $defaultfontsize;
+$mgpfontsize = $mgpdefaultfontsize;
+$| = 1;
 
 &prologue;
 while (<>) {
@@ -51,10 +85,19 @@ while (<>) {
 
        if ($_ eq '' || $_ =~ /^[^%]/) {
                $line++;
+               $cont = 0 if ($cont == 2);
+               $cont = 2 if ($cont == 1);
                if ($default[$line] && !$nodefault) {
                        &cmds($default[$line]);
                }
-               next if ($ignoremode);
+               if ($filtermode) {
+                       if ($filterinput eq "") {
+                               $filterinput = $_;
+                       } else {
+                               $filterinput = $filterinput . "\n" . $_;
+                       }
+                       next; 
+               }
                next if ($page == -1);
                &output($_);
                next;
@@ -72,6 +115,7 @@ sub cmds {
 
        # special directives
        if (/^%page/i) {
+               &fontreset;
                if ($page != -1) {
                        &alignreset;
                        &pageepilogue;
@@ -81,6 +125,9 @@ sub cmds {
                &pageprologue;
                $line = 0;
                $nodefault = 0;
+               $htmlfontsize = $htmldefaultfontsize;
+               $mgpfontsize = $mgpdefaultfontsize;
+               $fontchange;
                next;
        } elsif (/^%default/i) {
                $x = (split(/\s+/, $_))[1];
@@ -115,14 +162,26 @@ sub cmds {
                        }
                } elsif ($dir[0] eq 'nodefault') {
                        $nodefault++;
-               } elsif ($dir[0] =~ /^(left|right|center)$/) {
+               } elsif ($dir[0] =~ /^(left|leftfill|right|center)$/) {
                        $dir[0] =~ tr/A-Z/a-z/;
+                       &fontreset;
                        &alignreset;
                        &alignmode($dir[0]);
+                       &fontchange;
                } elsif ($dir[0] =~ /^filter$/) {
-                       $ignoremode = 1;
+                       &filter;
                } elsif ($dir[0] =~ /^endfilter$/) {
-                       $ignoremode = 0;
+                       &endfilter;
+               } elsif ($dir[0] =~ /^cont$/) {
+                       $cont = 1;
+               } elsif ($dir[0] =~ /^fore/) {
+                       $dir[1] =~ s/\"//g;
+                       $htmlfontcol = $dir[1];
+                       &fontchange if ($colormode == 1);
+               } elsif ($dir[0] =~ /^size/) {
+                       $dir[1] =~ s/\"//g;
+                       $mgpfontsize = $dir[1];
+                       &fontchange;
                } elsif (grep($dir[0] eq $_, @keywords)) {
                        # unsupported directive with 1 parameter
                } else {
@@ -132,13 +191,24 @@ sub cmds {
 }
 
 sub prologue {
-       print <<EOF;
-<HTML>
-<BODY>
-EOF
+       print "<HTML>\n";
+       print "<BODY";
+       print " TEXT=" . $colortext    if ($colortext ne '');
+       print " BGCOLOR=" . $colorbg   if ($colorbg ne '');
+       print " LINK=" . $colorlink    if ($colorlink ne '');
+       print " VLINK=" . $colorvlink  if ($colorvlink ne '');
+       print ">\n";
+       if ($htmldefaultfontsize > 0) {
+               print "<FONT SIZE=";
+               print $htmldefaultfontsize;
+               print ">\n";
+       }
 }
 
 sub epilogue {
+       if ($htmldefaultfontsize > 0){
+               print "</FONT>\n";
+       }
        print <<EOF;
 </BODY>
 </HTML>
@@ -152,6 +222,7 @@ EOF
 }
 
 sub pageepilogue {
+       &output_eol;
        $page++;
        &doindent(0);
        print <<EOF
@@ -167,19 +238,37 @@ sub output {
                $i++;
                $str = substr($str, 1);
        }
-       &doindent($i);
-       if (length($str)) {
-               if ($indent) {
-                       print "\t" x $indent . "<LI>" . $str . "\n";
+       if ($cont == 0) {
+               &output_eol;
+               &doindent($i); 
+               if (length($str)) {
+                       $str =~ s/http:\/\/\S*/<A HREF=$&>$&<\/A>/g;
+                       if ($indent) {
+                               print "\t" x $indent . "<LI>" . $str;
+                               $endline = "\n";
+                       } else {
+                               print $str;
+                               $endline = "<BR>\n";
+                       }
+                       $outputsomething++;
                } else {
-                       print $str . "<BR>\n";
+                       $endline = "<BR>\n";
                }
-               $outputsomething++;
        } else {
-               print "<BR>\n";
+               $endline = "";
+               if (length($str)) {
+                       $str =~ s/http:\/\/\S*/<A HREF=$&>$&<\/A>/g;
+                       print $str;
+                       $outputsomething++;
+               }
        }
 }
 
+sub output_eol {
+       print $endline;
+       $endline = "";
+}
+
 sub doindent {
        local($level) = @_;
 
@@ -201,6 +290,8 @@ sub alignreset {
 
        if ($alignmode eq 'left') {
                print "</DIV>\n";
+       } elsif ($alignmode eq 'leftfill') {
+               print "</DIV>\n";
        } elsif ($alignmode eq 'right') {
                print "</DIV>\n";
        } elsif ($alignmode eq 'center') {
@@ -208,7 +299,6 @@ sub alignreset {
        } else {
                die "unknown alignment $alignmode\n";
        }
-
        $alignmode = '';
 }
 
@@ -218,6 +308,8 @@ sub alignmode {
        $alignmode = $mode;
        if ($alignmode eq 'left') {
                print "<DIV ALIGN=LEFT>\n";
+       } elsif ($alignmode eq 'leftfill') {
+               print "<DIV ALIGN=LEFT>\n";
        } elsif ($alignmode eq 'right') {
                print "<DIV ALIGN=RIGHT>\n";
        } elsif ($alignmode eq 'center') {
@@ -227,3 +319,72 @@ sub alignmode {
        }
        $outputsomething = 0;
 }
+
+sub filter {
+       $filtercmd = "";
+       for ($i = 1; $i < scalar(@dir); $i++) {
+               $dir[$i] =~ s/\\/\\\\/g;
+               if ($i == 1) {
+                       $dir[$i] =~ s/^\"//;
+               } elsif ($i == scalar(@dir) - 1) {
+                       $dir[$i] =~ s/\"$//;
+               } else {
+                       $dir[$i] =~ s/\"/\\"/g;
+               }
+               $filtercmd = $filtercmd . " " . $dir[$i];
+       }
+       $filtermode = 1;
+}
+
+sub endfilter {
+       if ($filterinput eq '') {
+       } else {
+               $filterinput =~ s/\\/\\\\/g;
+               $filterinput =~ s/"/\\"/g;
+               $filtercmd = "echo \"" . $filterinput . "\""
+                               . " | " . $filtercmd;
+       }
+       &output_eol;
+       print "<PRE>\n";
+       system($filtercmd);
+       print "</PRE>\n";
+       $filterinput = "";
+       $filtermode = 0;
+}
+
+sub fontchange {
+       local($fs, $fsh);
+       &fontreset;
+       if ($mgpdefaultfontsize > 0) {
+               $fs = $mgpfontsize - $mgpdefaultfontsize;
+       } else {
+               $fs = 0;
+       }
+       if ($htmldefaultfontsize > 0) {
+               $fsh = $fs + $htmldefaultfontsize;
+               $fs = $htmlfontsizemin if ($fsh < $htmlfontsizemin);
+               $fs = $htmlfontsizemax if ($fsh > $htmlfontsizemax);
+       }
+       if (($fs != 0) || (($colormode == 1) && ($colorlast ne $htmlfontcol))){
+               print "<FONT";
+               if ($fs != 0) {
+                       print " SIZE=";
+                       print "+" if ($fs >= 0);
+                       print $fs;
+               }
+               if (($colormode == 1) && ($colorlast ne $htmlfontcol)) {
+                       print " COLOR=\"" . $htmlfontcol . "\"";
+                       $colorlast = $htmlfontcol;
+               }
+               print ">";
+               $infont = 1;
+       }
+}
+
+sub fontreset {
+       $colorlast = "";
+       if ($infont == 1) {
+               print "</FONT>";
+       }
+       $infont = 0;
+}
diff --git a/contrib/tex2eps.sh b/contrib/tex2eps.sh
new file mode 100644 (file)
index 0000000..dedc63b
--- /dev/null
@@ -0,0 +1,21 @@
+#! /bin/sh
+#
+# The script is contributed by Sylvain Pion <Sylvain.Pion@sophia.inria.fr>.
+#  Subject: (mgp-users 00071) Re: remarks against 1.04a
+#
+# Expected usage:
+#      %filter "tex2eps.sh b"
+#      My \TeX\ is nicer with $Magic$ Point
+#      %endfilter
+#      %image "b.eps" 250x200
+#
+
+# temporary filename (without .eps suffix)
+tmp=$1
+
+echo '\nopagenumbers' > $tmp.tex
+cat >> $tmp.tex
+echo '\end' >> $tmp.tex
+tex $tmp.tex > /dev/null 2> /dev/null
+dvips -q -E $tmp.dvi -o $tmp.eps
+/bin/rm -f $tmp.tex $tmp.log $tmp.dvi
index 57c78bb..9222c3f 100644 (file)
@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $Id: main.c,v 1.3 1998/08/23 13:02:50 itojun Exp $
+ * $Id: main.c,v 1.5 1998/09/30 23:58:17 itojun Exp $
  */
 /*
  * Most of X11 code was derived from twiddler driver.
@@ -138,8 +138,8 @@ main(argc, argv)
        signal(SIGHUP, sigtrap);
        fd = open(remote, O_NONBLOCK);
        if (fd < 0) {
-               err(1, "%s", remote);
                uucpunlock(remote);
+               err(1, "%s", remote);
                /*NOTREACHED*/
        }
        tcgetattr(fd, &old);
@@ -155,8 +155,8 @@ main(argc, argv)
 
        fd = open(remote, O_RDONLY);
        if (fd < 0) {
-               err(1, "%s", remote);
                uucpunlock(remote);
+               err(1, "%s", remote);
                /*NOTREACHED*/
        }
        useruid();
@@ -199,8 +199,8 @@ mainloop(fd)
                FD_SET(fd, &rfd);
                nfd = select(fd + 1, &rfd, 0, 0, &tv);
                if (nfd < 0) {
-                       err(1, "select");
                        uucpunlock(remote);
+                       err(1, "select");
                        /*NOTREACHED*/
                }
 
@@ -224,7 +224,6 @@ mainloop(fd)
                                        continue;
                                }
 
-                               /* edge trigger */
                                switch (buf[i]) {
                                case LEFT:
                                        dprintf((stderr, "left\n"));
index 5bed70e..6cb1f66 100644 (file)
@@ -55,7 +55,7 @@ uu_lock(ttyname)
        char tbuf[sizeof(_PATH_LOCKDIRNAME) + MAXNAMLEN];
        off_t lseek();
 
-       (void)sprintf(tbuf, _PATH_LOCKDIRNAME, ttyname);
+       (void)snprintf(tbuf, sizeof(tbuf), _PATH_LOCKDIRNAME, ttyname);
        fd = open(tbuf, O_RDWR|O_CREAT|O_EXCL, 0664);
        if (fd < 0) {
                /*
@@ -104,6 +104,6 @@ uu_unlock(ttyname)
 {
        char tbuf[sizeof(_PATH_LOCKDIRNAME) + MAXNAMLEN];
 
-       (void)sprintf(tbuf, _PATH_LOCKDIRNAME, ttyname);
+       (void)snprintf(tbuf, sizeof(tbuf), _PATH_LOCKDIRNAME, ttyname);
        return(unlink(tbuf));
 }
index 79d7821..6387940 100644 (file)
@@ -25,7 +25,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\"     $Id: xmindpath.1,v 1.5 1998/08/23 13:02:50 itojun Exp $
+.\"     $Id: xmindpath.1,v 1.6 1998/09/30 23:55:22 itojun Exp $
 .\"
 .Dd August 22, 1998
 .Dt XMINDPATH 1
@@ -83,7 +83,8 @@ after
 the specified device will be used as serial port.
 With
 .Fl v ,
-.Nm will generate more messages.
+.Nm
+will generate more messages.
 .Fl d
 option is provided just for debugging sessions.
 .\"
diff --git a/ctlwords.c b/ctlwords.c
new file mode 100644 (file)
index 0000000..bd099fe
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * ctlwords.c
+ * From: Luigi Rizzo <luigi@labinfo.iet.unipi.it>
+ */
+
+#if 0
+ used to extract and create tokens for mgp
+ Reads globals.c, produces ctlwords.h.
+ Lines started by  /*CTL*/ and containing an identifier CTL_*
+ generate tokens with increasing value.
+ The perl code follows:
+
+BEGIN {
+       counter = 0;    # 0 origin
+       printf("/* generated by ctlwords.awk. do not edit by hand. */\n");
+}
+/^\/\*CTL\*\// {
+       word = substr($0, index($0, "CTL_"));
+       word = substr(word, 0, index(word, ",") - 1);
+       printf("#define\t%s\t%d\n", word, counter++);
+}
+
+#endif
+
+#include <stdio.h>
+#include <string.h>
+
+main(int argc, char *argv[])
+{
+       char buf[1024];
+       char *p, *q;
+       int i = 0, l ;
+
+       printf("/* Generated by ctlwords.c from globals.c. Do not edit. */\n");
+       while (fgets(buf, sizeof(buf)-1, stdin)) {
+               if (strlen(buf) > 12 /* there must be enough data... */
+                && !strncmp(buf, "/*CTL*/", 7)) { /* found marker */
+                       p = strstr(buf+7, "CTL_");
+                       if (p) {
+                               for (q = p; *q && (isalnum(*q) || *q=='_'); q++)
+                                       ;
+                               *q = '\0'; /* must exist */
+                               printf("#define %s\t%d\n", p, i++);
+                       }
+               }
+       }
+       exit(0);
+}
diff --git a/ctlwords.pl b/ctlwords.pl
deleted file mode 100644 (file)
index 9a6638c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#! /usr/bin/perl
-$counter = 0;  # 0 origin
-print "/* generated by ctlwords.awk. do not edit by hand. */\n";
-
-while (<>) {
-       next if (!/^\/\*CTL\*\//);
-       next if ($_ !~ /(CTL_[A-Z0-9]+)/);
-
-       $word = $1;
-       print "#define $word\t$counter\n";
-       $counter++;
-}
diff --git a/draw.c b/draw.c
index b73c12e..883473f 100644 (file)
--- a/draw.c
+++ b/draw.c
  * SUCH DAMAGE.
  */
 /*
- * $Id: draw.c,v 1.112 1998/09/04 15:06:52 onoe Exp $
+ * $Id: draw.c,v 1.160 1999/12/05 17:28:39 nishida Exp $
  */
 
 #include "mgp.h"
 
 /* state associated with the window - how should we treat this? */
-static struct ctrl *bg_image_ctl = NULL;
-static struct ctrl *bg_image_prev = NULL;
-static Image *bg_image = NULL;
-static XImageInfo *bg_ximageinfo = NULL;
+static struct ctrl *bg_ctl, *bg_ctl_last;
+static int bgindex = 0;
+struct render_state cache_state;
 
 static u_short kinsokutable[] = {
        0x2121, 0x2122, 0x2123, 0x2124, 0x2125, 0x2126, 0x2127, 0x2128,
@@ -45,10 +44,21 @@ static u_short kinsokutable[] = {
        0x2242, 0x2244, 0
 };
 
+static struct pcache {
+       u_int flag;
+       u_int page;
+       u_int mgpflag;
+       u_int mode;
+       u_int effect;
+       u_int value;
+} pcache;
+
 #define        COMPLEX_BGIMAGE \
-    (bg_image_prev                             \
-     && ((bg_image_prev->ct_op == CTL_BIMAGE)  \
-       || bg_image_prev->ct_op == CTL_BGRAD))
+    (bg_ctl            \
+     && ((bg_ctl->ct_op == CTL_BIMAGE) \
+       || bg_ctl->ct_op == CTL_BGRAD))
+
+#define        COMPLEX_BGIMAGE2 (0)
 
 #define        POSY(size)      (-(int)((size)/2))
 
@@ -57,23 +67,23 @@ static void process_direc __P((struct render_state *, int *));
 static int set_position __P((struct render_state *));
 static void draw_line_start __P((struct render_state *));
 static void draw_line_itemsize __P((struct render_state *, int, int));
-static void draw_line_output __P((struct render_state *, u_char *));
+static void draw_line_output __P((struct render_state *, char *));
 static void draw_line_end __P((struct render_state *));
 static void cutin __P((struct render_state *, int, int, int));
 #if 0
-static void shrink __P((u_char *, u_int));
+static void shrink __P((char *, u_int));
 #endif
 
-static void draw_string __P((struct render_state *, u_char *));
-static void draw_fragment __P((struct render_state *, u_char *, u_int, char *));
-static int iskinsokuchar __P((u_short));
+static void draw_string __P((struct render_state *, char *));
+static void draw_fragment __P((struct render_state *, u_char *, u_int, char *, int));
+static int iskinsokuchar __P((u_int));
 static struct render_object *obj_alloc __P((struct render_state *state));
 static void obj_free __P((struct render_state *, struct render_object *));
 static int obj_new_xfont __P((struct render_state *, int, int, int,
        u_int, char *));
 static int obj_new_image __P((struct render_state *, int, int, Image *, int, int));
 static int obj_new_icon __P((struct render_state *, int, int, u_int, u_int, u_long, u_int, XPoint *));
-static Pixel obj_image_color __P((Image *, Image *, Pixel));
+static Pixel obj_image_color __P((Image *, Image *, Pixel, int *));
 static Image *obj_image_trans __P((Image *, u_int, u_int));
 static void obj_draw_image __P((Drawable, u_int, u_int, struct render_object *));
 static void obj_draw __P((struct render_state *, Drawable, u_int, u_int));
@@ -84,11 +94,11 @@ static u_int draw_onechar_vf __P((struct render_state *, u_int, int, int, u_int,
 #endif
 #ifdef FREETYPE
 static u_int draw_onechar_tf __P((struct render_state *, u_int, int, int,
-       u_int, int));
+       u_int, char *, int, int));
 #endif
-static u_char *x_fontname __P((u_char *, int, u_char *, int, char *));
+static char *x_fontname __P((char *, int, char *, int, char *));
 static int x_parsefont __P((char *, int *, int*));
-static XFontStruct *x_setfont __P((u_char *, u_int, char *, int *));
+static XFontStruct *x_setfont __P((char *, u_int, char *, int *));
 static u_int draw_onechar_x __P((struct render_state *, u_int, int, int, int,
        char *, int));
 
@@ -104,6 +114,24 @@ static void reparent_child_window __P((Window, int, int));
 static char *epstoimage __P((struct render_state *, char *, int, int, int,
        int, int, int));
 static void image_setcolor __P((struct render_state *));
+static void x_registerseed __P((struct render_state *, char *, char *));
+static char *x_findseed __P((struct render_state *, char *));
+
+static void XClearPixmap __P((Display *, Drawable));
+static void XSetPixmapBackgroundPixmap __P((Display *, Drawable, Pixmap, 
+       int, int));
+static void XSetPixmapBackground __P((Display *, Drawable, u_long));
+static void cache_page __P((struct render_state *, int));
+static void cache_effect1 __P((void));
+static void cache_effect2 __P((void));
+static void set_from_cache __P((struct render_state *));
+static void pcache_process __P((int));
+static void regist_bgcache __P((XImageInfo *, Image *));
+static int check_bgcache __P((void));
+static int regist_bgpixmap __P((void));
+static void set_bgwindow __P((struct ctrl *));
+
+#define CHECK_CACHE {if (caching){caching = -1; return;}}
 
 static int
 ispsfilename(p0)
@@ -118,6 +146,8 @@ ispsfilename(p0)
                return 1;
        if (3 < p - p0 && strcasecmp(p - 3, ".ps") == 0)
                return 1;
+       if (6 < p - p0 && strcasecmp(p - 6, ".idraw") == 0)
+               return 1;
        return 0;
 }
 
@@ -145,6 +175,7 @@ void
 state_next(state)
        struct render_state *state;
 {
+
        switch (state->phase) {
        case P_NONE:
                fprintf(stderr, "internal error\n");
@@ -175,13 +206,21 @@ state_next(state)
 
        /* next page */
        if (page_attribute[state->page].pg_linenum < state->line) {
-               purgechild(state->page);
                if (state->page < maxpage) {
-                       state->phase = P_NONE;
-                       state->page++;
-                       state->line = 0;
-                       state_newpage(state);
-                       state_init(state);
+                       purgechild(state->page);
+                       if (mgp_flag & FL_FRDCACHE &&
+                               cached_page == state->page + 1){
+                                       /* Hit cache */
+                                       set_from_cache(state);
+                                       pcache_process(state->page);
+                                       cache_hit = 1;
+                       } else {
+                               state->phase = P_NONE;
+                               state->page++;
+                               state->line = 0;
+                               state_newpage(state);
+                               state_init(state);
+                       }
                } else
                        state->phase = P_END;
        }
@@ -246,6 +285,11 @@ draw_page(state, lastcp)
                        pause = 0;
                        if (state->cp)
                                process_direc(state, &pause);
+                       if (caching == -1){
+                               /* caching failed */
+                               caching = 0;
+                               return;
+                       }
                        if (lastcp && state->cp == lastcp)
                                goto done;
                        if (pause) {
@@ -364,14 +408,30 @@ draw_one(state, e)
                if (ttykey_enable)
                        FD_SET(0, &fds);
 #endif
+               remapchild();
+               /* always cache next page */
+               if ((mgp_flag & FL_FRDCACHE) && cache_mode){
+                       cache_page(&cache_state, state->page +1);
+                       /* check if we got some events during caching */
+                       if (XCheckMaskEvent(display, emask, e) == True) 
+                               goto got_event;
+               }
+
                /* wait for something */
                tout.tv_sec = 2;
                tout.tv_usec = 0;
                (void)select(xfd + 1, &fds, NULL, NULL, &tout);
+
 #ifdef TTY_KEYINPUT
                if (!(mgp_flag & FL_NOSTDIN) && !ttykey_enable)
                        try_enable_ttykey();
 #endif
+               /* we have no event in 2sec, so..*/
+               if (!FD_ISSET(xfd, &fds)){
+                       if ((mgp_flag & FL_FRDCACHE) && !cache_mode)
+                               cache_page(&cache_state, state->page +1);
+                       timebar(state);
+               }
        }
        /*NOTREACHED*/
 }
@@ -394,51 +454,53 @@ process_direc(state, seenpause)
 
        switch(cp->ct_op) {
        case CTL_SIZE:
-               char_size = state->height * cp->cti_value / 100;
+               char_size[caching] = state->height * cp->ctf_value / 100;
 #ifdef FREETYPE
-               tfc_setsize(char_size);
+               tfc_setsize(char_size[caching]);
 #endif
                break;
 
        case CTL_VGAP:
-               vert_gap = cp->cti_value;
+               vert_gap[caching] = cp->cti_value;
                break;
 
        case CTL_HGAP:
-               horiz_gap = cp->cti_value;
+               horiz_gap[caching] = cp->cti_value;
                break;
 
        case CTL_GAP:
-               vert_gap = horiz_gap = cp->cti_value;
+               vert_gap[caching] = horiz_gap[caching] = cp->cti_value;
                break;
 
        case CTL_QUALITY:
                if (!quality_flag)
-                       b_quality = cp->cti_value;
+                       b_quality[caching] = cp->cti_value;
                break;
 
        case CTL_PAUSE:
+               CHECK_CACHE
                if (seenpause)
                        *seenpause = 1;
                break;
 
        case CTL_AGAIN:
+               CHECK_CACHE
                if (state->have_mark)
                        state->ypos = state->mark_ypos;
                state->have_mark = 0;
                break;
 
        case CTL_FORE:
-               fore_color = cp->ctl_value;
-               XSetForeground(display, gcfore, fore_color);
+               fore_color[caching] = cp->ctl_value;
+               XSetForeground(display, gcfore, fore_color[caching]);
                break;
 
        case CTL_BACK:
-               bg_image_ctl = cp;      /*update later*/
+               bg_ctl = cp;    /*update later*/
                break;
 
        case CTL_CCOLOR:
-               ctrl_color = cp->ctl_value;
+               ctrl_color[caching] = cp->ctl_value;
                break;
 
        case CTL_CENTER:
@@ -468,12 +530,17 @@ process_direc(state, seenpause)
 
 #ifdef FREETYPE
        case CTL_TFONT:
-               tfc_setfont(cp->ctc_value);
+               tfc_setfont(cp->ctc_value, 0);
                break;
+
+       case CTL_TMFONT:
+               tfc_setfont(cp->ctc_value, 1);
+               break;
+
 #endif /*FREETYPE*/
 
-       case CTL_XFONT:
-               state->xfont = cp->ctc_value;
+       case CTL_XFONT2:
+               x_registerseed(state, cp->ctc2_value1, cp->ctc2_value2);
                break;
 
        case CTL_BAR:
@@ -482,6 +549,11 @@ process_direc(state, seenpause)
 
        case CTL_IMAGE:
            {
+               if (state->align == AL_LEFTFILL0) {
+                       state->align = AL_LEFTFILL1;
+                       state->leftfillpos = state->linewidth;
+               }
+
                /* quickhack for postscript */
                if (ispsfilename(cp->ctm_fname)) {
                        image_load_ps(state, cp->ctm_fname, cp->ctm_numcolor,
@@ -498,24 +570,27 @@ process_direc(state, seenpause)
        case CTL_BIMAGE:
                if (mgp_flag & FL_BIMAGE)
                        break;
-               bg_image_ctl = cp;      /*update later*/
+               bg_ctl = cp;    /*update later*/
                break;
 
        case CTL_BGRAD:
                if (mgp_flag & FL_BIMAGE)
                        break;
-               bg_image_ctl = cp;      /*update later*/
+               bg_ctl = cp;    /*update later*/
                break;
 
        case CTL_LCUTIN:
+               CHECK_CACHE
                state->special = SP_LCUTIN;
                break;
 
        case CTL_RCUTIN:
+               CHECK_CACHE
                state->special = SP_RCUTIN;
                break;
 
        case CTL_SHRINK:
+               CHECK_CACHE
                state->special = SP_SHRINK;
                break;
 
@@ -529,7 +604,7 @@ process_direc(state, seenpause)
 
        case CTL_PREFIXPOS:
            {
-               u_char *p;
+               char *p;
 
                p = (state->tabprefix) ? state->tabprefix : state->curprefix;
                if (!p)
@@ -550,33 +625,42 @@ process_direc(state, seenpause)
 
        case CTL_LINESTART:
                if (state->line == 0) {
-                       if (bg_image_ctl) {
-                               if (bg_image_prev
-                                && ctlcmp(bg_image_ctl, bg_image_prev) == 0) {
+                       if (bg_ctl) {
+                               if (check_bgcache()){
+                                       if (!caching)  set_bgwindow(bg_ctl);
                                        ; /* same as the last time */
-                               } else if (bg_image_ctl->ct_op == CTL_BIMAGE) {
-                                   image_load(state, bg_image_ctl->ctm_fname,
-                                       bg_image_ctl->ctm_numcolor,
-                                       bg_image_ctl->ctm_ximagesize,
-                                       bg_image_ctl->ctm_yimagesize, 1,
-                                       bg_image_ctl->ctm_zoomflag, 0);
-                               } else if (bg_image_ctl->ct_op == CTL_BGRAD) {
+                               } else if (bg_ctl->ct_op == CTL_BIMAGE) {
+                                   image_load(state, bg_ctl->ctm_fname,
+                                       bg_ctl->ctm_numcolor,
+                                       bg_ctl->ctm_ximagesize,
+                                       bg_ctl->ctm_yimagesize, 1,
+                                       bg_ctl->ctm_zoomflag, 0);
+                               } else if (bg_ctl->ct_op == CTL_BGRAD) {
                                        back_gradation(state,
-                                               &bg_image_ctl->ct_val.ctrl_grad);
-                               } else if (bg_image_ctl->ct_op == CTL_BACK) {
-                                       XSetWindowBackground(display,
-                                               state->target,
-                                               bg_image_ctl->ctl_value);
-                                       back_color = bg_image_ctl->ctl_value;
+                                               &bg_ctl->ct_val.ctrl_grad);
+                               } else if (bg_ctl->ct_op == CTL_BACK) {
+                                       if (!caching){
+                                               bg_ctl_last = bg_ctl;
+                                               XSetWindowBackground(display,
+                                                       state->target, bg_ctl->ctl_value);
+                                       } else {
+                                               XSetPixmapBackground(display,
+                                                       state->target, bg_ctl->ctl_value);
+                                       }
+                                       back_color[caching] = bg_ctl->ctl_value;
                                } else {
                                        fprintf(stderr, "internal error: "
                                                "bogus background\n");
                                        cleanup(-1);
                                }
                        }
-                       XClearWindow(display, state->target);
-                       bg_image_prev = bg_image_ctl;
-                       bg_image_ctl = NULL;
+
+                       if (!caching) { 
+                               XClearWindow(display, state->target);
+                               bg_ctl_last = bg_ctl;
+                       } else 
+                               XClearPixmap(display, state->target);
+
                        if (t_fin)
                                timebar(state);
                }
@@ -584,9 +668,10 @@ process_direc(state, seenpause)
                break;
 
        case CTL_LINEEND:
-               if (state->maxascent + state->maxdescent == 0) {
-                       state->maxascent = char_size;
-                       state->maxdescent = VERT_GAP(char_size);
+               /* blank lines */
+               if (state->maxascent + state->maxdescent < 3) { /*XXX*/
+                       state->maxascent = char_size[caching];
+                       state->maxdescent = VERT_GAP(char_size[caching]);
                }
                draw_line_end(state);
                /* reset single-line oriented state */
@@ -604,10 +689,12 @@ process_direc(state, seenpause)
                break;
 
        case CTL_SYSTEM:
+               CHECK_CACHE
                process_system(state, cp);
                break;
 
        case CTL_XSYSTEM:
+               CHECK_CACHE
                process_xsystem(state, cp);
                break;
 
@@ -629,16 +716,46 @@ process_direc(state, seenpause)
        case CTL_TFONT0:
                freetypefont0 = cp->ctc_value;
                break;
+
+       case CTL_TMFONT0:
+               freetypemfont0 = cp->ctc_value;
+               break;
 #endif
 
        case CTL_NOOP:
        case CTL_NODEF:
                break;
 
+       case CTL_XFONT:
+               /* obsolete directives */
+               fprintf(stderr, "internal error: obsolete directive "
+                       "\"%s\"\n", ctl_words[cp->ct_op].ctl_string);
+               exit(1);
+               /*NOTREACHED*/
+       
+       case CTL_PCACHE:
+               if (!caching) { 
+                       if (cp->ctch_flag)
+                               mgp_flag |= FL_FRDCACHE;
+                       else 
+                               mgp_flag ^= FL_FRDCACHE;
+                       cache_mode   = cp->ctch_mode;   
+                       cache_effect = cp->ctch_effect; 
+                       cache_value  = cp->ctch_value;
+               } else {
+                       pcache.flag = 1;
+                       pcache.page = state->page;
+                       pcache.mgpflag = cp->ctch_flag;
+                       pcache.mode = cp->ctch_mode;
+                       pcache.effect = cp->ctch_effect;
+                       pcache.value = cp->ctch_value;
+               }
+               break;
+
        default:
                fprintf(stderr,
-                       "undefined operator at page %d line %d:\n\t",
-                       state->page, state->line);
+                       "undefined directive %d at page %d line %d:\n\t",
+                       cp->ct_op, state->page, state->line);
                debug0(cp);
                break;