A layer's parts could be added to the mask or taken out of it, and nothing else. The selections that need composing most are the ones that are neither: the sky that is also bright, the subject that is also skin. With union and subtract alone, "this and that" had to be spelled as "this minus everything that is not that", which needs a second part that selects the complement and rarely exists. Join gains Intersect, stored as "intersect" in the part block of a sidecar. It is the product of the two coverages, dst * src, which is one more fixed-function blend state beside union's max and subtract's dst * (1 - src) (mask-editing.md 5.2): the same scratch texture, the same three vertices, no shader arithmetic. The product equals the minimum wherever either side is fully in or out, and is the softer reading where two soft edges overlap. Join::apply spells the three operations on the CPU so the GPU tests can be held to one definition. A layer that intersects with a part covering nothing now reports that it covers nothing, so it is not rasterised as an empty slice. Old sidecars never contain the word, so they read as before; a build from before this reads "intersect" as a union, the existing unknown-join fallback, which keeps the part visible rather than dropping it. Join::ALL keeps union and subtract at indices 0 and 1 so a stored panel index still means the same join.
362 lines
13 KiB
Rust
362 lines
13 KiB
Rust
// @generated by `cargo run -p traceability -- gestures`. Do not edit.
|
||
//
|
||
// TRACES: FR-UI-4
|
||
//! The gesture vocabulary, as the application states it.
|
||
//!
|
||
//! Extracted from the tagged comments beside the code that implements each
|
||
//! one, so the help sheet cannot describe a gesture the application does not
|
||
//! have. Edit the comment beside the implementation, then regenerate with
|
||
//! `cargo run -p traceability -- gestures`.
|
||
|
||
/// One documented interaction, as drawn.
|
||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||
pub struct Gesture {
|
||
pub title: &'static str,
|
||
/// The place it applies, and the heading it is grouped under.
|
||
pub section: &'static str,
|
||
/// Empty where the gesture has no counterpart in that modality.
|
||
pub touch: &'static str,
|
||
pub pointer: &'static str,
|
||
pub keys: &'static str,
|
||
}
|
||
|
||
/// Every gesture, in the order the sections were first seen in the source.
|
||
pub const GESTURES: &[Gesture] = &[
|
||
Gesture {
|
||
title: "Set the white balance from the photograph",
|
||
section: "Develop",
|
||
touch: "Press \"pick\" in the group's heading, then tap something neutral in the picture",
|
||
pointer: "Press \"pick\", then click something neutral",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Magnify the photograph by any amount",
|
||
section: "Develop",
|
||
touch: "Pinch it with two fingers",
|
||
pointer: "The scroll wheel over it",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Move a magnified photograph about",
|
||
section: "Develop",
|
||
touch: "Drag it",
|
||
pointer: "Drag it",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Paint a mask by hand",
|
||
section: "Develop",
|
||
touch: "Choose Paint or Erase, then drag on the photograph",
|
||
pointer: "Choose Paint or Erase, then drag",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Take back the last change",
|
||
section: "Develop",
|
||
touch: "Tap the step above the current one in the History list",
|
||
pointer: "Click it, or press Undo in the History header",
|
||
keys: "Ctrl+Z",
|
||
},
|
||
Gesture {
|
||
title: "Do it again after taking it back",
|
||
section: "Develop",
|
||
touch: "Tap the step below the current one in the History list",
|
||
pointer: "Click it, or press Redo in the History header",
|
||
keys: "Ctrl+Shift+Z",
|
||
},
|
||
Gesture {
|
||
title: "Copy the settings from this photograph",
|
||
section: "Develop",
|
||
touch: "Press Copy in the top bar",
|
||
pointer: "Press Copy in the top bar",
|
||
keys: "Ctrl+C",
|
||
},
|
||
Gesture {
|
||
title: "Paste the settings onto this photograph",
|
||
section: "Develop",
|
||
touch: "Press Paste in the top bar",
|
||
pointer: "Press Paste in the top bar",
|
||
keys: "Ctrl+V",
|
||
},
|
||
Gesture {
|
||
title: "Choose which kinds of edit a copy carries",
|
||
section: "Develop",
|
||
touch: "Open Presets and toggle the kinds",
|
||
pointer: "Open Presets and toggle the kinds",
|
||
keys: "Ctrl+Shift+C, which offers Copy beside them",
|
||
},
|
||
Gesture {
|
||
title: "Export this photograph as the last one was",
|
||
section: "Develop",
|
||
touch: "Press Export in the top bar",
|
||
pointer: "Press Export in the top bar",
|
||
keys: "Ctrl+Shift+E",
|
||
},
|
||
Gesture {
|
||
title: "Choose how to export, then export",
|
||
section: "Develop",
|
||
touch: "Open Settings, then Export defaults",
|
||
pointer: "Open Settings, then Export defaults",
|
||
keys: "Ctrl+E",
|
||
},
|
||
Gesture {
|
||
title: "Change which group of adjustments is on screen",
|
||
section: "Develop",
|
||
touch: "Tap a group in the rail down the left",
|
||
pointer: "Click a group in the strip above the develop column",
|
||
keys: "[ and ] step through them, wrapping round through \"everything\"",
|
||
},
|
||
Gesture {
|
||
title: "Look at the photograph at 1:1",
|
||
section: "Develop",
|
||
touch: "Double-tap the photograph",
|
||
pointer: "Double-click it, or press the zoom readout floating over the canvas",
|
||
keys: "Z",
|
||
},
|
||
Gesture {
|
||
title: "Move to the next or previous photograph",
|
||
section: "Develop",
|
||
touch: "Tap a frame in the roll along the foot of the canvas",
|
||
pointer: "Click a frame in the roll",
|
||
keys: "Right arrow, D or space for the next; left arrow or A for the one before",
|
||
},
|
||
Gesture {
|
||
title: "See the photograph before you edited it",
|
||
section: "Develop",
|
||
touch: "Press and hold \"Before\"",
|
||
pointer: "Press and hold \"Before\"",
|
||
keys: "Hold \\",
|
||
},
|
||
Gesture {
|
||
title: "Put one control back to its default",
|
||
section: "Develop",
|
||
touch: "Double-tap its track",
|
||
pointer: "Double-click its track, or right-click it",
|
||
keys: "R, for the control last moved",
|
||
},
|
||
Gesture {
|
||
title: "See the photograph as a snapshot had it",
|
||
section: "Develop",
|
||
touch: "Press and hold the eye beside the snapshot",
|
||
pointer: "Press and hold the eye beside the snapshot",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Keep the photograph as it is now, under a name",
|
||
section: "Develop",
|
||
touch: "Type a name in the History panel and press Snapshot",
|
||
pointer: "Type a name in the History panel and press Snapshot",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Show or hide one mask layer",
|
||
section: "Develop",
|
||
touch: "Tap the ring at the head of its row",
|
||
pointer: "Click the ring at the head of its row",
|
||
keys: "H, for the selected layer history step, unlike holding \"Before\" — the layer really is off until it is switched back on.",
|
||
},
|
||
Gesture {
|
||
title: "Show or hide one mask on the photograph",
|
||
section: "Develop",
|
||
touch: "Tap the eye on its row",
|
||
pointer: "Click the eye on its row",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Change how a part joins its mask",
|
||
section: "Develop",
|
||
touch: "Tap the + / − / ∩ chip on the part's row",
|
||
pointer: "Click the + / − / ∩ chip on the part's row",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Leave one part out of a mask, and put it back",
|
||
section: "Develop",
|
||
touch: "Tap the ring on the part's row",
|
||
pointer: "Click the ring on the part's row",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Pick a collection up to rearrange the tree",
|
||
section: "Collections sidebar",
|
||
touch: "Press and hold it until it lifts, then drag it",
|
||
pointer: "Drag it, or hold it until it lifts and then drag",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Act on a collection — rename, nest, un-nest, delete",
|
||
section: "Collections sidebar",
|
||
touch: "Press and hold the collection, then let go without moving",
|
||
pointer: "Right-click it",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Take a collection back out of the one it is nested in",
|
||
section: "Collections sidebar",
|
||
touch: "Hold it, then drag it onto \"All photographs\" — or let go and choose \"Move to top level\"",
|
||
pointer: "Drag it onto \"All photographs\", or right-click it and choose \"Move to top level\"",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Rename a collection",
|
||
section: "Collections sidebar",
|
||
touch: "Hold the collection, then \"Rename\"",
|
||
pointer: "Double-click its name, or right-click it and choose \"Rename\"",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Pull a face out of the wrong person",
|
||
section: "People",
|
||
touch: "Tap the faces that do not belong, then \"Split off\"",
|
||
pointer: "Click the faces that do not belong, then \"Split off\"",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Rule on a suggested face",
|
||
section: "People",
|
||
touch: "Tick to confirm it, cross to reject it",
|
||
pointer: "Tick to confirm it, cross to reject it",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "See a person's photographs",
|
||
section: "People",
|
||
touch: "Choose them in the rail, then \"Show photos\"",
|
||
pointer: "Choose them in the rail, then \"Show photos\"",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Change how faces are grouped",
|
||
section: "People",
|
||
touch: "\"Grouping…\", move the dials, then Regroup",
|
||
pointer: "\"Grouping…\", move the dials, then Regroup",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Start selecting several photographs",
|
||
section: "Library grid",
|
||
touch: "Press and hold a photograph, or press Select in the header",
|
||
pointer: "Ctrl-click, or press Select in the header",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Add or remove one photograph",
|
||
section: "Library grid",
|
||
touch: "While selecting, tap it",
|
||
pointer: "Ctrl-click it",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Leave selecting",
|
||
section: "Library grid",
|
||
touch: "Press Done in the header",
|
||
pointer: "Press Done in the header",
|
||
keys: "Escape",
|
||
},
|
||
Gesture {
|
||
title: "Pick a photograph up to drag it",
|
||
section: "Library grid",
|
||
touch: "Press and hold it until a ring opens around it, then drag",
|
||
pointer: "Drag it",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Select a range",
|
||
section: "Library grid",
|
||
touch: "While selecting, press \"Select to…\", then tap the last photograph of the run",
|
||
pointer: "Shift-click the last photograph of the run",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Take the blinks out of a burst",
|
||
section: "Library grid",
|
||
touch: "Narrow to a person, then tap \"Eyes open\" beside their name on the filter bar",
|
||
pointer: "Narrow to a person, then click \"Eyes open\" beside their name on the filter bar",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Find photographs with two people in them",
|
||
section: "Library grid",
|
||
touch: "Open the People chip on the filter bar, tap each name, then switch the chip beside them to \"all of them\"",
|
||
pointer: "Open the People chip on the filter bar, click each name, then switch the chip beside them to \"all of them\"",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Export the selection as the last export was",
|
||
section: "Library grid",
|
||
touch: "Select them, then Export in the selection bar",
|
||
pointer: "Select them, then Export in the selection bar",
|
||
keys: "Ctrl+Shift+E, or Ctrl+E to see the export settings first",
|
||
},
|
||
Gesture {
|
||
title: "Paste copied settings onto the selection",
|
||
section: "Library grid",
|
||
touch: "Select them, then \"Paste to N\" in the selection bar",
|
||
pointer: "Select them, then \"Paste to N\"",
|
||
keys: "Ctrl+V",
|
||
},
|
||
Gesture {
|
||
title: "Show only photographs with some number of stars",
|
||
section: "Library grid",
|
||
touch: "Tap a star chip in the filter bar",
|
||
pointer: "Click a star chip in the filter bar",
|
||
keys: "Hold F and tap a digit for exactly that many stars, or two digits for everything between them; tap F alone to show every rating again",
|
||
},
|
||
Gesture {
|
||
title: "Resize the thumbnails",
|
||
section: "Library grid",
|
||
touch: "Pinch the grid with two fingers",
|
||
pointer: "Ctrl and the scroll wheel",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "File photographs in a collection",
|
||
section: "Library grid",
|
||
touch: "Drag a photograph — or a whole selection — onto a collection in the sidebar. Starting a drag stops the press becoming a hold, so it cannot leave you in selection mode.",
|
||
pointer: "Drag a photograph — or a whole selection — onto a collection in the sidebar",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Open a photograph",
|
||
section: "Library grid",
|
||
touch: "Tap it — a single tap, any length",
|
||
pointer: "Click it",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Rate a photograph without opening it",
|
||
section: "Library grid",
|
||
touch: "Tap a star on the cell",
|
||
pointer: "Hover the cell, then click a star",
|
||
keys: "0 to 5 with the pointer over it, or on the selection",
|
||
},
|
||
Gesture {
|
||
title: "Choose the frame a folded burst shows",
|
||
section: "Library grid",
|
||
touch: "Open the burst, then tap the ring on the frame you want",
|
||
pointer: "Open the burst, then click the ring on the frame you want",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Drop the selection but keep selecting",
|
||
section: "Library grid",
|
||
touch: "Press Clear in the selection strip",
|
||
pointer: "Press Clear in the selection strip",
|
||
keys: "",
|
||
},
|
||
Gesture {
|
||
title: "Select everything the grid is showing",
|
||
section: "Library grid",
|
||
touch: "While selecting, press \"Select all\"",
|
||
pointer: "While selecting, press \"Select all\"",
|
||
keys: "Ctrl+A",
|
||
},
|
||
Gesture {
|
||
title: "Take photographs out of a collection",
|
||
section: "Library grid",
|
||
touch: "Select them, then \"Collections…\" in the selection bar",
|
||
pointer: "Select them, then \"Collections…\" in the selection bar",
|
||
keys: "",
|
||
},
|
||
];
|