code wiki / (root) / nx_cine_sexy_test.nx

nx_cine_sexy_test.nx source

↩ module page · 82 lines · 4086 B

1import "nx_syscalls.nx" 2import "nx_cinematographer.nx" 3import "nx_outfit_sexiness.nx" 4 5func main() -> i64 { 6 let result: *i64 = (sys_mmap(NX_CINE_RES_FIELDS * 8 + 16)) as *i64 7 8 // ========================================================== 9 // CINEMATOGRAPHER 10 // ========================================================== 11 12 // T1: AWARD_WORTHY editorial — 85mm + f/2.8 + centered. 13 nx_cinematographer(NX_CINE_TARGET_EDITORIAL, NX_LENS_PORTRAIT_85MM, 14 NX_APERTURE_F28, NX_COMP_CENTERED, result) 15 let v1: i64 = result[NX_CINE_RES_VERDICT] 16 if v1 != NX_CINE_V_AWARD_WORTHY { return 1 } 17 18 // T2: Documentary with wrong lens (85mm in candid) -> AMATEUR or PROFESSIONAL. 19 nx_cinematographer(NX_CINE_TARGET_DOCUMENTARY, NX_LENS_PORTRAIT_85MM, 20 NX_APERTURE_F4, NX_COMP_RULE_OF_THIRDS, result) 21 let v2: i64 = result[NX_CINE_RES_VERDICT] 22 // Doc + 85mm = 614 lens; doc + f/4 = 1024 ap; doc + thirds = 1024 comp. 23 // composite = 614*35 + 1024*30 + 1024*35 / 100 = 877. AWARD_WORTHY. 24 // Hmm, lens-score 614 is good enough since other axes compensate. 25 if v2 < NX_CINE_V_PROFESSIONAL { return 10 } 26 27 // T3: Mismatched fashion (wide lens + f/8 + off-balance) -> AMATEUR. 28 nx_cinematographer(NX_CINE_TARGET_FASHION, NX_LENS_WIDE_24MM, 29 NX_APERTURE_F8, NX_COMP_OFF_BALANCE, result) 30 let v3: i64 = result[NX_CINE_RES_VERDICT] 31 // fashion + wide = 768. fashion + f/8 = 410. fashion + off_balance = 410. 32 // composite = 768*35 + 410*30 + 410*35 / 100 = 535 -> AMATEUR. 33 if v3 != NX_CINE_V_AMATEUR { return 20 } 34 let fa3: i64 = result[NX_CINE_RES_FAIL_AXIS] 35 if fa3 == NX_CINE_AXIS_LENS { return 21 } // lens isn't lowest 36 37 // T4: Cinematic glamour shot — 85mm + f/1.4 + leading lines + cinematic target. 38 nx_cinematographer(NX_CINE_TARGET_CINEMATIC, NX_LENS_PORTRAIT_85MM, 39 NX_APERTURE_F14, NX_COMP_LEADING_LINES, result) 40 let v4: i64 = result[NX_CINE_RES_VERDICT] 41 if v4 != NX_CINE_V_AWARD_WORTHY { return 30 } 42 43 // ========================================================== 44 // OUTFIT SEXINESS 45 // ========================================================== 46 47 let sresult: *i64 = (sys_mmap(NX_SEXY_RES_FIELDS * 8 + 16)) as *i64 48 49 // T5: Declared SEDUCTIVE, measured SEDUCTIVE (low-cut bodycon). 50 // coverage 60% + fit 900 + sheer 0 + cut 600 = 60->40 + 225 + 0 + 150 = 415 51 // Actually intensity = (100-60) + 900/4 + 0 + 600/4 = 40 + 225 + 0 + 150 = 415 52 // 415 > 380 -> EXPLICIT (rank 6) 53 // Adjust: coverage 75 + fit 800 + sheer 0 + cut 400 = 25 + 200 + 0 + 100 = 325 -> PROVOCATIVE (rank 5) 54 // Need SEDUCTIVE (rank 4): intensity 160-259. 55 // coverage 85, fit 700, sheer 0, cut 200 = 15 + 175 + 0 + 50 = 240 -> SEDUCTIVE. 56 nx_outfit_sexiness_validate(NX_SEXY_SEDUCTIVE, 85, 700, 0, 200, sresult) 57 let sv1: i64 = sresult[NX_SEXY_RES_VERDICT] 58 let sm1: i64 = sresult[NX_SEXY_RES_MEASURED] 59 if sm1 != NX_SEXY_SEDUCTIVE { return 40 } 60 if sv1 != NX_SEXY_V_MATCH { return 41 } 61 62 // T6: Declared MODEST, measured PROVOCATIVE -> SEVERE_OVER. 63 nx_outfit_sexiness_validate(NX_SEXY_MODEST_COVERED, 50, 800, 30, 500, sresult) 64 let sv2: i64 = sresult[NX_SEXY_RES_VERDICT] 65 if sv2 != NX_SEXY_V_SEVERE_OVER { return 50 } 66 67 // T7: Declared SEDUCTIVE, measured CASUAL -> SEVERE_UNDER. 68 nx_outfit_sexiness_validate(NX_SEXY_SEDUCTIVE, 95, 300, 0, 50, sresult) 69 let sv3: i64 = sresult[NX_SEXY_RES_VERDICT] 70 if sv3 == NX_SEXY_V_MATCH { return 60 } 71 if sv3 == NX_SEXY_V_OVERSHOOT { return 61 } 72 73 // T8: MODEST_COVERED — fully covered loose. 74 // coverage 100% + fit 200 + sheer 0 + cut 0 = 0 + 50 + 0 + 0 = 50 -> CASUAL (rank 2) 75 // Need rank 1 MODEST: intensity < 30. 76 // coverage 100 + fit 100 + sheer 0 + cut 0 = 0 + 25 = 25 -> MODEST. 77 nx_outfit_sexiness_validate(NX_SEXY_MODEST_COVERED, 100, 100, 0, 0, sresult) 78 let sm4: i64 = sresult[NX_SEXY_RES_MEASURED] 79 if sm4 != NX_SEXY_MODEST_COVERED { return 70 } 80 81 return 0 82}