mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-10-01 16:08:13 +08:00
Add the replaced context derivation for same-level remaps
This commit is contained in:
@@ -734,6 +734,7 @@ pub trait DeriveCtx {
|
|||||||
fn varargs_head(&self) -> Option<&VarArgLink<'_>>;
|
fn varargs_head(&self) -> Option<&VarArgLink<'_>>;
|
||||||
fn promoted<'s>(&'s self, spilled_head: &'s IndexLink<'s>, inner_index: u64) -> Derived<'s, Self>;
|
fn promoted<'s>(&'s self, spilled_head: &'s IndexLink<'s>, inner_index: u64) -> Derived<'s, Self>;
|
||||||
fn push_level<'s>(&'s self, frame: &'s mut IndexLink<'s>, copy: u64, inner: u64) -> Derived<'s, Self>;
|
fn push_level<'s>(&'s self, frame: &'s mut IndexLink<'s>, copy: u64, inner: u64) -> Derived<'s, Self>;
|
||||||
|
fn replaced<'s>(&'s self, inner_index: u64) -> Derived<'s, Self>;
|
||||||
fn with_footprint<'s>(&'s self, footprint: &'s Footprint) -> Derived<'s, Self>;
|
fn with_footprint<'s>(&'s self, footprint: &'s Footprint) -> Derived<'s, Self>;
|
||||||
fn with_varargs<'s>(&'s self, varargs: &'s VarArgLink<'s>) -> Derived<'s, Self>;
|
fn with_varargs<'s>(&'s self, varargs: &'s VarArgLink<'s>) -> Derived<'s, Self>;
|
||||||
fn with_position<'s>(&'s self, position: &'s PositionLink<'s>) -> Derived<'s, Self>;
|
fn with_position<'s>(&'s self, position: &'s PositionLink<'s>) -> Derived<'s, Self>;
|
||||||
@@ -1017,6 +1018,18 @@ impl<'a> ContextImpl<'a> {
|
|||||||
frame.outer = self.index.outer;
|
frame.outer = self.index.outer;
|
||||||
self.promoted(frame, inner)
|
self.promoted(frame, inner)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Derives the context with the innermost index replaced and the chain
|
||||||
|
/// above it preserved: the remap primitive for same-level extent changes.
|
||||||
|
pub fn replaced(&self, inner_index: u64) -> ContextImpl<'a> {
|
||||||
|
ContextImpl {
|
||||||
|
index: IndexLink {
|
||||||
|
index: inner_index,
|
||||||
|
outer: self.index.outer,
|
||||||
|
},
|
||||||
|
..*self
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Ctx for ContextImpl<'_> {}
|
impl Ctx for ContextImpl<'_> {}
|
||||||
@@ -1128,6 +1141,10 @@ impl<'a> DeriveCtx for ContextImpl<'a> {
|
|||||||
ContextImpl::push_level(self, frame, copy, inner)
|
ContextImpl::push_level(self, frame, copy, inner)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn replaced<'s>(&'s self, inner_index: u64) -> ContextImpl<'s> {
|
||||||
|
ContextImpl::replaced(self, inner_index)
|
||||||
|
}
|
||||||
|
|
||||||
fn with_footprint<'s>(&'s self, footprint: &'s Footprint) -> ContextImpl<'s> {
|
fn with_footprint<'s>(&'s self, footprint: &'s Footprint) -> ContextImpl<'s> {
|
||||||
ContextImpl::with_footprint(self, footprint)
|
ContextImpl::with_footprint(self, footprint)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user