Offer intersection in the mask panel: an Intersect button and a third chip state
The pipeline could now keep only where two selections agree, but the panel had no way to ask for it: the part row's chip flipped between + and -, and the buttons under the parts joined an added or a subtracted correction. An "∩ Intersect" button joins a painted part that intersects, and the chip on a part row cycles + -> - -> ∩ and round, so an existing part can be turned into an intersection without being repainted. Both go through the same session calls as before, indexing Join::ALL, whose first two entries kept their places. The chip is now a tagged gesture, so it is in the gesture book.
This commit is contained in:
@@ -543,7 +543,9 @@ impl DevelopSession {
|
||||
.record(&self.graph, Edit::Action(labels::step::MASK_PART_REMOVED));
|
||||
}
|
||||
|
||||
/// Change how a part joins: added to the mask, or taken out of it.
|
||||
/// TRACES: FR-DEV-19a
|
||||
/// Change how a part joins: added to the mask, taken out of it, or kept
|
||||
/// only where the mask already was. `join` indexes `Join::ALL`.
|
||||
pub fn set_mask_part_join(&mut self, id: &str, index: usize, join: usize) {
|
||||
use dr_pipeline::mask::Join;
|
||||
let Some(&join) = Join::ALL.get(join) else {
|
||||
|
||||
Reference in New Issue
Block a user