#
# makefile - create icons of various sizes
#
# Copyright (C) 2019,2022 Taiji Yamada <taiji@aihara.co.jp>
#
# usage:
#
# $ make clean all backup
# $ make headless_browser=chrome clean all backup
#
# $ make target_app=macos clean all backup
# $ make target_app=macos headless_browser=chrome clean all backup
#
# $ make every
# $ PATH="$PATH:/Users/Homebrew/bin" make every
#
#convert=/Users/Homebrew/bin/convert
convert=$(shell which convert)

target_app=ios
#target_app=macos

ifeq ($(target_app),ios)

SVGS=\
PlaceN.svg	\
eMojiCalc.svg	\
VideoPlayUserAction.svg	\

SUFS=\
-20@2x.png	\
-20@3x.png	\
-29.png	\
-29@2x.png	\
-29@3x.png	\
-40@2x.png	\
-40@3x.png	\
-60@2x.png	\
-60@3x.png	\
-Small-20.png	\
-Small-20@2x.png	\
-Small-29.png	\
-Small-29@2x.png	\
-Small-40.png	\
-Small-40@2x.png	\
-76.png	\
-76@2x.png	\
-83.5@2x.png	\
-1024.jpg	\

endif
ifeq ($(target_app),macos)

SVGS=\
PlaceN.svg	\
eMojiCalc.svg	\
VideoPlayUserAction.svg	\

SUFS=\
-16.png	\
-16@2x.png	\
-32.png	\
-32@2x.png	\
-128.png	\
-128@2x.png	\
-256.png	\
-256@2x.png	\
-512.png	\
-512@2x.png	\

endif

IMGS=\
$(foreach svg, $(SVGS),$(foreach suf,$(SUFS),$(svg:%.svg=%$(suf))))	\

all:: $(IMGS)

#headless_browser=chrome
headless_browser=firefox

ifeq ($(headless_browser),chrome)

#chrome="$(shell find /Applications -maxdepth 2 -name 'Google Chrome.app' -print -quit)/Contents/MacOS/Google Chrome"
chrome="$(shell find /Applications -maxdepth 2 -name 'Google Chrome*.app' -print -quit)/Contents/MacOS/Google Chrome"
chrome_headless_flags=--lang=ja --headless --window-size=1024,1024

%-1024.png: %.svg
	$(chrome) $(chrome_headless_flags) --screenshot="$@" "$<"
	[ ! -f "$(convert)" ] || { cp -p "$@" "$@".tmp && "$(convert)" -fuzz 10% -transparent white  "$@".tmp "$@"; rm -f "$@".tmp; }

endif
ifeq ($(headless_browser),firefox)

#firefox="$(shell find /Applications -maxdepth 2 -name 'Firefox 56.0.2.app' -print -quit)/Contents/MacOS/firefox"
#firefox="$(shell find /Applications -maxdepth 2 -name 'Firefox.app' -print -quit)/Contents/MacOS/firefox"
firefox="$(shell find /Applications -maxdepth 2 -name 'Firefox*.app' -print -quit)/Contents/MacOS/firefox"
firefox_headless_flags=--headless --profile .profile --window-size 1024,1024

%-1024.png: %.svg
	$(firefox) $(firefox_headless_flags) --screenshot "$@" "data:image/svg+xml;base64,$$(base64 -b 0 "$<")"
	[ ! -f "$(convert)" ] || { cp -p "$@" "$@".tmp && "$(convert)" -fuzz 10% -transparent white  "$@".tmp "$@"; rm -f "$@".tmp; }

endif

# for ios

%-20.png: %-1024.png
	sips -Z 20 "$<" --out "$@"

%-20@2x.png: %-1024.png
	sips -Z 40 "$<" --out "$@"

%-20@3x.png: %-1024.png
	sips -Z 60 "$<" --out "$@"

%-29.png: %-1024.png
	sips -Z 29 "$<" --out "$@"

%-29@2x.png: %-1024.png
	sips -Z 58 "$<" --out "$@"

%-29@3x.png: %-1024.png
	sips -Z 87 "$<" --out "$@"

%-40.png: %-1024.png
	sips -Z 40 "$<" --out "$@"

%-40@2x.png: %-1024.png
	sips -Z 80 "$<" --out "$@"

%-40@3x.png: %-1024.png
	sips -Z 120 "$<" --out "$@"

%-60@2x.png: %-1024.png
	sips -Z 120 "$<" --out "$@"

%-60@3x.png: %-1024.png
	sips -Z 180 "$<" --out "$@"

%-76.png: %-1024.png
	sips -Z 76 "$<" --out "$@"

%-76@2x.png: %-1024.png
	sips -Z 152 "$<" --out "$@"

%-83.5@2x.png: %-1024.png
	sips -Z 167 "$<" --out "$@"

%-1024.jpg: %-1024.png
	sips -s format jpeg "$<" --out "$@"

%-Small-20.png: %-20.png
	cp -p "$<" "$@"

%-Small-20@2x.png: %-20@2x.png
	cp -p "$<" "$@"

%-Small-29.png: %-29.png
	cp -p "$<" "$@"

%-Small-29@2x.png: %-29@2x.png
	cp -p "$<" "$@"

%-Small-40.png: %-40.png
	cp -p "$<" "$@"

%-Small-40@2x.png: %-40@2x.png
	cp -p "$<" "$@"

# for macos

%-16.png: %-1024.png
	sips -Z 16 "$<" --out "$@"

%-16@2x.png: %-1024.png
	sips -Z 32 "$<" --out "$@"

%-32.png: %-1024.png
	sips -Z 32 "$<" --out "$@"

%-32@2x.png: %-1024.png
	sips -Z 64 "$<" --out "$@"

%-128.png: %-1024.png
	sips -Z 128 "$<" --out "$@"

%-128@2x.png: %-1024.png
	sips -Z 256 "$<" --out "$@"

%-256.png: %-1024.png
	sips -Z 256 "$<" --out "$@"

%-256@2x.png: %-1024.png
	sips -Z 512 "$<" --out "$@"

%-512.png: %-1024.png
	sips -Z 512 "$<" --out "$@"

%-512@2x.png: %-1024.png
	sips -Z 1024 "$<" --out "$@"


clean:
	rm -f $(SVGS:%.svg=%-*.png) $(SVGS:%.svg=%-*.jpg) $(SVGS:%.svg=%-1024.png)
	rm -rf .profile

backup:
	[ -d by_$(headless_browser)/for_$(target_app) ] || mkdir -p by_$(headless_browser)/for_$(target_app)
	cp -p $(IMGS) by_$(headless_browser)/for_$(target_app)/

every:
	make target_app=ios   headless_browser=firefox clean all backup
	make target_app=ios   headless_browser=chrome  clean all backup
	make target_app=macos headless_browser=firefox clean all backup
	make target_app=macos headless_browser=chrome  clean all backup
	make clean
