feat: implement layer mask editing support with scratch buffer and coordinate normalization
This commit is contained in:
@@ -724,6 +724,11 @@ pub enum Message {
|
||||
LayerSetFillOpacity(u64, f32),
|
||||
LayerAddGroup,
|
||||
LayerToggleCollapse(u64),
|
||||
LayerAddMask(u64),
|
||||
LayerRemoveMask(u64),
|
||||
LayerToggleMask(u64),
|
||||
LayerSetEditMask(bool),
|
||||
LayerToggleEditMask,
|
||||
|
||||
// ── History ─────────────────────────────────────────
|
||||
HistoryJumpTo(i32),
|
||||
@@ -3686,6 +3691,45 @@ impl HcieIcedApp {
|
||||
return Task::perform(async {}, |_| Message::CompositeRefresh);
|
||||
}
|
||||
|
||||
Message::LayerAddMask(id) => {
|
||||
self.documents[self.active_doc].engine.add_layer_mask(id);
|
||||
self.documents[self.active_doc].modified = true;
|
||||
self.documents[self.active_doc].cached_layers =
|
||||
self.documents[self.active_doc].engine.layer_infos();
|
||||
self.refresh_composite_if_needed();
|
||||
return Task::perform(async {}, |_| Message::CompositeRefresh);
|
||||
}
|
||||
|
||||
Message::LayerRemoveMask(id) => {
|
||||
self.documents[self.active_doc].engine.remove_layer_mask(id);
|
||||
self.documents[self.active_doc].modified = true;
|
||||
self.documents[self.active_doc].cached_layers =
|
||||
self.documents[self.active_doc].engine.layer_infos();
|
||||
self.refresh_composite_if_needed();
|
||||
return Task::perform(async {}, |_| Message::CompositeRefresh);
|
||||
}
|
||||
|
||||
Message::LayerToggleMask(id) => {
|
||||
self.documents[self.active_doc].engine.toggle_layer_mask(id);
|
||||
self.documents[self.active_doc].modified = true;
|
||||
self.documents[self.active_doc].cached_layers =
|
||||
self.documents[self.active_doc].engine.layer_infos();
|
||||
self.refresh_composite_if_needed();
|
||||
return Task::perform(async {}, |_| Message::CompositeRefresh);
|
||||
}
|
||||
|
||||
Message::LayerSetEditMask(editing) => {
|
||||
self.documents[self.active_doc].engine.set_editing_mask(editing);
|
||||
self.documents[self.active_doc].cached_layers =
|
||||
self.documents[self.active_doc].engine.layer_infos();
|
||||
}
|
||||
|
||||
Message::LayerToggleEditMask => {
|
||||
self.documents[self.active_doc].engine.toggle_editing_mask();
|
||||
self.documents[self.active_doc].cached_layers =
|
||||
self.documents[self.active_doc].engine.layer_infos();
|
||||
}
|
||||
|
||||
Message::LayerDelete(id) => {
|
||||
self.documents[self.active_doc].engine.delete_layer(id);
|
||||
self.documents[self.active_doc].modified = true;
|
||||
|
||||
Reference in New Issue
Block a user