Files
hcie-rust-v3.05/hcie-composite/tests/ff_visibility.rs
T
phantom b09795ccff Implement stable serialization and restoration for dock layouts, including auto-hidden and floating panels
- Add `persistence.rs` for stable serialization of dock layouts without runtime identifiers.
- Introduce `preview.rs` for geometry handling of dock drop previews.
- Create `sizing.rs` to manage content-aware sizing policies and constraint solving for dock panels.
- Implement `welcome.rs` to provide a welcome surface when no documents are open, featuring New and Open actions.
2026-07-16 22:10:22 +03:00

67 lines
1.8 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()]))
);
}