code wiki / _hdl_build / nx_fg007_probe.nx

nx_fg007_probe.nx source

↩ module page · 44 lines · 2622 B

1// nx_fg007_probe.nx -- DIAGNOSTIC: render flex-grow-007 + its green-square ref; print canvas dims + the 2// green-pixel count of each, to localize why the reftest still diffs (fill vs position vs size). 3import "nx_syscalls.nx" 4import "nx_render_html.nx" 5func g_w(s: *u8) -> i64 { var k: i64=0; while s[k]!=(0 as u8){k=k+1} sys_write(1,s,k); return 0 } 6func pn(v0: i64) -> i64 { var v: i64=v0; if v<0 { let m: *u8=sys_mmap(8); m[0]=45 as u8; sys_write(1,m,1); v=0-v } let b: *u8=sys_mmap(24); var k: i64=0; if v==0 {b[0]=48;k=1} while v>0 {b[k]=(48+(v%10)) as u8; v=v/10; k=k+1} let o: *u8=sys_mmap(24); var j: i64=0; while j<k {o[j]=b[k-1-j];j=j+1} sys_write(1,o,k); return 0 } 7func u32le(d: *u8, p: i64) -> i64 { return (d[p]&0xff) + ((d[p+1]&0xff)<<8) + ((d[p+2]&0xff)<<16) + ((d[p+3]&0xff)<<24) } 8func green_px(a: *u8) -> i64 { 9 let w: i64=u32le(a,18); let h: i64=u32le(a,22); let o: i64=u32le(a,10) 10 let row3: i64=w*3; let pad: i64=(4-(row3%4))%4; let rs: i64=row3+pad 11 var n: i64=0; var y: i64=0 12 while y<h { var x: i64=0 13 while x<w { let p: i64=o+y*rs+x*3 14 if (a[p+1]&0xff)>100 { if (a[p]&0xff)<100 { if (a[p+2]&0xff)<100 { n=n+1 } } } 15 x=x+1 } 16 y=y+1 } 17 return n 18} 19func red_px(a: *u8) -> i64 { 20 let w: i64=u32le(a,18); let h: i64=u32le(a,22); let o: i64=u32le(a,10) 21 let row3: i64=w*3; let pad: i64=(4-(row3%4))%4; let rs: i64=row3+pad 22 var n: i64=0; var y: i64=0 23 while y<h { var x: i64=0 24 while x<w { let p: i64=o+y*rs+x*3 25 if (a[p+2]&0xff)>100 { if (a[p]&0xff)<100 { if (a[p+1]&0xff)<100 { n=n+1 } } } 26 x=x+1 } 27 y=y+1 } 28 return n 29} 30func dims(path: *u8, outbmp: *u8, label: *u8) -> i64 { 31 let lp: *i64 = sys_mmap(8) as *i64 32 let t: *u8 = sys_read_file(path, lp); let tl: i64 = lp[0] 33 if tl <= 0 { g_w(label); g_w(": READ FAIL\n" as *u8); return 0 } 34 let nb: i64 = nx_render_html_to_bmp(t, tl, outbmp) 35 let a: *u8 = sys_read_file(outbmp, lp); if lp[0] < 54 { g_w(label); g_w(": BMP FAIL\n" as *u8); return 0 } 36 g_w(label); g_w(": w=" as *u8); pn(u32le(a,18)); g_w(" h=" as *u8); pn(u32le(a,22)); g_w(" green=" as *u8); pn(green_px(a)); g_w(" red=" as *u8); pn(red_px(a)); g_w(" boxes=" as *u8); pn(nb); g_w("\n" as *u8) 37 return 0 38} 39func main() -> i64 { 40 g_w("=== flex-grow-007 probe ===\n" as *u8) 41 dims("knowledge/wpt/flex-grow-007.html\x00" as *u8, "knowledge/status/fg7_t.bmp\x00" as *u8, "TEST flex-grow-007\x00" as *u8) 42 dims("knowledge/wpt/ref-filled-green-100px-square.xht\x00" as *u8, "knowledge/status/fg7_r.bmp\x00" as *u8, "REF green-square \x00" as *u8) 43 return 0 44}