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}