Files
hcie-rust-v3.05/hcie-composite/tests/ff_visibility.rs
T
2026-07-09 02:59:53 +03:00

43 lines
1.6 KiB
Rust

#![allow(dead_code, unused_imports, unused_variables, unused_macros, unreachable_patterns)]
use hcie_composite::composite_layers;
use hcie_protocol::Layer as ProtoLayer;
fn count_opaque(pixels: &[u8]) -> usize {
pixels.iter().skip(3).step_by(4).filter(|&&a| a > 0).count()
}
fn proto_to_comp(l: &ProtoLayer) -> ProtoLayer {
l.clone()
}
#[test]
fn test_composite_visibility_from_protocol_layer() {
let _ = env_logger::try_init();
let w = 100u32; let h = 100u32;
// Build layers using hcie_protocol::Layer (like Engine does)
let mut bg = ProtoLayer::new_transparent("bg", w, h);
bg.id = 1;
bg.pixels = vec![255u8; (w*h*4) as usize];
let mut top = ProtoLayer::new_transparent("top", w, h);
top.id = 2;
top.pixels = vec![0u8; (w*h*4) as usize];
for y in 20..80 { for x in 20..80 {
let i = (y*w+x) as usize * 4;
top.pixels[i]=0; top.pixels[i+1]=0; top.pixels[i+2]=0; top.pixels[i+3]=255;
}}
let run_composite = |layers: &[ProtoLayer]| -> Vec<u8> {
composite_layers(layers, w, h)
};
eprintln!("BOTH VISIBLE: opaque={}/10000", count_opaque(&run_composite(&[bg.clone(), top.clone()])));
bg.visible = false;
eprintln!("BG HIDDEN: opaque={}/10000 (expect 3600)", count_opaque(&run_composite(&[bg.clone(), top.clone()])));
bg.visible = true; top.visible = false;
eprintln!("TOP HIDDEN: opaque={}/10000 (expect 10000)", count_opaque(&run_composite(&[bg.clone(), top.clone()])));
bg.visible = false; top.visible = false;
eprintln!("BOTH HIDDEN: opaque={}/10000 (expect 0)", count_opaque(&run_composite(&[bg.clone(), top.clone()])));
}