// image-demo.el - Drive the native PNG surface: plan a scene from a small // meaning phrase (incl. a NEG frame) and emit a byte-valid 64x64 PNG whose // palette is read from elp/faculty/sig/scene.basis. fn img_frame(relation: String, polarity: String, confidence: String, importance: String, salience: String, subj_id: String) -> [String] { let f: [String] = native_list_empty() let f: [String] = native_list_append(f, "relation") let f: [String] = native_list_append(f, relation) let f: [String] = native_list_append(f, "polarity") let f: [String] = native_list_append(f, polarity) let f: [String] = native_list_append(f, "confidence") let f: [String] = native_list_append(f, confidence) let f: [String] = native_list_append(f, "importance") let f: [String] = native_list_append(f, importance) let f: [String] = native_list_append(f, "salience") let f: [String] = native_list_append(f, salience) let f: [String] = native_list_append(f, "subj_id") let f: [String] = native_list_append(f, subj_id) return f } fn rgb_str(c: [Int]) -> String { return int_to_str(native_list_get(c, 0)) + "," + int_to_str(native_list_get(c, 1)) + "," + int_to_str(native_list_get(c, 2)) } fn run_image() -> Int { fs_mkdir("/Users/will/Development/neuron-technologies/foundation/el/.claude/worktrees/agent-aaf04b0a9714c4070/elp/faculty/out") let table: [Int] = crc_table() println("crc_table[1]=" + int_to_str(native_list_get(table, 1)) + " (expect 1996959894 / 0x77073096)") let basis: [String] = basis_load("/Users/will/Development/neuron-technologies/foundation/el/.claude/worktrees/agent-aaf04b0a9714c4070/elp/faculty/sig/scene.basis") let warm: [Int] = parse_rgb(basis_field(basis, "warm")) let cool: [Int] = parse_rgb(basis_field(basis, "cool")) let bg: [Int] = parse_rgb(basis_field(basis, "bg")) println("basis warm=" + rgb_str(warm) + " cool=" + rgb_str(cool) + " bg=" + rgb_str(bg) + " (read from scene.basis)") let frames: [[String]] = native_list_empty() let frames: [[String]] = native_list_append(frames, img_frame("agent", "aff", "0.9", "0.8", "0", "s1")) let frames: [[String]] = native_list_append(frames, img_frame("theme", "aff", "0.7", "0.6", "1", "s2")) let frames: [[String]] = native_list_append(frames, img_frame("cause", "aff", "0.8", "0.9", "0", "s3")) let frames: [[String]] = native_list_append(frames, img_frame("negation", "neg", "0.85", "0.7", "1", "s4")) let frames: [[String]] = native_list_append(frames, img_frame("goal", "aff", "0.6", "0.5", "0", "s5")) let frames: [[String]] = native_list_append(frames, img_frame("result", "aff", "0.95", "1.0", "1", "s6")) let shapes: [[Int]] = plan_scene(frames, warm, cool) let ns: Int = native_list_len(shapes) println("planned " + int_to_str(ns) + " shapes:") let si: Int = 0 while si < ns { let sh: [Int] = native_list_get(shapes, si) let pol: String = surface_get(native_list_get(frames, si), "polarity") println(" shape " + int_to_str(si) + " type=" + int_to_str(native_list_get(sh, 0)) + " x=" + int_to_str(native_list_get(sh, 1)) + " y=" + int_to_str(native_list_get(sh, 2)) + " size=" + int_to_str(native_list_get(sh, 3)) + " rgb=" + int_to_str(native_list_get(sh, 4)) + "," + int_to_str(native_list_get(sh, 5)) + "," + int_to_str(native_list_get(sh, 6)) + " polarity=" + pol) let si: Int = si + 1 } let raw: [Int] = rasterize(64, 64, shapes, bg) println("rasterized raw (filtered scanlines) bytes=" + int_to_str(native_list_len(raw)) + " (expect 12352)") let png: [Int] = png_build(64, 64, raw, table) let plen: Int = native_list_len(png) let ok: Int = png_write("/Users/will/Development/neuron-technologies/foundation/el/.claude/worktrees/agent-aaf04b0a9714c4070/elp/faculty/out/scene.png", png) println("PNG bytes=" + int_to_str(plen) + " -> /Users/will/Development/neuron-technologies/foundation/el/.claude/worktrees/agent-aaf04b0a9714c4070/elp/faculty/out/scene.png (write_ok=" + int_to_str(ok) + ")") return plen } println("image-demo returned png_bytes=" + int_to_str(run_image()))