floors = -2 -1 1 2 3 4

floor_htmls_en = $(patsubst %,floor_%.en.html,$(floors))
floor_htmls_cs = $(patsubst %,floor_%.cs.html,$(floors))
floor_htmls    = $(floor_htmls_en) $(floor_htmls_cs)
floor_hsvgs = $(patsubst floor_%.html,floor_%.hsvg,$(floor_htmls))
floor_svgs  = $(patsubst %.hsvg,%.svg,$(floor_hsvgs))

cleanables += $(floor_svgs) $(floor_hsvgs) $(floor_dsvgs)
downloads  += $(floor_htmls)


floor_separate_data = $(patsubst %.svg,%.rec,$(floor_svgs))
floor_merged_data   = floor_all.cs.rec floor_all.en.rec
floor_data  = $(floor_separate_data) $(floor_merged_data)
floor_polys = $(patsubst %.rec,%.poly.rec,$(floor_data))

cleanables += $(floor_data) $(floor_polys)


floor_3dhsvgs = $(patsubst %.poly.rec,%.3d.embed.svg,$(floor_polys))
floor_3dxsvgs = $(patsubst %.poly.rec,%.3d.svg,$(floor_polys))
floor_3dhtmls = $(patsubst %.poly.rec,%.3d.html,$(floor_polys))

cleanables += $(floor_3dhsvgs) $(floor_3dxsvgs) $(floor_3dhtmls)


default: 
all: download default

.PHONY: default all clean clean-all clean-dl

.SECONDARY: $(floor_htmls)

.PHONY download: download-floors
.PHONY all:      extract-svgs

download-floors: $(floor_htmls)
extract-svgs:    $(floor_svgs)

clean-all: clean clean-dl
clean:
	@rm -vf $(cleanables)
clean-dl:
	@rm -vf $(downloads)

$(floor_htmls) : floor_%.html:
	wget -O $@ https://www.fit.vut.cz/fit/map/$*

floor_%.hsvg: floor_%.html
	perl -ne 'm@<svg.*id="map"@..m@</svg@ and print' $< > $@

floor_%.svg: floor_%.hsvg
	perl -pe $$'$$_ =~ s/\\bdata-[-a-z0-9]+(?:=(?:([\'"]?)((?!\\1).)*\\1|((?!\\s)[\\/>])*))?//gi' $< > $@

all: $(floor_data)
floor_%.rec: floor_%.svg parse.pl
	perl parse.pl $* $< > $@

floor_all.%.rec:
	cat $+ > $@
floor_all.cs.rec: $(filter %.cs.rec,$(floor_separate_data))
floor_all.en.rec: $(filter %.en.rec,$(floor_separate_data))

all: $(floor_polys)
floor_%.poly.rec: topoly.pl floor_%.rec
	perl $+ > $@

default: $(floor_3dhtmls)
floor_%.3d.html: floor_%.poly.rec make3dsvg.pl basic3d.css
	perl make3dsvg.pl --wrapInHtml --style basic3d.css --script controls.js < $< > $@

default: $(floor_3dhsvgs)
floor_%.3d.embed.svg: floor_%.poly.rec make3dsvg.pl basic3d.css
	perl make3dsvg.pl --style basic3d.css < $< > $@

default: $(floor_3dxsvgs)
floor_%.3d.svg: floor_%.poly.rec make3dsvg.pl basic3d.css
	perl make3dsvg.pl --xml --style basic3d.css --script controls.js < $< > $@
