#call with LANG=en_US.ISO8859-1 make
SOURCE=tree.fs Makefile postings HEADER.html .htaccess CVS .cvsignore

all: tree.eps tree.pdf timeline.eps timeline-paged.pdf timeline.gif tree.gif tree.map README.html family-tree.zip

clean:
	rm *~ *.dot *.neato *.eps *.pdf *.gif *.map *.svg timeline.fs README.html

tree.svg: tree.dot
	dot -Tsvg tree.dot >tree.svg

tree.eps: tree.dot
	dot -Grotate=90 -Tps tree.dot >tree.eps

timeline-paged.eps: timeline.neato
	neato -s -n -Grotate=90 -Gsplines=true -Tps timeline.neato >timeline-paged.eps

timeline.eps: timeline.neato
	grep -v '^page=".*"$$' timeline.neato |neato -s -n -Grotate=90 -Gsplines=true -Tps >timeline.eps

timeline.gif: timeline.neato
	grep -v '^page=".*"$$' timeline.neato |neato -s -n -Gsplines=true -Tgif >$@

timeline.map: timeline.neato
	grep -v '^page=".*"$$' timeline.neato |sed 's/digraph tree/digraph timeline/'|neato -s -n -Gsplines=true -Tcmapx >$@


tree.dot: tree.fs
	gforth -e true tree.fs -e "drop bye" >tree.dot

# timeline.fs consists of lines like
# 702 dup constant HyperForth max
# where 702 is the y-coordinate extracted from the output of dot tree.dot
# the output format varies, so the extraction process varies
timeline.fs: tree.dot
#	dot tree.dot|awk '/pos="[0-9.]+,[0-9.]+"/ {sub(/[[].*pos="[0-9.]+,/,"",$$0); sub(/".*$$/,"",$$0); print $$2" dup constant "$$1" max"}' >timeline.fs
# for dot - graphviz version 2.43.0 (0) # does not work always
#	dot tree.dot|awk '/^\t[a-zA-Z0-9_]+\t[[]/ {forth=$$1} /pos="[0-9.]+,[0-9.]+"/ {sub(/^.*pos="[0-9.]+,/,"",$$0); sub(/[.].*$$/,"",$$0); print $$0" dup constant "forth" max"}' >timeline.fs
	dot -Tdot tree.dot|awk '/^\t[a-zA-Z0-9_]+\t[[]/ {forth=$$1} /\tpos="[0-9.]+,[0-9.]+"/ {print $$1" dup constant "forth" max"}'|sed -E 's/pos="[0-9.]+,//'|sed 's/[.]0-9+//'|sed 's/",//' >timeline.fs

timeline.neato: tree.fs timeline.fs
	gforth -e false tree.fs -e "drop bye" >timeline.neato

%.pdf: %.eps
	echo "0.65 0.65 scale"|cat - $<|ps2pdf - $@

# %.gif: %.eps
# 	echo "0.5 0.5 scale"|cat - $<|gs -r110 -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -sPAPERSIZE=a0 -sDEVICE=ppmraw -sOutputFile=- -sNOPAUSE -q - -c showpage -c quit | pnmcrop| pnmflip -r270|pnmmargin -white 10 | ppmtogif >$@

#server-side image maps
%.map: %.dot
	dot -Timap $< >$@

#client-side image maps
%.map: %.dot
	grep -v '^page=".*"$$' $<|dot -Tcmapx >$@

%.gif: %.dot
	grep -v '^page=".*"$$' $<|dot -Tgif >$@

README.html: tree.map timeline.map
	echo "<a href="/anton/">Anton Ertl</a>"|cat tree.map timeline.map - >$@

family-tree.zip: $(SOURCE)
	rm -rf family-tree $@
	mkdir family-tree
	cp -rp $(SOURCE) family-tree
	zip -r9 $@ family-tree
	rm -rf family-tree
