diff -Naur a/data/m_ps.fnt b/data/m_ps.fnt --- a/data/m_ps.fnt 1969-12-31 19:00:00.000000000 -0500 +++ b/data/m_ps.fnt 2017-12-19 22:33:27.691556645 -0500 @@ -0,0 +1,35 @@ + 1 0013 1947 1 5 5 1 4.5.1 0 0 0 1 Times-Roman + 2 0013 1947 1 7 5 1 4.5.1 0 0 0 1 Times-Bold + 3 0013 1947 2 5 5 1 4.5.1 0 0 0 1 Times-Italic + 4 0013 1947 2 7 5 1 4.5.1 0 0 0 1 Times-BoldItalic + 5 0013 1921 1 5 5 1 5.1.2 0 0 0 1 Helvetica + 6 0013 1921 1 7 5 1 5.1.2 0 0 0 1 Helvetica-Bold + 7 0013 1921 2 5 5 1 5.1.2 0 0 0 1 Helvetica-Oblique + 8 0013 1921 2 7 5 1 5.1.2 0 0 0 1 Helvetica-BoldOblique + 9 0013 1970 1 5 5 1 4.6.5 0 0 0 1 Courier + 10 0013 1970 1 7 5 1 4.6.5 0 0 0 1 Courier-Bold + 11 0013 1970 2 5 5 1 4.6.5 0 0 0 1 Courier-Oblique + 12 0013 1970 2 7 5 1 4.6.5 0 0 0 1 Courier-BoldOblique + 13 0013 1650 1 5 5 1 8.2.0 0 0 0 91 Symbol + 14 0013 1087 1 5 5 1 4.4.2 0 0 0 1 AvantGarde-Book + 15 0013 1087 2 5 5 1 4.4.2 0 0 0 1 AvantGarde-BookOblique + 16 0013 1087 1 6 5 1 4.4.2 0 0 0 1 AvantGarde-Demi + 17 0013 1087 2 6 5 1 4.4.2 0 0 0 1 AvantGarde-DemiOblique + 18 0013 1097 1 6 5 1 4.5.2 0 0 0 1 Bookman-Demi + 19 0013 1097 2 6 5 1 4.5.2 0 0 0 1 Bookman-DemiItalic + 20 0013 1097 1 4 5 1 4.5.2 0 0 0 1 Bookman-Light + 21 0013 1097 2 4 5 1 4.5.2 0 0 0 1 Bookman-LightItalic + 22 0013 1921 1 5 3 1 5.1.2 0 0 0 1 Helvetica-Narrow + 23 0013 1921 2 7 3 1 5.1.2 0 0 0 1 Helvetica-Narrow-Bold + 24 0013 1921 1 7 3 1 5.1.2 0 0 0 1 Helvetica-Narrow-BoldOblique + 25 0013 1921 2 5 3 1 5.1.2 0 0 0 1 Helvetica-Narrow-Oblique + 26 0013 1106 1 5 5 1 4.1.3 0 0 0 1 NewCenturySchlbk-Roman + 27 0013 1106 2 5 5 1 4.1.3 0 0 0 1 NewCenturySchlbk-Italic + 28 0013 1106 1 7 5 1 4.1.3 0 0 0 1 NewCenturySchlbk-Bold + 29 0013 1106 2 7 5 1 4.1.3 0 0 0 1 NewCenturySchlbk-BoldItalic + 30 0013 1276 1 5 5 1 4.4.2 0 0 0 1 Palatino-Roman + 31 0013 1276 2 5 5 1 4.4.2 0 0 0 1 Palatino-Italic + 32 0013 1276 1 7 5 1 4.4.2 0 0 0 1 Palatino-Bold + 33 0013 1276 2 7 5 1 4.4.2 0 0 0 1 Palatino-BoldItalic + 34 0013 1810 1 5 5 1 8.0.0 0 0 0 92 ZapfDingbats + 35 0013 1193 2 5 5 1 6.1.1 0 0 0 1 ZapfChancery-MediumItalic diff -Naur a/include/mach.h b/include/mach.h --- a/include/mach.h 1969-12-31 19:00:00.000000000 -0500 +++ b/include/mach.h 2017-12-19 22:34:41.145556770 -0500 @@ -0,0 +1,33 @@ +/* RAL-CGM Interpreter header file + * + * Linux specific setting for CGM interpreter + */ + +/* Define Machine */ + +#define LINUX + +/* Define Graphics system(s) */ + +#define POSTSCRIPT +#define BEZIER +#define HERSHEY +#define XW + +#define DATADIR "../data/" + +#define NAMELGTH 32 +#define EXTLGTH 8 + +#define Posint64 unsigned long long +#define MALLOCH +#include + +#ifdef CGMOXW_C /* X-Window specific settings */ + +#include +#include +#include +#include + +#endif diff -Naur a/src/Makefile b/src/Makefile --- a/src/Makefile 1969-12-31 19:00:00.000000000 -0500 +++ b/src/Makefile 2017-12-19 22:35:58.377556901 -0500 @@ -0,0 +1,333 @@ +# RAL-CGM Interpreter source Makefile: @(#) Makebase version 3.4 +# +# Name of executable module (usually ../bin/ralcgm) +# +MODULE = ../bin/ralcgm +# +# Name of callable library (Optional) (usually ../bin/libcgm.a) +# +LIB = ../bin/libcgm.a +# +# Include file directory (usually ../include) +# +INCLUDE = ../include +# +# Data files directory (usually ../data) +# +DATADIR = ../data +# +# Main Interpreter object file (usually cgmmain.o) +# +MAIN = cgmmain.o +# +# +# +MAKEFILE = Makefile +# +# CGM input encoding - Object files +# Include here files for each encoding that +# may need to be processed; usually +# cgmichar.o cgmitext.o cgmibin.o +# +INPUT = cgmichar.o cgmitext.o cgmibin.o +# +# CGM output encoding - Object files +# Include here files for each encoding that +# may be generated; usually +# cgmochar.o cgmotext.o cgmobin.o +# +OUTPUT = cgmochar.o cgmotext.o cgmobin.o +# +# User callable Library (comment out if not required) +# +CGMLIB = cgmlib.o +# +# Optional Drivers +# +# IGL - Iris Graphics Library +# PS - PostScript +# XW - X-Windows +# VID - Topaz Library +# +IGL = cgmoigl.o +PS = cgmops.o +XW = cgmoxw.o +VID = cgmotpz.o +TEK = cgmotek.o +HPGL = cgmohpgl.o +# +# List of driver files to be used in generating the $(MODULE). +# +# The possible candidates are: +# +# $(OUTPUT) list of CGM output encodings defined above +# $(IGL) Iris graphics library +# $(XW) X-Windows +# $(PS) PostScript +# $(HPGL) HPGL +# $(TEK) Tektronix 4200 +# $(VID) Video system +# +DRIVERS = $(PS) $(XW) $(HPGL) $(TEK) +# +# Input utilities Object files +# These provides random access input and convenient +# handling of input attributes +# +ERRUTILS = cgmerr.o +ERRINCLUDES = $(INCLUDE)/cgmerr.h + +FILEUTILS = cgmfile.o +FILEINCLUDES = $(INCLUDE)/cgmfile.h + +GENUTILS = $(FILEUTILS) $(ERRUTILS) +GENINCS = $(FILEINCLUDES) \ + $(ERRINCLUDES) + +RANUTILS = cgmrand.o cgmprof.o +INPUTILS = cgminput.o +# +# Output utility Object files (only needed with output drivers) +# These provide emulation of GDPs, filled areas +# and other graphical operations. Not needed by all drivers +# currently cgmgdp.o is used by XW, IGL & VID +# cgmfill.o & cgmgraph.o are used by IGL only +# +ATTUTILS = cgmatt.o +GDPUTILS = cgmgdp.o +FILUTILS = cgmpoly.o cgmtrap.o cgmfill.o cgmgraph.o +COLRUTILS = cgmcolr.o +CELLUTILS = cgmcell.o +PTSUTILS = cgmpts.o +# +OUTUTILS = $(ATTUTILS) $(GDPUTILS) $(FILUTILS) $(COLRUTILS) $(CELLUTILS) $(PTSUTILS) +# +# Text utility Object files +# These provide software emulation of text and +# generally useful text facilities. +# +# cgmtext.o - general text utility - PS & XW +# cgmfont.o - general font utility - PS & XW +# cgmbez.o - Bezier text - if wanted +# cgmher.o - Hershey text - if wanted +# +FNTUTILS = cgmfont.o +FNTINCLUDES = $(INCLUDE)/cgmfont.h +TEXTUTILS = cgmtext.o +TEXTINCLUDES = $(INCLUDE)/cgmtext.h +# +BEZIER = genbez +BEZUTILS = cgmbez.o +BEZLINK = $(BEZIER).o +BEZDATA = $(DATADIR)/*.bfs +BEZINCLUDES = $(INCLUDE)/cgmbez.h +# +HERSHEY = genher +HERUTILS = cgmher.o +HERLINK = $(HERSHEY).o +HERDATA = $(DATADIR)/*.hfs +HERINCLUDES = $(INCLUDE)/cgmher.h +# +# TXTSYS settings, supported text systems are: +# +# $(HERSHEY) +# $(BEZIER) +# +TXTSYS = $(BEZIER) $(HERSHEY) +# +# TXTUTILS settings, supported text utilities are: +# +# $(HERUTILS) +# $(BEZUTILS) +# List of utility modules required; +# +TXTUTILS = $(BEZUTILS) $(HERUTILS) +# +# +CGMUTILS = $(RANUTILS)\ + $(INPUTILS)\ + $(GENUTILS)\ + $(OUTUTILS)\ + $(TXTUTILS)\ + $(TEXTUTILS)\ + $(FNTUTILS) +# +# Set up names for the modules that make up `ralcgm' and `cgmlib'. +# +RALCGM = $(INPUT)\ + $(OUTPUT)\ + $(DRIVERS)\ + $(CGMUTILS) + +LIBCGM = $(CGMLIB)\ + $(OUTPUT)\ + $(DRIVERS)\ + $(INPUTILS)\ + $(GENUTILS)\ + $(OUTUTILS)\ + $(TXTUTILS)\ + $(TEXTUTILS)\ + $(FNTUTILS) +# +# Local flags for Compiler (system dependent) +# +# Examples: (Iris 3130) -Zf -g -p +# (Iris 4D) -O +# (GNU C on Topaz) -O -m68881 -g +# (Sun 3) -O -fswitch +# (Sun 4) -O +# (Unicos) -O -g +# +CFLAGS = -c -DPOSTSCRIPT="" -DXW="" -DHPGL="" -DTEK4200="" -DBEZIER="" -DHERSHEY="" +# +# Local flags for Linker (system dependent) +# For X-windows, add some extra libraries (comment out otherwise) +# +# Examples: (Iris 3130) -Zg -lm +# (Iris 4D) -lm -lgl_s -lX11_s -lc_s +# (Topaz) -lE -lmalloc -lm +# (Sun 3 or 4) -lm -lX11 -lc +# (Unicos) -lm -lX11 -lnet -lc +# (Unicos - scc) -lm -lX11 -lnet -lsc +# +LFLAGS = -lm -lX11 +# +# Common include files +# +GENINCLUDES = $(INCLUDE)/cgmmach.h $(INCLUDE)/mach.h \ + $(INCLUDE)/cgmtypes.h \ + $(INCLUDE)/cgmstruc.h \ + $(INCLUDE)/cgmelem.h \ + $(INCLUDE)/cgmpar.h \ + $(INCLUDE)/cgmtran.h \ + $(INCLUDE)/cgmatt.h +# +# List of includes for the text system; must match the text utility +# .o files given above. +# +INCLUDES = $(GENINCLUDES) $(TXTINCLUDES) $(FNTINCLUDES) \ + $(BEZINCLUDES) $(HERINCLUDES) $(GENINCS) +# +# Define various commands in just one place. +# +# for Unicos LINK = segldr +# AR = bld rv +# all others LINK = cc $(LFLAGS) +# AR = ar rv +# +COMPILE = cc +LINK = cc +AR = ar crs +# +# Main dependencies (should not need altering) + +ralcgm: $(MODULE) $(TXTSYS) + @echo "$(MODULE) is now made" + +cgmlib: $(LIB) $(TXTSYS) + @echo "$(LIB) is now made" + +iutils: $(INPUTILS) $(GENUTILS) + +outils: $(OUTUTILS) + +tutils: $(TXTUTILS) + +clean: + rm -f *.o core a.out $(TXTSYS) + +$(MODULE): $(MAIN) $(RALCGM) + $(LINK) $(MAIN) $(RALCGM) $(LFLAGS) -o $(MODULE) + chmod 755 $(MODULE) + +$(LIB): $(LIBCGM) + $(AR) $(LIB) $(LIBCGM) + chmod 644 $(LIB) + +# include file dependencies + +$(MAIN): $(INCLUDE)/cgminit.h $(GENINCLUDES) $(MAKEFILE) + +$(CGMLIB): $(INCLUDE)/cgmlib.h $(INCLUDE)/cgminit.h $(INCLUDE)/cgmin.h \ + $(GENINCLUDES) $(MAKEFILE) + +$(INPUT) $(INPUTILS) $(RANUTILS): $(INCLUDE)/cgmin.h $(GENINCLUDES) $(MAKEFILE) + +$(GENUTILS): $(GENINCLUDES) + +$(OUTPUT) $(OUTUTILS): $(GENINCLUDES) $(MAKEFILE) + +$(DRIVERS): $(INCLUDE)/cgmout.h \ + $(INCLUDES) \ + $(MAKEFILE) + +$(FNTUTILS): $(FNTINCLUDES) \ + $(INCLUDE)/cgmufont.h \ + $(TXTINCLUDES) \ + $(MAKEFILE) + +$(TEXTUTILS): $(TEXTINCLUDES) \ + $(FNTINCLUDES) \ + $(MAKEFILE) + +$(ERRUTILS): $(ERRINCLUDES) \ + $(GENINCLUDES) \ + $(MAKEFILE) + +$(BEZUTILS): $(BEZINCLUDES) \ + $(INCLUDE)/cgmubez.h \ + $(GENINCLUDES) \ + $(MAKEFILE) + +$(BEZIER): $(BEZLINK) \ + $(GENINCS) \ + $(INCLUDE)/cgmubez.h \ + $(BEZDATA) \ + $(MAKEFILE) + $(LINK) $(BEZLINK) $(GENUTILS) $(LFLAGS) -o $(BEZIER) + ./$(BEZIER) + chmod 644 $(DATADIR)/*.bfb $(DATADIR)/fontdir.bez + +$(HERUTILS): $(HERINCLUDES) \ + $(INCLUDE)/cgmuher.h \ + $(GENINCLUDES) \ + $(MAKEFILE) + +$(HERSHEY): $(HERLINK) \ + $(GENINCS) \ + $(INCLUDE)/cgmuher.h \ + $(HERDATA) \ + $(MAKEFILE) + $(LINK) $(HERLINK) $(GENUTILS) $(LFLAGS) -o $(HERSHEY) + ./$(HERSHEY) + chmod 644 $(DATADIR)/*.hfb $(DATADIR)/fontdir.her + +$(IGL): $(INCLUDE)/cgmigl.h \ + $(INCLUDE)/cgmgdp.h \ + $(INCLUDE)/cgmfill.h \ + $(INCLUDE)/cgmgraph.h \ + $(INCLUDE)/cgmpoly.h \ + $(INCLUDE)/cgmtrap.h + +$(PS): $(INCLUDE)/cgmps.h \ + $(INCLUDE)/cgmgdp.h \ + $(INCLUDE)/cgmpoly.h \ + $(INCLUDE)/cgmtrap.h + +$(XW): $(INCLUDE)/cgmxw.h \ + $(INCLUDE)/cgmgdp.h + +$(HPGL): $(INCLUDE)/cgmhpgl.h \ + $(INCLUDE)/cgmgdp.h \ + $(INCLUDE)/cgmcolr.h + +$(TEK): $(INCLUDE)/cgmtek.h \ + $(INCLUDE)/cgmgdp.h \ + $(INCLUDE)/cgmcolr.h \ + $(INCLUDE)/cgmcell.h \ + $(INCLUDE)/cgmpts.h + +.c.o: + $(COMPILE) $(CFLAGS) -I$(INCLUDE) $< + +.SUFFIXES: .c .o