WIP: UI编辑器自动分图层切图标 #304

Draft
k88936 wants to merge 100 commits from feat/ui-editor-auto-seperation into master
Showing only changes of commit 22d9958d18 - Show all commits
@@ -1,9 +1,10 @@
use super::model::SeparationNode;
use super::model::{SeparationNode, SeparationNote, TextMaskArea};
use base64::Engine as _;
use std::path::Path;
use std::path::PathBuf;
const MARKER_LINE_WIDTH: u32 = 2;
const PURPLE_FILL: image::Rgba<u8> = image::Rgba([180, 0, 180, 120]);
pub async fn build_marked_image(
source_url: String,
@@ -41,7 +42,19 @@ fn build_marked_image_blocking(
child.global_pos_y_px,
child.width_px,
child.height_px,
image::Rgba([180, 0, 180, 120]),
PURPLE_FILL,
width,
height,
);
}
for mask in &node.text_mask_areas {
fill_rect(
&mut image,
mask.global_pos_x_px,
mask.global_pos_y_px,
mask.width_px,
mask.height_px,
PURPLE_FILL,
width,
height,
);
@@ -262,4 +275,48 @@ mod tests {
}
assert_eq!(*image.get_pixel(1, 1), image::Rgba([1, 2, 3, 255]));
}
#[test]
fn text_mask_is_purple_before_green_frame() {
let mut image = image::RgbaImage::from_pixel(8, 8, image::Rgba([1, 2, 3, 255]));
let node = SeparationNode {
id: crate::ui_editor::utils::NodeId::new("image").unwrap(),
global_pos_x_px: 1,
global_pos_y_px: 1,
width_px: 6,
height_px: 6,
note: SeparationNote::default(),
text_mask_areas: vec![TextMaskArea {
global_pos_x_px: 2,
global_pos_y_px: 3,
width_px: 2,
height_px: 2,
}],
children: vec![],
rework_count: 0,
};
for mask in &node.text_mask_areas {
fill_rect(
&mut image,
mask.global_pos_x_px,
mask.global_pos_y_px,
mask.width_px,
mask.height_px,
PURPLE_FILL,
8,
8,
);
}
draw_frame(
&mut image,
node.global_pos_x_px,
node.global_pos_y_px,
node.width_px,
node.height_px,
8,
8,
);
assert_eq!(*image.get_pixel(2, 4), PURPLE_FILL);
assert_eq!(*image.get_pixel(1, 1), image::Rgba([0, 255, 0, 255]));
}
}