nx_mise_en_scene_test.nx source
↩ module page · 81 lines · 2539 B
1// nx_mise_en_scene_test.nx -- smoke for background-clutter detector.
2
3import "nx_syscalls.nx"
4import "nx_image.nx"
5import "nx_mise_en_scene.nx"
6
7func fill_rect_skin(img: *Image, x0: i64, y0: i64, x1: i64, y1: i64) -> i64 {
8 var y: i64 = y0
9 while y < y1 {
10 var x: i64 = x0
11 while x < x1 {
12 nx_image_set(img, x, y, 0, 200); nx_image_set(img, x, y, 1, 150); nx_image_set(img, x, y, 2, 130)
13 x = x + 1
14 }
15 y = y + 1
16 }
17 return 0
18}
19
20func fill_black(img: *Image) -> i64 {
21 var y: i64 = 0
22 while y < img.height {
23 var x: i64 = 0
24 while x < img.width {
25 nx_image_set(img, x, y, 0, 0); nx_image_set(img, x, y, 1, 0); nx_image_set(img, x, y, 2, 0)
26 x = x + 1
27 }
28 y = y + 1
29 }
30 return 0
31}
32
33// Striped chaos in non-skin area
34func fill_stripes_outside(img: *Image, bx0: i64, by0: i64, bx1: i64, by1: i64) -> i64 {
35 var y: i64 = 0
36 while y < img.height {
37 var x: i64 = 0
38 while x < img.width {
39 var in_box: i64 = 0
40 if x >= bx0 {
41 if x < bx1 { if y >= by0 { if y < by1 { in_box = 1 } } }
42 }
43 if in_box == 0 {
44 var v: i64 = 0
45 let parity: i64 = x - (x / 2) * 2
46 if parity == 1 { v = 255 }
47 nx_image_set(img, x, y, 0, v); nx_image_set(img, x, y, 1, v); nx_image_set(img, x, y, 2, v)
48 }
49 x = x + 1
50 }
51 y = y + 1
52 }
53 return 0
54}
55
56func main() -> i64 {
57 let v: *MiseEnSceneVerdict = (sys_mmap(64)) as *MiseEnSceneVerdict
58
59 // T1: all-black -> CLEAN
60 let img1: *Image = nx_image_alloc(64, 64, 3)
61 fill_black(img1)
62 nx_mise_en_scene_compute(img1, v)
63 if v.kind != NX_MES_CLEAN { return 1 }
64 if v.background_edge_pixels != 0 { return 2 }
65
66 // T2: torso + clean black bg -> CLEAN
67 let img2: *Image = nx_image_alloc(64, 64, 3)
68 fill_black(img2)
69 fill_rect_skin(img2, 20, 20, 45, 45)
70 nx_mise_en_scene_compute(img2, v)
71 if v.kind != NX_MES_CLEAN { return 10 }
72
73 // T3: torso + striped chaos in bg -> CHAOTIC
74 let img3: *Image = nx_image_alloc(64, 64, 3)
75 fill_stripes_outside(img3, 20, 20, 45, 45)
76 fill_rect_skin(img3, 20, 20, 45, 45)
77 nx_mise_en_scene_compute(img3, v)
78 if v.kind != NX_MES_CHAOTIC { return 20 }
79
80 return 0
81}