5个版本 (破坏性)
新版本 0.5.0 | 2024年8月21日 |
---|---|
0.4.0 | 2024年7月14日 |
0.3.0 | 2024年6月30日 |
0.2.0 | 2024年6月23日 |
0.1.0 | 2024年6月20日 |
#219 in 命令行界面
143 每月下载量
7MB
4.5K SLoC
tachyonfx
tachyonfx是一个用于在终端UI中创建类似着色器效果的ratatui库。此库提供了一系列效果,可用于增强终端应用程序的视觉吸引力,包括颜色变换、动画和复杂效果组合等功能。
安装
将tachyonfx添加到您的Cargo.toml
tachyonfx = "0.5.0"
概述
效果
该库包含各种效果,大致分为以下几类
颜色效果
- fade_from: 从指定的背景和前景颜色渐变
- fade_from_fg: 从指定颜色渐变前景颜色。
- fade_to: 渐变到指定的背景和前景颜色。
- fade_to_fg: 将前景颜色渐变到指定颜色。
- hsl_shift: 改变前景和背景颜色的色调、饱和度和亮度。
- hsl_shift_fg: 在指定时间内将前景颜色按指定的色调、饱和度和亮度偏移。
- term256_colors: 下采样到256色模式。
文本/字符效果
- coalesce: 与dissolve相反,将文本在指定时间内合并。
- dissolve: 在指定时间内将当前文本溶解。
- slide_in: 将方向滑动效果应用于终端单元格。
- slide_out: 将方向滑动出效果应用于终端单元格。
- sweep_in: 从指定颜色开始扫描。
- sweep_out: 扫描到指定颜色。
计时和控制效果
- consume_tick: 消耗一个计时器滴答。
- never_complete: 使效果无限期运行。
- ping_pong: 先向前播放效果,然后向后播放。
- prolong_start: 通过指定持续时间延长效果的开始。
- prolong_end: 通过指定持续时间延长效果的结束。
- repeat: 无限期或指定次数或持续时间地重复效果。
- repeating: 无限期重复效果。
- sleep: 暂停指定时长。
- timed_never_complete: 创建一个无限运行但具有强制持续时间的效果。
- with_duration: 包装一个效果并强制设置其持续时间。
几何效果
- translate: 通过指定量移动效果区域。
- translate_buf: 从辅助缓冲区复制内容,并按指定量移动。
- resize_area: 调整包装效果的区域。
组合效果
- parallel: 并行运行效果,所有效果同时进行。一旦所有效果完成,则报告完成。
- sequence: 按顺序运行效果,一个接一个。一旦最后一个效果完成,则报告完成。
其他效果
- effect_fn: 从用户定义的函数创建自定义效果,在
CellIterator
上操作。 - effect_fn_buf: 从函数创建自定义效果,在
Buffer
上操作。 - offscreen_buffer: 包装现有效果并将其渲染重定向到单独的缓冲区。
EffectTimer 和插值
EffectTimer 用于控制效果的时间和插值。它允许在应用程序中精确地定时和同步视觉效果。
单元格选择和区域
可以将效果应用于终端 UI 的特定单元格,从而实现有针对性的视觉修改和动画。
// only apply to cells with `Light2` foreground color
fx::sweep_in(Direction::UpToDown, 15, Dark0, timer)
.with_cell_selection(CellFilter::FgColor(Light2.into()))
CellFilter
可以组合形成复杂的选择标准。
// apply effect to cells on the outer border of the area
let margin = Margin::new(1, 1);
let border_text = CellFilter::AllOf(vec![
CellFilter::Outer(margin),
CellFilter::Text
]);
sequence(vec![
with_duration(duration, never_complete(fx::fade_to(Dark0, Dark0, 0))),
fx::fade_from(Dark0, Dark0, (320, QuadOut)),
]).with_cell_selection(border_text)
示例
示例: tweens
cargo run --release --example=tweens
示例: basic-effects
cargo run --release --example=basic-effects
示例: open-window
cargo run --release --example=open-window
示例: fx-chart
这是 EffectTimelineWidget
的一个演示,展示了效果的组合。该小部件是一个“纯”小部件,其渲染过程中没有任何效果。效果而是在渲染小部件之后应用。
cargo run --release --example=fx-chart
依赖项
~8–18MB
~244K SLoC