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}