DST?=kazan-212
TMPPFX?=tmp

CPUS?=4
MEM?=6144
DEPTH?=16
IMCOMP?=lzw
ENCOMP?=LZW
NONAEX?=
FFUSEX?= --fallback-profile='${RGBPROFILE}' --ciecam --no-gpu
EFUSEX?= --no-gpu
BLNDEX?=--parameter=black-alpha-mask-check-isolated-points-threshold=1024 --blend-colorspace=IDENTITY -f 4320x2880+160+64 --no-gpu
OBLEND?=--optimizer-weights=${ENOW} --anneal=${ENAN} --dijkstra=${ENDI}
ENPSG?=nearest-feature-transform
ENCM?=32
ENCMV?=4%
ENFMV?=10%
ENOW?=8:1
ENAN?=0.995:7000:5:125
ENDI?=50
RGBPROFILE?=../../tools/profiles/RGB.icc
sRGBPROFILE?=../../tools/profiles/sRGB.icm
RGB?=-profile ${sRGBPROFILE} -profile ${RGBPROFILE}
sRGB?=-profile ${RGBPROFILE} -profile ${sRGBPROFILE}
DPI?=150

CONV?=convert -limit area ${MEM}MiB -limit map ${MEM}MiB
REMAP?=eval nona -v -t ${CPUS} -m TIFF_m -r ldr -p UINT${DEPTH} -z ${ENCOMP} ${NONAEX} -o ${TMPPFX}-
FFUSE?=eval enblend -v --compression=${ENCOMP} ${OBLEND} --primary-seam-generator=${ENPSG} --fine-mask --mask-vectorize=${ENFMV} ${BLNDEX} --primary-seam-generator=graph-cut --no-optimize
MERGE?=unset EXIFTOOL EXIFTAG; TMPPFX=${TMPPFX}; export TMPPFX; eval sh ../../tools/luminance-wrapper -v -c weight=gaussian:response_curve=from_file:curve_filename=${DST}.m:model=debevec -m ${HDRBEV} -P ${DST}.pto -O
DEGHOST?=deghosting_mask -v -s 60 -c 0.8 -t 150 -i 8 -a mw
BLEND?=eval enblend -v --compression=${ENCOMP} ${OBLEND} --primary-seam-generator=${ENPSG} --coarse-mask=${ENCM} --mask-vectorize=${ENCMV} ${BLNDEX}
INPNT?=greycstoration -iter 512 -bits 16 -inpaint

EXIFTFF?=exiftool -overwrite_original -P -TagsFromFile
#EXIFTAG?=-EXIF:ExposureTime -EXIF:ShutterSpeedValue -EXIF:ApertureValue -EXIF:ISO
EXIFTAG?=-EXIF:FNumber -EXIF:ApertureValue -EXIF:ShutterSpeedValue -EXIF:ExposureTime -EXIF:BulbDuration -EXIF:ISO -EXIF:FocalLength -EXIF:FocalPlaneXResolution -EXIF:FocalPlaneYResolution -EXIF:FocalPlaneResolutionUnit -XResolution=${DPI} -YResolution=${DPI}

RMSRC=echo
RMTMP=echo
RMDST=echo
MV=mv
LN=ln -f

all: ${DST}.tiff

HDRBEV?=8.00000000000000

${TMPPFX}-0000.tif: ${DST}.pto 00-e00-f0000.tiff
	@#${MV} 00-e00-f0000.tiff x00-e00-f0000.tiff
	@#${CONV} x00-e00-f0000.tiff +strip -compress ${IMCOMP} 00-e00-f0000.tiff
	@${REMAP} -i 0 -e 2.01197264166608 ${DST}.pto
	@#${MV} x00-e00-f0000.tiff 00-e00-f0000.tiff
${TMPPFX}f00-e00-f0000.tiff: ${TMPPFX}-0000.tif
	@${LN} ${TMPPFX}-0000.tif ${TMPPFX}f00-e00-f0000.tiff
	@${EXIFTFF} 00-e00-f0000.tiff ${EXIFTAG} ${TMPPFX}f00-e00-f0000.tiff
	@${RMTMP} ${TMPPFX}-0000.tif
${TMPPFX}-0005.tif: ${DST}.pto 00-e00-f0001.tiff
	@#${MV} 00-e00-f0001.tiff x00-e00-f0001.tiff
	@#${CONV} x00-e00-f0001.tiff +strip -compress ${IMCOMP} 00-e00-f0001.tiff
	@${REMAP} -i 5 -e 2.01197264166608 ${DST}.pto
	@#${MV} x00-e00-f0001.tiff 00-e00-f0001.tiff
${TMPPFX}f00-e00-f0001.tiff: ${TMPPFX}-0005.tif
	@${LN} ${TMPPFX}-0005.tif ${TMPPFX}f00-e00-f0001.tiff
	@${EXIFTFF} 00-e00-f0001.tiff ${EXIFTAG} ${TMPPFX}f00-e00-f0001.tiff
	@${RMTMP} ${TMPPFX}-0005.tif
${TMPPFX}et00-e00.tiff: ${TMPPFX}f00-e00-f0000.tiff ${TMPPFX}f00-e00-f0001.tiff
	@${FFUSE} -o ${TMPPFX}et00-e00.tiff ${TMPPFX}f00-e00-f0000.tiff ${TMPPFX}f00-e00-f0001.tiff
	@${EXIFTFF} ${TMPPFX}f00-e00-f0000.tiff ${EXIFTAG} ${TMPPFX}et00-e00.tiff
	@${RMTMP} ${TMPPFX}f00-e00-f0000.tiff ${TMPPFX}f00-e00-f0001.tiff
${TMPPFX}e00-e00.tiff: ${TMPPFX}et00-e00.tiff
	@${CONV} ${TMPPFX}et00-e00.tiff \
		 +profile ICC -profile ${sRGBPROFILE} \
		-compress ${IMCOMP} ${TMPPFX}e00-e00.tiff
	@${EXIFTFF} ${TMPPFX}et00-e00.tiff ${EXIFTAG} ${TMPPFX}e00-e00.tiff
	@${RMTMP} ${TMPPFX}et00-e00.tiff
${TMPPFX}-0001.tif: ${DST}.pto 00-e01-f0000.tiff
	@#${MV} 00-e01-f0000.tiff x00-e01-f0000.tiff
	@#${CONV} x00-e01-f0000.tiff +strip -compress ${IMCOMP} 00-e01-f0000.tiff
	@${REMAP} -i 1 -e 4.91886323727459 ${DST}.pto
	@#${MV} x00-e01-f0000.tiff 00-e01-f0000.tiff
${TMPPFX}f00-e01-f0000.tiff: ${TMPPFX}-0001.tif
	@${LN} ${TMPPFX}-0001.tif ${TMPPFX}f00-e01-f0000.tiff
	@${EXIFTFF} 00-e01-f0000.tiff ${EXIFTAG} ${TMPPFX}f00-e01-f0000.tiff
	@${RMTMP} ${TMPPFX}-0001.tif
${TMPPFX}-0006.tif: ${DST}.pto 00-e01-f0001.tiff
	@#${MV} 00-e01-f0001.tiff x00-e01-f0001.tiff
	@#${CONV} x00-e01-f0001.tiff +strip -compress ${IMCOMP} 00-e01-f0001.tiff
	@${REMAP} -i 6 -e 4.91886323727459 ${DST}.pto
	@#${MV} x00-e01-f0001.tiff 00-e01-f0001.tiff
${TMPPFX}f00-e01-f0001.tiff: ${TMPPFX}-0006.tif
	@${LN} ${TMPPFX}-0006.tif ${TMPPFX}f00-e01-f0001.tiff
	@${EXIFTFF} 00-e01-f0001.tiff ${EXIFTAG} ${TMPPFX}f00-e01-f0001.tiff
	@${RMTMP} ${TMPPFX}-0006.tif
${TMPPFX}et00-e01.tiff: ${TMPPFX}f00-e01-f0000.tiff ${TMPPFX}f00-e01-f0001.tiff
	@${FFUSE} -o ${TMPPFX}et00-e01.tiff ${TMPPFX}f00-e01-f0000.tiff ${TMPPFX}f00-e01-f0001.tiff
	@${EXIFTFF} ${TMPPFX}f00-e01-f0000.tiff ${EXIFTAG} ${TMPPFX}et00-e01.tiff
	@${RMTMP} ${TMPPFX}f00-e01-f0000.tiff ${TMPPFX}f00-e01-f0001.tiff
${TMPPFX}e00-e01.tiff: ${TMPPFX}et00-e01.tiff
	@${CONV} ${TMPPFX}et00-e01.tiff \
		 +profile ICC -profile ${sRGBPROFILE} \
		-compress ${IMCOMP} ${TMPPFX}e00-e01.tiff
	@${EXIFTFF} ${TMPPFX}et00-e01.tiff ${EXIFTAG} ${TMPPFX}e00-e01.tiff
	@${RMTMP} ${TMPPFX}et00-e01.tiff
${TMPPFX}-0002.tif: ${DST}.pto 00-e02-f0000.tiff
	@#${MV} 00-e02-f0000.tiff x00-e02-f0000.tiff
	@#${CONV} x00-e02-f0000.tiff +strip -compress ${IMCOMP} 00-e02-f0000.tiff
	@${REMAP} -i 2 -e 7.91886323727459 ${DST}.pto
	@#${MV} x00-e02-f0000.tiff 00-e02-f0000.tiff
${TMPPFX}f00-e02-f0000.tiff: ${TMPPFX}-0002.tif
	@${LN} ${TMPPFX}-0002.tif ${TMPPFX}f00-e02-f0000.tiff
	@${EXIFTFF} 00-e02-f0000.tiff ${EXIFTAG} ${TMPPFX}f00-e02-f0000.tiff
	@${RMTMP} ${TMPPFX}-0002.tif
${TMPPFX}-0007.tif: ${DST}.pto 00-e02-f0001.tiff
	@#${MV} 00-e02-f0001.tiff x00-e02-f0001.tiff
	@#${CONV} x00-e02-f0001.tiff +strip -compress ${IMCOMP} 00-e02-f0001.tiff
	@${REMAP} -i 7 -e 7.91886323727459 ${DST}.pto
	@#${MV} x00-e02-f0001.tiff 00-e02-f0001.tiff
${TMPPFX}f00-e02-f0001.tiff: ${TMPPFX}-0007.tif
	@${LN} ${TMPPFX}-0007.tif ${TMPPFX}f00-e02-f0001.tiff
	@${EXIFTFF} 00-e02-f0001.tiff ${EXIFTAG} ${TMPPFX}f00-e02-f0001.tiff
	@${RMTMP} ${TMPPFX}-0007.tif
${TMPPFX}et00-e02.tiff: ${TMPPFX}f00-e02-f0000.tiff ${TMPPFX}f00-e02-f0001.tiff
	@${FFUSE} -o ${TMPPFX}et00-e02.tiff ${TMPPFX}f00-e02-f0000.tiff ${TMPPFX}f00-e02-f0001.tiff
	@${EXIFTFF} ${TMPPFX}f00-e02-f0000.tiff ${EXIFTAG} ${TMPPFX}et00-e02.tiff
	@${RMTMP} ${TMPPFX}f00-e02-f0000.tiff ${TMPPFX}f00-e02-f0001.tiff
${TMPPFX}e00-e02.tiff: ${TMPPFX}et00-e02.tiff
	@${CONV} ${TMPPFX}et00-e02.tiff \
		 +profile ICC -profile ${sRGBPROFILE} \
		-compress ${IMCOMP} ${TMPPFX}e00-e02.tiff
	@${EXIFTFF} ${TMPPFX}et00-e02.tiff ${EXIFTAG} ${TMPPFX}e00-e02.tiff
	@${RMTMP} ${TMPPFX}et00-e02.tiff
${TMPPFX}-0003.tif: ${DST}.pto 00-e03-f0000.tiff
	@#${MV} 00-e03-f0000.tiff x00-e03-f0000.tiff
	@#${CONV} x00-e03-f0000.tiff +strip -compress ${IMCOMP} 00-e03-f0000.tiff
	@${REMAP} -i 3 -e 10.8257537576407 ${DST}.pto
	@#${MV} x00-e03-f0000.tiff 00-e03-f0000.tiff
${TMPPFX}f00-e03-f0000.tiff: ${TMPPFX}-0003.tif
	@${LN} ${TMPPFX}-0003.tif ${TMPPFX}f00-e03-f0000.tiff
	@${EXIFTFF} 00-e03-f0000.tiff ${EXIFTAG} ${TMPPFX}f00-e03-f0000.tiff
	@${RMTMP} ${TMPPFX}-0003.tif
${TMPPFX}-0008.tif: ${DST}.pto 00-e03-f0001.tiff
	@#${MV} 00-e03-f0001.tiff x00-e03-f0001.tiff
	@#${CONV} x00-e03-f0001.tiff +strip -compress ${IMCOMP} 00-e03-f0001.tiff
	@${REMAP} -i 8 -e 10.8257537576407 ${DST}.pto
	@#${MV} x00-e03-f0001.tiff 00-e03-f0001.tiff
${TMPPFX}f00-e03-f0001.tiff: ${TMPPFX}-0008.tif
	@${LN} ${TMPPFX}-0008.tif ${TMPPFX}f00-e03-f0001.tiff
	@${EXIFTFF} 00-e03-f0001.tiff ${EXIFTAG} ${TMPPFX}f00-e03-f0001.tiff
	@${RMTMP} ${TMPPFX}-0008.tif
${TMPPFX}et00-e03.tiff: ${TMPPFX}f00-e03-f0000.tiff ${TMPPFX}f00-e03-f0001.tiff
	@${FFUSE} -o ${TMPPFX}et00-e03.tiff ${TMPPFX}f00-e03-f0000.tiff ${TMPPFX}f00-e03-f0001.tiff
	@${EXIFTFF} ${TMPPFX}f00-e03-f0000.tiff ${EXIFTAG} ${TMPPFX}et00-e03.tiff
	@${RMTMP} ${TMPPFX}f00-e03-f0000.tiff ${TMPPFX}f00-e03-f0001.tiff
${TMPPFX}e00-e03.tiff: ${TMPPFX}et00-e03.tiff
	@${CONV} ${TMPPFX}et00-e03.tiff \
		 +profile ICC -profile ${sRGBPROFILE} \
		-compress ${IMCOMP} ${TMPPFX}e00-e03.tiff
	@${EXIFTFF} ${TMPPFX}et00-e03.tiff ${EXIFTAG} ${TMPPFX}e00-e03.tiff
	@${RMTMP} ${TMPPFX}et00-e03.tiff
${TMPPFX}-0004.tif: ${DST}.pto 00-e04-f0000.tiff
	@#${MV} 00-e04-f0000.tiff x00-e04-f0000.tiff
	@#${CONV} x00-e04-f0000.tiff +strip -compress ${IMCOMP} 00-e04-f0000.tiff
	@${REMAP} -i 4 -e 13.8846474534123 ${DST}.pto
	@#${MV} x00-e04-f0000.tiff 00-e04-f0000.tiff
${TMPPFX}f00-e04-f0000.tiff: ${TMPPFX}-0004.tif
	@${LN} ${TMPPFX}-0004.tif ${TMPPFX}f00-e04-f0000.tiff
	@${EXIFTFF} 00-e04-f0000.tiff ${EXIFTAG} ${TMPPFX}f00-e04-f0000.tiff
	@${RMTMP} ${TMPPFX}-0004.tif
${TMPPFX}-0009.tif: ${DST}.pto 00-e04-f0001.tiff
	@#${MV} 00-e04-f0001.tiff x00-e04-f0001.tiff
	@#${CONV} x00-e04-f0001.tiff +strip -compress ${IMCOMP} 00-e04-f0001.tiff
	@${REMAP} -i 9 -e 13.8846474534123 ${DST}.pto
	@#${MV} x00-e04-f0001.tiff 00-e04-f0001.tiff
${TMPPFX}f00-e04-f0001.tiff: ${TMPPFX}-0009.tif
	@${LN} ${TMPPFX}-0009.tif ${TMPPFX}f00-e04-f0001.tiff
	@${EXIFTFF} 00-e04-f0001.tiff ${EXIFTAG} ${TMPPFX}f00-e04-f0001.tiff
	@${RMTMP} ${TMPPFX}-0009.tif
${TMPPFX}et00-e04.tiff: ${TMPPFX}f00-e04-f0000.tiff ${TMPPFX}f00-e04-f0001.tiff
	@${FFUSE} -o ${TMPPFX}et00-e04.tiff ${TMPPFX}f00-e04-f0000.tiff ${TMPPFX}f00-e04-f0001.tiff
	@${EXIFTFF} ${TMPPFX}f00-e04-f0000.tiff ${EXIFTAG} ${TMPPFX}et00-e04.tiff
	@${RMTMP} ${TMPPFX}f00-e04-f0000.tiff ${TMPPFX}f00-e04-f0001.tiff
${TMPPFX}e00-e04.tiff: ${TMPPFX}et00-e04.tiff
	@${CONV} ${TMPPFX}et00-e04.tiff \
		 +profile ICC -profile ${sRGBPROFILE} \
		-compress ${IMCOMP} ${TMPPFX}e00-e04.tiff
	@${EXIFTFF} ${TMPPFX}et00-e04.tiff ${EXIFTAG} ${TMPPFX}e00-e04.tiff
	@${RMTMP} ${TMPPFX}et00-e04.tiff
${TMPPFX}t00.tiff: ${TMPPFX}e00-e00.tiff ${TMPPFX}e00-e01.tiff ${TMPPFX}e00-e02.tiff ${TMPPFX}e00-e03.tiff ${TMPPFX}e00-e04.tiff
	@${MERGE} -o ${TMPPFX}t00.tiff ${TMPPFX}e00-e00.tiff ${TMPPFX}e00-e01.tiff ${TMPPFX}e00-e02.tiff ${TMPPFX}e00-e03.tiff ${TMPPFX}e00-e04.tiff
	@${RMTMP} ${TMPPFX}e00-e00.tiff ${TMPPFX}e00-e01.tiff ${TMPPFX}e00-e02.tiff ${TMPPFX}e00-e03.tiff ${TMPPFX}e00-e04.tiff
${TMPPFX}00.tiff: ${TMPPFX}t00.tiff
	@${CONV} ${TMPPFX}t00.tiff \
		 -evaluate multiply 554.620435617365 \
		-compress ${IMCOMP} ${TMPPFX}00.tiff
	@${RMTMP} ${TMPPFX}t00.tiff

${TMPPFX}.tiff: ${TMPPFX}00.tiff
	@${RMSRC}  00-e00-f0000.tiff ${TMPPFX}-0000_gray.pgm 00-e00-f0001.tiff ${TMPPFX}-0005_gray.pgm 00-e01-f0000.tiff ${TMPPFX}-0001_gray.pgm 00-e01-f0001.tiff ${TMPPFX}-0006_gray.pgm 00-e02-f0000.tiff ${TMPPFX}-0002_gray.pgm 00-e02-f0001.tiff ${TMPPFX}-0007_gray.pgm 00-e03-f0000.tiff ${TMPPFX}-0003_gray.pgm 00-e03-f0001.tiff ${TMPPFX}-0008_gray.pgm 00-e04-f0000.tiff ${TMPPFX}-0004_gray.pgm 00-e04-f0001.tiff ${TMPPFX}-0009_gray.pgm
	@${BLEND} -o ${TMPPFX}.tiff ${TMPPFX}00.tiff
	@${RMTMP} ${TMPPFX}00.tiff
	@${CONV} ${TMPPFX}.tiff \
		-define compose:clamp=false \
		 \
		-evaluate divide 65535 \
		 \
		-compress ${IMCOMP} ${TMPPFX}.tiff
${DST}.tiff: ${TMPPFX}.tiff 
	@pfsin ${TMPPFX}.tiff \
	 | pfsclamp --min 1e-9 --max 1e+20 \
	 | pfsgamma -m 1.00 -g 1.00 \
	 | pfswb -v -r 1.000 -g 1.000 -b 1.000 \
	 | pfsclamp --min 1e-9 --max 1e+20 \
	 | tee ${TMPPFX}.pfs \
	 | pfstmo_mantiuk06 -v -f 0.100 -s 1.125 \
	 | pfsgamma -m 0.350 -g 1.150 \
	 | pfsoutimgmagick -s -b 16 ${DST}.1.tiff
	@pfstmo_reinhard02 <${TMPPFX}.pfs -v -k 0.090 \
	 | pfsgamma -m 0.900 -g 1.00 \
	 | pfsoutimgmagick -s -b 16 ${DST}.0.tiff
	@${RMTMP} ${TMPPFX}.tiff ${TMPPFX}.pfs
	#@${CONV} ${DST}.0.tiff +matte +repage \
	#	\( ${DST}.1.tiff +matte +repage \
	#	    \( +clone +level  -alpha copy \) \
	#	    -compose copy-opacity -composite \) \
	#	-compose  -composite +matte \
	#	 -compress ${IMCOMP} ${DST}.tiff
	@${CONV} ${DST}.0.tiff +matte +repage \
		\( +clone \
			\( +clone \( -channel RG -separate -channel RGB \) -compose lighten -composite -colorspace gray \) +swap \( -channel B -separate -channel RGB \) -compose lighten -composite -colorspace gray \
			+level 35%,60%,1.0125 \
			-gaussian-blur 0x0.333333 \
			-alpha copy \
			\( ${DST}.1.tiff +matte +repage \) \
			+swap \
			-compose copy-opacity -composite \) \
		-compose overlay -composite +matte \
		\( +clone \
			\( +clone \( -channel RG -separate -channel RGB \) -compose lighten -composite -colorspace gray \) +swap \( -channel B -separate -channel RGB \) -compose lighten -composite -colorspace gray \
			+level 60%,75%,0.9750 \
			-gaussian-blur 0x1.333333 \
			-alpha copy \
			\( ${DST}.1.tiff +matte +repage \) \
			+swap \
			-compose copy-opacity -composite \) \
		-compose src-over -composite +matte \
		 -compress ${IMCOMP} ${DST}.tiff
	@${RMTMP} ${DST}.[01].tiff

clean: 
	@-${RMSRC} 00-e00-f0000.tiff ${TMPPFX}-0000_gray.pgm 00-e00-f0001.tiff ${TMPPFX}-0005_gray.pgm 00-e01-f0000.tiff ${TMPPFX}-0001_gray.pgm 00-e01-f0001.tiff ${TMPPFX}-0006_gray.pgm 00-e02-f0000.tiff ${TMPPFX}-0002_gray.pgm 00-e02-f0001.tiff ${TMPPFX}-0007_gray.pgm 00-e03-f0000.tiff ${TMPPFX}-0003_gray.pgm 00-e03-f0001.tiff ${TMPPFX}-0008_gray.pgm 00-e04-f0000.tiff ${TMPPFX}-0004_gray.pgm 00-e04-f0001.tiff ${TMPPFX}-0009_gray.pgm
	@-${RMTMP} ${TMPPFX}-0000.tif ${TMPPFX}-0005.tif ${TMPPFX}f00-e00-f0000.tiff ${TMPPFX}f00-e00-f0001.tiff ${TMPPFX}-0001.tif ${TMPPFX}-0006.tif ${TMPPFX}f00-e01-f0000.tiff ${TMPPFX}f00-e01-f0001.tiff ${TMPPFX}-0002.tif ${TMPPFX}-0007.tif ${TMPPFX}f00-e02-f0000.tiff ${TMPPFX}f00-e02-f0001.tiff ${TMPPFX}-0003.tif ${TMPPFX}-0008.tif ${TMPPFX}f00-e03-f0000.tiff ${TMPPFX}f00-e03-f0001.tiff ${TMPPFX}-0004.tif ${TMPPFX}-0009.tif ${TMPPFX}f00-e04-f0000.tiff ${TMPPFX}f00-e04-f0001.tiff
	@-${RMTMP} ${TMPPFX}et00-e00.tiff ${TMPPFX}et00-e01.tiff ${TMPPFX}et00-e02.tiff ${TMPPFX}et00-e03.tiff ${TMPPFX}et00-e04.tiff ${TMPPFX}e00-e00.tiff ${TMPPFX}e00-e01.tiff ${TMPPFX}e00-e02.tiff ${TMPPFX}e00-e03.tiff ${TMPPFX}e00-e04.tiff ${TMPPFX}t00.tiff
	@-${RMTMP} ${TMPPFX}00.tiff
	@-${RMTMP} ${TMPPFX}.tiff 
	@-${RMDST} ${DST}.tiff
