WIP: UI编辑器自动分图层切图标 #304
@@ -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]));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user