code wiki / _hdl_build / nx_browser_render_shot.nx

nx_browser_render_shot.nx source

↩ module page · 39 lines · 1666 B

1// nx_browser_render_shot.nx -- R2 proof probe for the CSS-on-native-Windows arc. Reads an HTML file, 2// runs the EXTRACTED render organ (br_layout -> CSS cascade + box layout; br_shot_png -> RGBA framebuffer 3// paint -> PNG), prints box-count + page_h. Verifies nx_browser_render.nx is correct (WSL run) and, built 4// through a keystone, that the CSS layout+paint runs as a native Windows PE. NOT shipped -- a render gate. 5import "nx_browser_render.nx" 6 7func rs_pn(v: i64) -> i64 { 8 var n: i64 = v 9 if n < 0 { sys_write(1, "-\x00" as *u8, 1); n = 0 - n } 10 let b: *u8 = sys_mmap(24) 11 var k: i64 = 0 12 if n == 0 { b[0] = 48 as u8; k = 1 } else { while n > 0 { b[k] = (48 + (n%10)) as u8; n = n/10; k = k+1 } } 13 let o: *u8 = sys_mmap(24) 14 var j: i64 = 0 15 while j < k { o[j] = b[k-1-j]; j = j+1 } 16 sys_write(1, o, k) 17 return 0 18} 19 20func main() -> i64 { 21 let lp: *i64 = sys_mmap(16) as *i64 22 let html: *u8 = sys_read_file("_offc/nxhtml.html\x00" as *u8, lp) 23 let hlen: i64 = lp[0] 24 if hlen <= 0 { sys_write(2, "render_shot: no _offc/nxhtml.html\n\x00" as *u8, 33); return 1 } 25 26 let page: *Page = sys_mmap(NX_PAGE_BYTES) as *Page 27 page.raw = html 28 page.raw_len = hlen 29 br_layout(page, 960) 30 if page.ok != 1 { sys_write(2, "render_shot: layout failed\n\x00" as *u8, 27); return 2 } 31 32 sys_write(1, "boxes=\x00" as *u8, 6); rs_pn(page.tree.count) 33 sys_write(1, " page_h=\x00" as *u8, 8); rs_pn(page.page_h) 34 sys_write(1, "\n\x00" as *u8, 1) 35 36 br_shot_png(page, "render\x00" as *u8, 6, "_offc/nxrender.png\x00" as *u8) 37 sys_write(1, "render_shot: wrote _offc/nxrender.png\n\x00" as *u8, 38) 38 return 0 39}