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}