mirror of
https://github.com/typst/typst
synced 2025-05-17 02:25:27 +08:00
refactor: reorder items
This commit is contained in:
parent
75841408e7
commit
c18caca80f
@ -37,41 +37,6 @@ impl FrameModifiers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn modify_frame(
|
|
||||||
frame: &mut Frame,
|
|
||||||
modifiers: &FrameModifiers,
|
|
||||||
link_box_outset: Option<Sides<Abs>>,
|
|
||||||
) {
|
|
||||||
if let Some(dest) = &modifiers.dest {
|
|
||||||
let mut pos = Point::zero();
|
|
||||||
let mut size = frame.size();
|
|
||||||
if let Some(outset) = link_box_outset {
|
|
||||||
pos.y -= outset.top;
|
|
||||||
pos.x -= outset.left;
|
|
||||||
size += outset.sum_by_axis();
|
|
||||||
}
|
|
||||||
frame.push(pos, FrameItem::Link(dest.clone(), size));
|
|
||||||
}
|
|
||||||
|
|
||||||
if modifiers.hidden {
|
|
||||||
frame.hide();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub trait FrameModifyText {
|
|
||||||
/// Resolve and apply [`FrameModifiers`] for this text frame.
|
|
||||||
fn modify_text(&mut self, styles: StyleChain);
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FrameModifyText for Frame {
|
|
||||||
fn modify_text(&mut self, styles: StyleChain) {
|
|
||||||
let modifiers = FrameModifiers::get_in(styles);
|
|
||||||
let expand_y = Em::new(0.25).resolve(styles);
|
|
||||||
let outset = Sides::new(Abs::zero(), expand_y, Abs::zero(), expand_y);
|
|
||||||
modify_frame(self, &modifiers, Some(outset));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Applies [`FrameModifiers`].
|
/// Applies [`FrameModifiers`].
|
||||||
pub trait FrameModify {
|
pub trait FrameModify {
|
||||||
/// Apply the modifiers in-place.
|
/// Apply the modifiers in-place.
|
||||||
@ -112,6 +77,41 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub trait FrameModifyText {
|
||||||
|
/// Resolve and apply [`FrameModifiers`] for this text frame.
|
||||||
|
fn modify_text(&mut self, styles: StyleChain);
|
||||||
|
}
|
||||||
|
|
||||||
|
impl FrameModifyText for Frame {
|
||||||
|
fn modify_text(&mut self, styles: StyleChain) {
|
||||||
|
let modifiers = FrameModifiers::get_in(styles);
|
||||||
|
let expand_y = Em::new(0.25).resolve(styles);
|
||||||
|
let outset = Sides::new(Abs::zero(), expand_y, Abs::zero(), expand_y);
|
||||||
|
modify_frame(self, &modifiers, Some(outset));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn modify_frame(
|
||||||
|
frame: &mut Frame,
|
||||||
|
modifiers: &FrameModifiers,
|
||||||
|
link_box_outset: Option<Sides<Abs>>,
|
||||||
|
) {
|
||||||
|
if let Some(dest) = &modifiers.dest {
|
||||||
|
let mut pos = Point::zero();
|
||||||
|
let mut size = frame.size();
|
||||||
|
if let Some(outset) = link_box_outset {
|
||||||
|
pos.y -= outset.top;
|
||||||
|
pos.x -= outset.left;
|
||||||
|
size += outset.sum_by_axis();
|
||||||
|
}
|
||||||
|
frame.push(pos, FrameItem::Link(dest.clone(), size));
|
||||||
|
}
|
||||||
|
|
||||||
|
if modifiers.hidden {
|
||||||
|
frame.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Performs layout and modification in one step.
|
/// Performs layout and modification in one step.
|
||||||
///
|
///
|
||||||
/// This just runs `layout(styles).modified(&FrameModifiers::get_in(styles))`,
|
/// This just runs `layout(styles).modified(&FrameModifiers::get_in(styles))`,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user