code wiki / (root) / nx_gif_decode_gate.nx

nx_gif_decode_gate.nx source

↩ module page · 57 lines · 3200 B

1// nx_gif_decode_gate.nx -- GREEN/RED gate: decode the REAL page3.com mast3.gif (fetched by nx_archive_media_fetch) 2// with nx_gif_decode and prove it yields a sane, non-blank grayscale image; NEG-CTL rejects a non-GIF buffer. 3// Image stack (syscalls.nx). license_tier: ORIGINAL 4import "nx_gif_decode.nx" 5 6func gw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 7func gn(v: i64) -> i64 { if v==0 { sys_write(1,"0" as *u8,1); return 0 } var m: i64=v; if m<0 { sys_write(1,"-" as *u8,1); m=0-m } let t: *u8=sys_mmap(24); var k: i64=0; while m>0 { t[k]=(48+(m%10)) as u8; m=m/10; k=k+1 } let o: *u8=sys_mmap(24); var w: i64=0; var q: i64=k-1; while q>=0 { o[w]=t[q]; w=w+1; q=q-1 } sys_write(1,o,w); return 0 } 8 9func main() -> i64 { 10 gw("=== nx_gif_decode_gate: decode the real page3 mast3.gif ===\n" as *u8) 11 let box: *i64=sys_mmap(16) as *i64 12 let raw: *u8=sys_read_file("web_assets/archive/media/mast3.gif" as *u8, box) 13 if raw==(0 as *u8) { gw("no mast3.gif -- run nx_archive_media_fetch first\n" as *u8); return 1 } 14 let n: i64=box[0] 15 let wh: *i64=sys_mmap(16) as *i64 16 let gray: *u8=gif_decode(raw, n, wh) 17 18 var pass: i64=0; var tot: i64=0 19 20 // T1 decode succeeded 21 tot=tot+1; var t1: i64=0; if gray != (0 as *u8) { t1=1 } 22 if t1==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 23 gw("T1 DECODE: gray non-null, dims " as *u8); gn(wh[0]); gw("x" as *u8); gn(wh[1]); gw(" (" as *u8); gn(n); gw("B GIF)\n" as *u8) 24 25 // T2 sane dims 26 tot=tot+1; var t2: i64=0 27 if gray != (0 as *u8) { if wh[0]>0 { if wh[1]>0 { if wh[0]<4000 { if wh[1]<4000 { t2=1 } } } } } 28 if t2==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 29 gw("T2 SANE-DIMS: 0 < w,h < 4000\n" as *u8) 30 31 // T3 variance (a real image, not a blank fill) 32 tot=tot+1; var t3: i64=0 33 if gray != (0 as *u8) { 34 let npix: i64=wh[0]*wh[1] 35 var mn: i64=255; var mx: i64=0 36 var i: i64=0 37 while i<npix { let g: i64=gray[i] as i64; if g<mn { mn=g } if g>mx { mx=g } i=i+1 } 38 if mx>mn { t3=1 } 39 gw(" [..] grayscale min=" as *u8); gn(mn); gw(" max=" as *u8); gn(mx); gw("\n" as *u8) 40 } 41 if t3==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 42 gw("T3 VARIANCE: decoded image has real tonal range (not a flat fill)\n" as *u8) 43 44 // T4 NEG-CTL: a non-GIF buffer decodes to null 45 let bad: *u8=sys_mmap(64) 46 bad[0]=0x4e as u8; bad[1]=0x4f as u8; bad[2]=0x54 as u8; bad[3]=0x47 as u8 47 var z: i64=4; while z<32 { bad[z]=0x41 as u8; z=z+1 } 48 let bw: *i64=sys_mmap(16) as *i64 49 let bg: *u8=gif_decode(bad, 32, bw) 50 tot=tot+1; var t4: i64=0; if bg==(0 as *u8) { t4=1 } 51 if t4==1 { pass=pass+1; gw(" [PASS] " as *u8) } else { gw(" [FAIL] " as *u8) } 52 gw("T4 NEG-CTL: non-GIF buffer -> null (no false decode)\n" as *u8) 53 54 gw("\n=== nx_gif_decode_gate " as *u8); gn(pass); gw("/" as *u8); gn(tot); gw(" ===\n" as *u8) 55 if pass==tot { gw("GIF-DECODE-GATE GREEN -- sovereign LZW GIF decode of real page3 media\n" as *u8); sys_exit(0); return 0 } 56 gw("GIF-DECODE-GATE RED\n" as *u8); sys_exit(1); return 1 57}