code wiki / _hdl_build / nx_editor_canvas_gate.nx
nx_editor_canvas_gate.nx source
↩ module page · 66 lines · 2690 B
1// nx_editor_canvas_gate.nx -- the editor-maturity engine: snap-all, align L/R, distribute, nudge, undo all correct.
2// 100% sovereign. expect_exit: 0
3import "nx_syscalls.nx"
4import "nx_sitegate_emit_lib.nx"
5import "nx_editor_canvas.nx"
6
7
8func put(c: *i64, i: i64, x: i64, y: i64, w: i64, h: i64) -> i64 { c[i*5+0]=0; c[i*5+1]=x; c[i*5+2]=y; c[i*5+3]=w; c[i*5+4]=h; return 0 }
9
10func main() -> i64 {
11 let tot: *i64 = sys_mmap(32) as *i64
12 tot[0]=0; tot[1]=0
13 let c: *i64 = sys_mmap(512) as *i64
14 let h: *i64 = sys_mmap(512) as *i64
15 gw("=== nx_editor_canvas_gate -- editor-maturity engine (snap/align/distribute/nudge/undo) ===\n" as *u8)
16
17 // T1 snap-all
18 put(c, 0, 37, 11, 63, 20); put(c, 1, 35, 63, 10, 10)
19 ec_snap_all(c, 2, 8)
20 var t1: i64 = 0
21 if c[1]==40 { if c[2]==8 { if c[3]==64 { if c[6]==32 { if c[7]==64 { if c[8]==8 { t1 = 1 } } } } } }
22 t_row("T1 snap-all: (37,11,63)->(40,8,64), (35,63,10)->(32,64,8)" as *u8, t1, tot)
23
24 // T2 align-left
25 put(c, 0, 10, 0, 5, 5); put(c, 1, 40, 0, 5, 5); put(c, 2, 70, 0, 5, 5)
26 ec_align(c, 3, 0)
27 var t2: i64 = 0
28 if c[1]==10 { if c[6]==10 { if c[11]==10 { t2 = 1 } } }
29 t_row("T2 align-left: x={10,40,70} -> all 10" as *u8, t2, tot)
30
31 // T3 align-right
32 put(c, 0, 10, 0, 20, 5); put(c, 1, 40, 0, 10, 5); put(c, 2, 70, 0, 30, 5)
33 ec_align(c, 3, 1)
34 var t3: i64 = 0
35 if c[1]==80 { if c[6]==90 { if c[11]==70 { t3 = 1 } } }
36 t_row("T3 align-right: right edges aligned (maxr=100) -> x={80,90,70}" as *u8, t3, tot)
37
38 // T4 distribute-h
39 put(c, 0, 0, 0, 5, 5); put(c, 1, 5, 0, 5, 5); put(c, 2, 100, 0, 5, 5)
40 ec_distribute_h(c, 3)
41 var t4: i64 = 0
42 if c[1]==0 { if c[6]==50 { if c[11]==100 { t4 = 1 } } }
43 t_row("T4 distribute-h: x={0,5,100} -> evenly {0,50,100}" as *u8, t4, tot)
44
45 // T5 nudge
46 put(c, 0, 10, 10, 5, 5)
47 ec_nudge(c, 0, 5, 0-3)
48 var t5: i64 = 0
49 if c[1]==15 { if c[2]==7 { t5 = 1 } }
50 t_row("T5 nudge: (10,10) + (5,-3) -> (15,7)" as *u8, t5, tot)
51
52 // T6 undo
53 put(c, 0, 100, 100, 5, 5)
54 ec_save(c, 1, h)
55 ec_nudge(c, 0, 50, 50)
56 var moved: i64 = 0; if c[1]==150 { if c[2]==150 { moved = 1 } }
57 ec_undo(c, 1, h)
58 var t6: i64 = 0
59 if moved==1 { if c[1]==100 { if c[2]==100 { t6 = 1 } } }
60 t_row("T6 undo: snapshot -> move -> undo restores (100,100)" as *u8, t6, tot)
61
62 gw("\nrows pass=" as *u8); gn(tot[0]); gw(" fail=" as *u8); gn(tot[1]); gw("\n" as *u8)
63 if tot[1] == 0 { gw("VERDICT=GREEN -- editor-maturity engine: snap/align/distribute/nudge/undo (sovereign; UI shim = follow-on; vs Webflow UI-polish = honest BEHIND)\n" as *u8); return 0 }
64 gw("VERDICT=RED\n" as *u8)
65 return 1
66}