code wiki / (root) / nx_skin_texture_test.nx

nx_skin_texture_test.nx source

↩ module page · 55 lines · 1699 B

1import "nx_syscalls.nx" 2import "nx_image.nx" 3import "nx_region.nx" 4import "nx_skin_texture.nx" 5 6func fill_rect_skin(img: *Image, x0: i64, y0: i64, x1: i64, y1: i64) -> i64 { 7 var y: i64 = y0 8 while y < y1 { 9 var x: i64 = x0 10 while x < x1 { 11 nx_image_set(img, x, y, 0, 200); nx_image_set(img, x, y, 1, 150); nx_image_set(img, x, y, 2, 130) 12 x = x + 1 13 } 14 y = y + 1 15 } 16 return 0 17} 18 19func fill_black(img: *Image) -> i64 { 20 var y: i64 = 0 21 while y < img.height { 22 var x: i64 = 0 23 while x < img.width { 24 nx_image_set(img, x, y, 0, 0); nx_image_set(img, x, y, 1, 0); nx_image_set(img, x, y, 2, 0) 25 x = x + 1 26 } 27 y = y + 1 28 } 29 return 0 30} 31 32func main() -> i64 { 33 // T1: empty (black) -> no torso, UNKNOWN 34 let img1: *Image = nx_image_alloc(64, 64, 3) 35 fill_black(img1) 36 let set1: *RegionSet = nx_region_segment(img1) 37 let v1: *SkinTextureVerdict = nx_skin_texture_compute(img1, set1) 38 let k1: i64 = v1.kind 39 let tp1: i64 = v1.torso_present 40 if k1 != NX_ST_UNKNOWN { return 1 } 41 if tp1 != 0 { return 2 } 42 43 // T2: uniform skin torso -> PLASTIC_SHEEN (smooth = high energy + low contrast) 44 let img2: *Image = nx_image_alloc(64, 64, 3) 45 fill_black(img2) 46 fill_rect_skin(img2, 20, 20, 45, 45) 47 let set2: *RegionSet = nx_region_segment(img2) 48 let v2: *SkinTextureVerdict = nx_skin_texture_compute(img2, set2) 49 let k2: i64 = v2.kind 50 let tp2: i64 = v2.torso_present 51 if tp2 != 1 { return 10 } 52 if k2 != NX_ST_PLASTIC_SHEEN { return 11 } 53 54 return 0 55}