Files
hcie-rust-v3.05/hcie-composite/src/test_composite.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

118 lines
3.3 KiB
Rust

use std::sync::atomic::AtomicBool;
use std::sync::Mutex;
#[test]
fn test_composite_basic() {
use hcie_protocol::BlendMode;
let layer = hcie_protocol::Layer {
name: "Red".into(),
layer_type: hcie_protocol::LayerType::Raster,
data: hcie_protocol::LayerData::Raster,
pixels: vec![
255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
],
width: 2,
height: 2,
visible: true,
opacity: 1.0,
blend_mode: BlendMode::Normal,
locked: false,
dirty: false,
id: 0,
parent_id: None,
styles: vec![],
clipping_mask: false,
collapsed: false,
adjustment: None,
mask_pixels: None,
mask_bounds: None,
mask_default_color: 0,
curve_points: vec![],
fill_opacity: 1.0,
effects: vec![],
effects_dirty: AtomicBool::new(true),
effects_cache: Mutex::new(None),
adjustment_raw: None,
is_section_divider: false,
image_resources_raw: None,
};
let layers = vec![layer];
let out = crate::composite_layers(&layers, 2, 2);
assert_eq!(
out,
vec![255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255]
);
let layer0 = hcie_protocol::Layer {
name: "Red".into(),
layer_type: hcie_protocol::LayerType::Raster,
data: hcie_protocol::LayerData::Raster,
pixels: vec![
255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255,
],
width: 2,
height: 2,
visible: true,
opacity: 1.0,
blend_mode: BlendMode::Normal,
locked: false,
dirty: false,
id: 0,
parent_id: None,
styles: vec![],
clipping_mask: false,
collapsed: false,
adjustment: None,
mask_pixels: None,
mask_bounds: None,
mask_default_color: 0,
curve_points: vec![],
fill_opacity: 1.0,
effects: vec![],
effects_dirty: AtomicBool::new(true),
effects_cache: Mutex::new(None),
adjustment_raw: None,
is_section_divider: false,
image_resources_raw: None,
};
let layer1 = hcie_protocol::Layer {
name: "Blue".into(),
layer_type: hcie_protocol::LayerType::Raster,
data: hcie_protocol::LayerData::Raster,
pixels: vec![
0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255,
],
width: 2,
height: 2,
visible: true,
opacity: 1.0,
blend_mode: BlendMode::Normal,
locked: false,
dirty: false,
id: 0,
parent_id: None,
styles: vec![],
clipping_mask: false,
collapsed: false,
adjustment: None,
mask_pixels: None,
mask_bounds: None,
mask_default_color: 0,
curve_points: vec![],
fill_opacity: 1.0,
effects: vec![],
effects_dirty: AtomicBool::new(true),
effects_cache: Mutex::new(None),
adjustment_raw: None,
is_section_divider: false,
image_resources_raw: None,
};
let layers2 = vec![layer0, layer1];
let out2 = crate::composite_layers(&layers2, 2, 2);
assert_eq!(
out2,
vec![0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255, 0, 0, 255, 255]
);
}