code wiki / (root) / nx_nxa_corner_prepare_t280.nx

nx_nxa_corner_prepare_t280.nx source

↩ module page · 26 lines · 1594 B

1import "nx_nxa_corner_prepare_candidate_t280.nx" 2import "nx_gate_verdict.nx" 3// Callable chart preparation only. Conformal solving/measurement is a later explicit stage; 4// prepared source coverage does not qualify UVs, anatomy, skinning conversion or rendering. 5func main(argc:i64,argv:*i64)->i64{ 6 if argc<3{gv_puts("usage: nx_nxa_corner_prepare source.nxa new-output.ncp [seams.i64]\n");return 2} 7 if argc>4{return 2} 8 let lens:*i64=sys_mmap_try(24) as *i64;if (lens as i64)<=0{return 3} 9 let b:*u8=sys_read_file(argv[1] as *u8,lens);if b==(0 as *u8){return 4} 10 let n:i64=lens[0];let m:*i64=ncp_model_nxa(b,n);if m==(0 as *i64){return 5} 11 if argc==4{ 12 let s:*u8=sys_read_file(argv[3] as *u8,lens);if s==(0 as *u8){return 6} 13 if lens[0]%8!=0{return 6} 14 let sr:i64=ncp_seams(m,s as *i64,lens[0]/8);if sr!=UV_OK{gv_puts("NCP seam input refused\n");return 6} 15 } 16 let rc:i64=uv_chart_build(m) 17 let p:*u8=ncp_emit(m,b,n,rc,lens);if p==(0 as *u8){return 7} 18 let fd:i64=sys_openat_exclusive(argv[2] as *u8,MODE_0600);if fd<0{return 8} 19 var wrote:i64=0 20 while wrote<lens[0]{let count:i64=sys_write(fd,((p as i64)+wrote) as *u8,lens[0]-wrote);if count<=0{sys_close(fd);return 9};wrote=wrote+count} 21 sys_close(fd) 22 let w:*i64=p as *i64 23 gv_puts("NCP prepared source corners=");gv_num(w[6]);gv_puts(" charts=");gv_num(w[9]);gv_puts(" uvQualifiedCorners=");gv_num(w[10]);gv_puts(" stage=");gv_num(w[7]);gv_puts(" result=");gv_num(rc);gv_puts(" bytes=");gv_num(lens[0]);gv_puts("\n") 24 sys_munmap_direct(p,lens[0]);ncp_model_free(m);sys_munmap_direct(lens as *u8,24) 25 if rc!=UV_OK{return 10};return 0 26}