#!/usr/bin/env python3
from PIL import Image,ImageChops,ImageFont,ImageDraw
from pathlib import Path
import json
root=Path('/tmp/lead-25991-r1/evidence-capture')
out=root/'delivery'
font=ImageFont.truetype('/usr/share/fonts/truetype/liberation/LiberationMono-Regular.ttf',20)
metrics={}
for row,run in [('R01','run-20261027T160500Z'),('R02','run-20261027T161900Z'),('R03','run-20261027T161700Z')]:
 d=root/run
 before=Image.open(d/f'{row}-before.png').convert('RGB')
 after=Image.open(d/f'{row}-after.png').convert('RGB')
 assert before.size==after.size
 for side in ['before','after']:
  assert ImageChops.difference(Image.open(d/f'{row}-{side}.png').convert('RGB'),Image.open(d/f'{row}-{side}-settle2.png').convert('RGB')).getbbox() is None
 diff=ImageChops.difference(before,after)
 diff.point(lambda n:min(255,n*16)).save(out/f'{row}-diff0.png')
 diff.point(lambda n:255 if n>16 else 0).save(out/f'{row}-diff16.png')
 sheet=Image.new('RGB',(before.width*2,before.height+76),'#ffffff')
 draw=ImageDraw.Draw(sheet)
 draw.text((12,8),f'{row} | 1440 x 1000 CSS px | light | whole viewport',fill='#111111',font=font)
 draw.text((12,40),'Before: 36d4d711b7',fill='#111111',font=font)
 draw.text((before.width+12,40),'After: 2061bd78a2',fill='#111111',font=font)
 sheet.paste(before,(0,76));sheet.paste(after,(before.width,76))
 sheet.save(out/f'{row}-sheet.png')
 before.save(out/f'{row}-before.png');after.save(out/f'{row}-after.png')
 metrics[row]={'pngDimensions':before.size,'zeroThresholdBbox':diff.getbbox(),'stable500ms':True,'diff0':'absolute RGB difference amplified 16x, saturating at 255','diffT':'per-channel absolute difference >16/255, binary RGB'}
(out/'image-metrics.json').write_text(json.dumps(metrics,indent=2)+'\n')
print(json.dumps(metrics,indent=2))
