#effect #text #terminal #scroll #engine #scattering #blinking

bin+lib terani

Rust 编写的终端动画引擎

1 个不稳定版本

0.1.0 2024 年 6 月 1 日

#13 in #scroll

MIT 许可证

15KB
268

Rust 编写的终端动画引擎

这是一个用 Rust 编写的终端动画引擎。它提供了一些文本效果,可以用于在终端中动画化文本。

功能

文本效果

  1. 散布:这个效果使文本看起来像是在终端上散布。在 scattering.rs 中实现。

  2. 打字机:这个效果使文本看起来像是在实时输入。在 typewriter.rs 中实现。

  3. 滚动:这个效果使文本看起来像是在终端上滚动。有两种这种效果:ScrollingLeft 和 ScrollingRight。在 scrolling.rs 中实现。

  4. 闪烁:这个效果使文本在终端中闪烁。在 blinking.rs 中实现。

  5. 颜色变化:这个效果会改变终端中文本的颜色。在 color_changing.rs 中实现。

  6. 上升:这个效果使文本看起来像是在终端上升。在 climbing.rs 中实现。

动画

Animation 结构用于从一系列帧创建动画。每一帧由一个文本字符串和文本效果组成。动画按顺序播放每一帧,在终端显示之前将文本效果应用于文本。

用法

要使用终端动画引擎,使用一系列 Frame 创建一个 Animation,然后在循环中调用 animation.next_frame()。以下是一个示例

let frames = vec![
    Frame::new("I am in love with you please marry me!", Climbing),
    Frame::new("Alice alice alice alice alice alice", Climbing),
    Frame::new("I want to be with you forever!", Climbing),
];
let mut animation = Animation::new(frames, Duration::from_millis(100));
loop {
    if let Err(e) = animation.next_frame() {
        eprintln!("Error displaying frame: {}", e);
        break;
    }
}

依赖关系

~1.7–9MB
~71K SLoC