One editing step expressed without reference to the device that produced it. More...
#include <edit_intent.hpp>
Public Member Functions | |
| bool | operator== (const EditIntent &other) const noexcept |
Public Attributes | |
| EditIntentKind | kind = EditIntentKind::Move |
| timeline::GesturePhase | phase = timeline::GesturePhase::Single |
| timeline::ItemId | sequence_id |
| timeline::ItemId | track_id |
| timeline::ItemId | clip_id |
| Target for Erase / Move / Resize. Draw supplies clip instead. | |
| std::optional< timeline::ClipTimeRange > | expected_range |
| Optimistic gate for Move / Resize: the range the front-end believes it edits. | |
| std::optional< timeline::ClipTimeRange > | replacement_range |
| Requested range for Move / Resize. | |
| std::optional< timeline::Clip > | clip |
| Payload for Draw. | |
One editing step expressed without reference to the device that produced it.
Carries no coordinates, no button, no pointer id and no modifiers: a front-end resolves those against its hit metrics BEFORE building an intent, so mouse, touch and pen converge on identical values here.
Device neutrality is not what puts these verbs in this module. The editor rung and the document model are barred from view by the same MODULE_FLOORS closure, so "this header cannot name a pointer type" is true at either address and therefore selects neither. What selects is the opposite direction: core/timeline's floor excludes timeline_editor, so with the verbs declared HERE the floor gate rejects a reducer, a migration, or a serializer that reaches for one. Declared in the document model the same verbs sit in every consumer's include path with nothing able to object — a headless importer, a .pulpgraph loader, and a plugin that wants only commands would each carry a vocabulary whose Move/Resize split exists solely because a front-end distinguishes a clip body from its edge.
phase is pulp::timeline::GesturePhase, the same enum the transaction it lowers to carries, so a gesture keeps one phase vocabulary end to end. It stays in the document model on the same test: an undo group opens and closes on a bracket whether or not an editor is what produced it.
|
noexcept |
| std::optional<timeline::Clip> pulp::timeline_editor::EditIntent::clip |
Payload for Draw.
| timeline::ItemId pulp::timeline_editor::EditIntent::clip_id |
Target for Erase / Move / Resize. Draw supplies clip instead.
| std::optional<timeline::ClipTimeRange> pulp::timeline_editor::EditIntent::expected_range |
Optimistic gate for Move / Resize: the range the front-end believes it edits.
| EditIntentKind pulp::timeline_editor::EditIntent::kind = EditIntentKind::Move |
| timeline::GesturePhase pulp::timeline_editor::EditIntent::phase = timeline::GesturePhase::Single |
| std::optional<timeline::ClipTimeRange> pulp::timeline_editor::EditIntent::replacement_range |
Requested range for Move / Resize.
| timeline::ItemId pulp::timeline_editor::EditIntent::sequence_id |
| timeline::ItemId pulp::timeline_editor::EditIntent::track_id |