code wiki / _hdl_build / nx_viz_brush_gate.nx
nx_viz_brush_gate.nx source
↩ module page · 45 lines · 1924 B
1// nx_viz_brush_gate.nx -- REFEREE for brush. extent(50,60,10,20)=[10,20,50,60] (normalized); contains: inside=1,
2// left-of=0, below=0, boundary=1. GREEN iff all. Sovereign: nx_viz_brush. license_tier: ORIGINAL
3import "nx_viz_brush.nx"
4import "nx_syscalls.nx"
5import "nx_gate_verdict.nx"
6
7func g_w(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 }
8func g_row(name: *u8, ok: i64) -> i64 {
9 if ok == 1 { g_w(" PASS " as *u8) } else { g_w(" FAIL " as *u8) }
10 g_w(name); g_w("\n" as *u8)
11 return ok
12}
13
14func main() -> i64 {
15 g_w("viz-brush gate (drag-rectangle extent + hit-test)\n" as *u8)
16 let e: *i64 = sys_mmap(64) as *i64
17 var pass: i64 = 0
18
19 vb_extent(50, 60, 10, 20, e)
20 var t1: i64 = 0
21 if e[0] == 10 { if e[1] == 20 { if e[2] == 50 { if e[3] == 60 { t1 = 1 } } } }
22 pass = pass + g_row("T1 extent normalized -> [10,20,50,60]\x00" as *u8, t1)
23
24 var t2: i64 = 0
25 if vb_contains(e, 30, 40) == 1 { t2 = 1 }
26 pass = pass + g_row("T2 (30,40) inside -> 1\x00" as *u8, t2)
27
28 var t3: i64 = 0
29 if vb_contains(e, 5, 40) == 0 { if vb_contains(e, 30, 70) == 0 { t3 = 1 } }
30 pass = pass + g_row("T3 left-of and below -> 0\x00" as *u8, t3)
31
32 var t4: i64 = 0
33 if vb_contains(e, 10, 20) == 1 { if vb_contains(e, 50, 60) == 1 { t4 = 1 } }
34 pass = pass + g_row("T4 corners inclusive -> 1\x00" as *u8, t4)
35
36 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check
37 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled
38 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify.
39 let ctr__dry: *i64 = gv_ctr()
40 ctr__dry[0] = pass
41 ctr__dry[1] = 4
42 let rc__dry: i64 = gv_verdict("VIZ-BRUSH-GATE" as *u8, ctr__dry, "4/4 (brush extent + hit-test, bits-up)" as *u8)
43 sys_exit(rc__dry)
44 return rc__dry
45}