use crate::style::StyledString;
use crate::styled_string;
#[derive(Clone)]
pub struct Frames {
pub frames: Vec<StyledString>,
pub speed_ms: u64,
pub text: StyledString,
pub stop: bool,
}
impl Default for Frames {
fn default() -> Self {
Self::dots_simple_big3()
}
}
impl AsRef<Frames> for Frames {
fn as_ref(&self) -> &Frames {
self
}
}
impl Frames {
pub fn generate_frames(frames: Vec<StyledString>, speed_ms: u64) -> Frames {
Frames {
frames,
speed_ms,
stop: false,
text: StyledString {
string: "".to_string(),
style: Default::default(),
},
}
}
pub fn stop(&mut self) {
self.stop = true;
}
pub fn dot_spinner1() -> Frames {
let pattern = styled_string!["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
Self::generate_frames(pattern, 100)
}
pub fn dot_spinner2() -> Frames {
let pattern = styled_string!["⣷", "⣯", "⣟", "⡿", "⢿", "⣻", "⣽", "⣾"];
Self::generate_frames(pattern, 100)
}
pub fn dot_spinner3() -> Frames {
let pattern = styled_string!["⠋", "⠙", "⠚", "⠞", "⠖", "⠦", "⠴", "⠲", "⠳", "⠓"];
Self::generate_frames(pattern, 100)
}
pub fn dot_spinner4() -> Frames {
let pattern = styled_string![
"⠄", "⠆", "⠇", "⠋", "⠙", "⠸", "⠰", "⠠", "⠰", "⠸", "⠙", "⠋", "⠇", "⠆"
];
Self::generate_frames(pattern, 120)
}
pub fn dot_spinner5() -> Frames {
let pattern = styled_string![
"⠀", "⠁", "⠂", "⠃", "⠄", "⠅", "⠆", "⠇", "⡀", "⡁", "⡂", "⡃", "⡄", "⡅", "⡆", "⡇", "⠈",
"⠉", "⠊", "⠋", "⠌", "⠍", "⠎", "⠏", "⡈", "⡉", "⡊", "⡋", "⡌", "⡍", "⡎", "⡏", "⠐", "⠑",
"⠒", "⠓", "⠔", "⠕", "⠖", "⠗", "⡐", "⡑", "⡒", "⡓", "⡔", "⡕", "⡖", "⡗", "⠘", "⠙", "⠚",
"⠛", "⠜", "⠝", "⠞", "⠟", "⡘", "⡙", "⡚", "⡛", "⡜", "⡝", "⡞", "⡟", "⠠", "⠡", "⠢", "⠣",
"⠤", "⠥", "⠦", "⠧", "⡠", "⡡", "⡢", "⡣", "⡤", "⡥", "⡦", "⡧", "⠨", "⠩", "⠪", "⠫", "⠬",
"⠭", "⠮", "⠯", "⡨", "⡩", "⡪", "⡫", "⡬", "⡭", "⡮", "⡯", "⠰", "⠱", "⠲", "⠳", "⠴", "⠵",
"⠶", "⠷", "⡰", "⡱", "⡲", "⡳", "⡴", "⡵", "⡶", "⡷", "⠸", "⠹", "⠺", "⠻", "⠼", "⠽", "⠾",
"⠿", "⡸", "⡹", "⡺", "⡻", "⡼", "⡽", "⡾", "⡿", "⢀", "⢁", "⢂", "⢃", "⢄", "⢅", "⢆", "⢇",
"⣀", "⣁", "⣂", "⣃", "⣄", "⣅", "⣆", "⣇", "⢈", "⢉", "⢊", "⢋", "⢌", "⢍", "⢎", "⢏", "⣈",
"⣉", "⣊", "⣋", "⣌", "⣍", "⣎", "⣏", "⢐", "⢑", "⢒", "⢓", "⢔", "⢕", "⢖", "⢗", "⣐", "⣑",
"⣒", "⣓", "⣔", "⣕", "⣖", "⣗", "⢘", "⢙", "⢚", "⢛", "⢜", "⢝", "⢞", "⢟", "⣘", "⣙", "⣚",
"⣛", "⣜", "⣝", "⣞", "⣟", "⢠", "⢡", "⢢", "⢣", "⢤", "⢥", "⢦", "⢧", "⣠", "⣡", "⣢", "⣣",
"⣤", "⣥", "⣦", "⣧", "⢨", "⢩", "⢪", "⢫", "⢬", "⢭", "⢮", "⢯", "⣨", "⣩", "⣪", "⣫", "⣬",
"⣭", "⣮", "⣯", "⢰", "⢱", "⢲", "⢳", "⢴", "⢵", "⢶", "⢷", "⣰", "⣱", "⣲", "⣳", "⣴", "⣵",
"⣶", "⣷", "⢸", "⢹", "⢺", "⢻", "⢼", "⢽", "⢾", "⢿", "⣸", "⣹", "⣺", "⣻", "⣼", "⣽", "⣾",
"⣿"
];
Self::generate_frames(pattern, 60)
}
pub fn dot_spinner6() -> Frames {
let pattern = styled_string!["⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"];
Self::generate_frames(pattern, 100)
}
pub fn dot_spinner7() -> Frames {
let pattern = styled_string!["⢄", "⢂", "⢁", "⡁", "⡈", "⡐", "⡠"];
Self::generate_frames(pattern, 100)
}
pub fn dot_spinner8() -> Frames {
let pattern = styled_string![
"⠁", "⠂", "⠄", "⡀", "⡈", "⡐", "⡠", "⣀", "⣁", "⣂", "⣄", "⣌", "⣔", "⣤", "⣥", "⣦", "⣮",
"⣶", "⣷", "⣿", "⡿", "⠿", "⢟", "⠟", "⡛", "⠛", "⠫", "⢋", "⠋", "⠍", "⡉", "⠉", "⠑", "⠡",
"⢁"
];
Self::generate_frames(pattern, 100)
}
pub fn dot_spinner9() -> Frames {
let pattern = styled_string![
"⢀⠀", "⡀⠀", "⠄⠀", "⢂⠀", "⡂⠀", "⠅⠀", "⢃⠀", "⡃⠀", "⠍⠀", "⢋⠀", "⡋⠀", "⠍⠁", "⢋⠁", "⡋⠁",
"⠍⠉", "⠋⠉", "⠋⠉", "⠉⠙", "⠉⠙", "⠉⠩", "⠈⢙", "⠈⡙", "⢈⠩", "⡀⢙", "⠄⡙", "⢂⠩", "⡂⢘", "⠅⡘",
"⢃⠨", "⡃⢐", "⠍⡐", "⢋⠠", "⡋⢀", "⠍⡁", "⢋⠁", "⡋⠁", "⠍⠉", "⠋⠉", "⠋⠉", "⠉⠙", "⠉⠙", "⠉⠩",
"⠈⢙", "⠈⡙", "⠈⠩", "⠀⢙", "⠀⡙", "⠀⠩", "⠀⢘", "⠀⡘", "⠀⠨", "⠀⢐", "⠀⡐", "⠀⠠", "⠀⢀", "⠀⡀"
];
Self::generate_frames(pattern, 100)
}
pub fn dot_spinner10() -> Frames {
let pattern = styled_string!["⠁", "⠂", "⠄", "⡀", "⢀", "⠠", "⠐", "⠈"];
Self::generate_frames(pattern, 100)
}
pub fn dot_spinner11() -> Frames {
let pattern = styled_string!["⢄", "⢂", "⢁", "⡁", "⡈", "⡐", "⡠"];
Self::generate_frames(pattern, 100)
}
pub fn kaomoji() -> Frames {
let pattern = styled_string![
"( ´・ω)",
"( ´・ω・)",
"(´・ω・`)",
"(・ω・` )",
"(ω・` )",
"(・ω・` )",
"(´・ω・`)",
"( ´・ω・)",
"( ´・ω)"
];
Self::generate_frames(pattern, 100)
}
pub fn aesthetic_spin() -> Frames {
let pattern = styled_string![
"▱ ▱ ▱ ▱ ▱ ▱ ▱ ",
"▰ ▱ ▱ ▱ ▱ ▱ ▱ ",
"▰ ▰ ▱ ▱ ▱ ▱ ▱ ",
"▰ ▰ ▰ ▱ ▱ ▱ ▱ ",
"▰ ▰ ▰ ▰ ▱ ▱ ▱ ",
"▰ ▰ ▰ ▰ ▰ ▱ ▱ ",
"▰ ▰ ▰ ▰ ▰ ▰ ▱ ",
"▰ ▰ ▰ ▰ ▰ ▰ ▰ ",
"▱ ▰ ▰ ▰ ▰ ▰ ▰ ",
"▱ ▱ ▰ ▰ ▰ ▰ ▰ ",
"▱ ▱ ▱ ▰ ▰ ▰ ▰ ",
"▱ ▱ ▱ ▱ ▰ ▰ ▰ ",
"▱ ▱ ▱ ▱ ▱ ▰ ▰ ",
"▱ ▱ ▱ ▱ ▱ ▱ ▰ ",
"▱ ▱ ▱ ▱ ▱ ▱ ▱ "
];
Self::generate_frames(pattern, 120)
}
pub fn aesthetic_load() -> Frames {
let pattern = styled_string![
"▱ ▱ ▱ ▱ ▱ ▱ ▱ ",
"▰ ▱ ▱ ▱ ▱ ▱ ▱ ",
"▰ ▰ ▱ ▱ ▱ ▱ ▱ ",
"▰ ▰ ▰ ▱ ▱ ▱ ▱ ",
"▰ ▰ ▰ ▰ ▱ ▱ ▱ ",
"▰ ▰ ▰ ▰ ▰ ▱ ▱ ",
"▰ ▰ ▰ ▰ ▰ ▰ ▱ ",
"▰ ▰ ▰ ▰ ▰ ▰ ▰ "
];
Self::generate_frames(pattern, 180)
}
pub fn clock() -> Frames {
let pattern = styled_string![
"🕛 ", "🕐 ", "🕑 ", "🕒 ", "🕓 ", "🕔 ", "🕕 ", "🕖 ", "🕗 ", "🕘 ", "🕙 ", "🕚 "
];
Self::generate_frames(pattern, 100)
}
pub fn small_bouncing_bar() -> Frames {
let pattern = styled_string![
"[ ]", "[= ]", "[== ]", "[=== ]", "[ ===]", "[ ==]", "[ =]", "[ ]",
"[ =]", "[ ==]", "[ ===]", "[====]", "[=== ]", "[== ]", "[= ]"
];
Self::generate_frames(pattern, 80)
}
pub fn small_loading_bar() -> Frames {
let pattern =
styled_string!["[ ]", "[= ]", "[== ]", "[=== ]", "[ ===]", "[ ==]", "[ =]"];
Self::generate_frames(pattern, 80)
}
pub fn loading_bar_with_arrow() -> Frames {
let pattern = styled_string![
"[ ]",
"[=> ]",
"[===> ]",
"[=====> ]",
"[======> ]",
"[========> ]",
"[==========> ]",
"[============> ]",
"[==============> ]",
"[================> ]",
"[==================> ]",
"[===================>]"
];
Self::generate_frames(pattern, 100)
}
pub fn short_loading_bar_with_arrow() -> Frames {
let pattern = styled_string![
"[>] >>>]",
"[>>> >>]",
"[>>>> |>]",
"[ >>>> [ ]",
"[ |>>>> [ ]",
"[ ] >>>> [ ]",
"[ ] >>>> [ ]",
"[ ] >>>> [ ]",
"[ ] >>>> [ ]",
"[ ] >>>> [ ]",
"[ ] >>>>| ]",
"[ ] >>>> ]"
];
Self::generate_frames(pattern, 130)
}
pub fn material() -> Frames {
let pattern = styled_string![
"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"██████▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"███████▁▁▁▁▁▁▁▁▁▁▁▁▁",
"████████▁▁▁▁▁▁▁▁▁▁▁▁",
"█████████▁▁▁▁▁▁▁▁▁▁▁",
"█████████▁▁▁▁▁▁▁▁▁▁▁",
"██████████▁▁▁▁▁▁▁▁▁▁",
"███████████▁▁▁▁▁▁▁▁▁",
"█████████████▁▁▁▁▁▁▁",
"██████████████▁▁▁▁▁▁",
"██████████████▁▁▁▁▁▁",
"▁██████████████▁▁▁▁▁",
"▁██████████████▁▁▁▁▁",
"▁██████████████▁▁▁▁▁",
"▁▁██████████████▁▁▁▁",
"▁▁▁██████████████▁▁▁",
"▁▁▁▁█████████████▁▁▁",
"▁▁▁▁██████████████▁▁",
"▁▁▁▁██████████████▁▁",
"▁▁▁▁▁██████████████▁",
"▁▁▁▁▁██████████████▁",
"▁▁▁▁▁██████████████▁",
"▁▁▁▁▁▁██████████████",
"▁▁▁▁▁▁██████████████",
"▁▁▁▁▁▁▁█████████████",
"▁▁▁▁▁▁▁█████████████",
"▁▁▁▁▁▁▁▁████████████",
"▁▁▁▁▁▁▁▁████████████",
"▁▁▁▁▁▁▁▁▁███████████",
"▁▁▁▁▁▁▁▁▁███████████",
"▁▁▁▁▁▁▁▁▁▁██████████",
"▁▁▁▁▁▁▁▁▁▁██████████",
"▁▁▁▁▁▁▁▁▁▁▁▁████████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁██████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
"█▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
"██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
"███▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
"████▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
"█████▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
"██████▁▁▁▁▁▁▁▁▁▁▁▁▁█",
"████████▁▁▁▁▁▁▁▁▁▁▁▁",
"█████████▁▁▁▁▁▁▁▁▁▁▁",
"█████████▁▁▁▁▁▁▁▁▁▁▁",
"█████████▁▁▁▁▁▁▁▁▁▁▁",
"█████████▁▁▁▁▁▁▁▁▁▁▁",
"███████████▁▁▁▁▁▁▁▁▁",
"████████████▁▁▁▁▁▁▁▁",
"████████████▁▁▁▁▁▁▁▁",
"██████████████▁▁▁▁▁▁",
"██████████████▁▁▁▁▁▁",
"▁██████████████▁▁▁▁▁",
"▁██████████████▁▁▁▁▁",
"▁▁▁█████████████▁▁▁▁",
"▁▁▁▁▁████████████▁▁▁",
"▁▁▁▁▁████████████▁▁▁",
"▁▁▁▁▁▁███████████▁▁▁",
"▁▁▁▁▁▁▁▁█████████▁▁▁",
"▁▁▁▁▁▁▁▁█████████▁▁▁",
"▁▁▁▁▁▁▁▁▁█████████▁▁",
"▁▁▁▁▁▁▁▁▁█████████▁▁",
"▁▁▁▁▁▁▁▁▁▁█████████▁",
"▁▁▁▁▁▁▁▁▁▁▁████████▁",
"▁▁▁▁▁▁▁▁▁▁▁████████▁",
"▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
"▁▁▁▁▁▁▁▁▁▁▁▁███████▁",
"▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁███████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁████",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁███",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁██",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁█",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁",
"▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁"
];
Self::generate_frames(pattern, 17)
}
pub fn moon() -> Frames {
let pattern = styled_string!["🌑 ", "🌒 ", "🌓 ", "🌔 ", "🌕 ", "🌖 ", "🌗 ", "🌘 "];
Self::generate_frames(pattern, 130)
}
pub fn dots_simple1() -> Frames {
let pattern = styled_string![". ", ".. ", "...", " ..", " .", " "];
Self::generate_frames(pattern, 260)
}
pub fn dots_simple2() -> Frames {
let pattern = styled_string![" ", ". ", ".. ", "..."];
Self::generate_frames(pattern, 360)
}
pub fn japanese() -> Frames {
let pattern = styled_string![
"ヲ", "ァ", "ィ", "ゥ", "ェ", "ォ", "ャ", "ュ", "ョ", "ッ", "ア", "イ", "ウ", "エ", "オ", "カ", "キ",
"ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ", "タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ",
"ノ", "ハ", "ヒ", "フ", "ヘ", "ホ", "マ", "ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル",
"レ", "ロ", "ワ", "ン"
];
Self::generate_frames(pattern, 180)
}
pub fn line() -> Frames {
let pattern = styled_string![
"________", "-_______", "_-______", "__-_____", "___-____", "____-___", "_____-__",
"______-_", "_______-", "________", "_______-", "______-_", "_____-__", "____-___",
"___-____", "__-_____", "_-______", "-_______", "________"
];
Self::generate_frames(pattern, 120)
}
pub fn line2() -> Frames {
let pattern = styled_string![
"|_______",
"_/______",
"__-_____",
"___\\____",
"____|___",
"_____/__",
"______-_",
"_______\\",
"_______|",
"______\\_",
"_____-__",
"____/___",
"___|____",
"__\\_____",
"_-______"
];
Self::generate_frames(pattern, 120)
}
pub fn block() -> Frames {
let pattern = styled_string![
"▁", "▃", "▄", "▅", "▆", "▇", "█", "▇", "▆", "▅", "▄", "▃", "▁"
];
Self::generate_frames(pattern, 100)
}
pub fn block_spinn() -> Frames {
let pattern = styled_string!["▖", "▘", "▝", "▗"];
Self::generate_frames(pattern, 100)
}
pub fn arrow_spinn() -> Frames {
let pattern = styled_string!["←", "↖", "↑", "↗", "→", "↘", "↓", "↙"];
Self::generate_frames(pattern, 100)
}
pub fn big_arrow_spinn() -> Frames {
let pattern = styled_string!["⇐", "⇖", "⇑", "⇗", "⇒", "⇘", "⇓", "⇙"];
Self::generate_frames(pattern, 140)
}
pub fn line_spinner() -> Frames {
let pattern = styled_string!["┤", "┘", "┴", "└", "├", "┌", "┬", "┐"];
Self::generate_frames(pattern, 120)
}
pub fn line_spinner_simple() -> Frames {
let pattern = styled_string!["|", "/", "-", "\\"];
Self::generate_frames(pattern, 120)
}
pub fn corner() -> Frames {
let pattern = styled_string!["◢", "◣", "◤", "◥"];
Self::generate_frames(pattern, 160)
}
pub fn abc() -> Frames {
let pattern = styled_string![
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q",
"r", "s", "t", "u", "v", "w", "x", "y", "z"
];
Self::generate_frames(pattern, 150)
}
pub fn earth() -> Frames {
let pattern = styled_string!["🌍", "🌎", "🌏"];
Self::generate_frames(pattern, 200)
}
pub fn arrow_row() -> Frames {
let pattern = styled_string!["▹▹▹▹▹", "▸▹▹▹▹", "▹▸▹▹▹", "▹▹▸▹▹", "▹▹▹▸▹", "▹▹▹▹▸"];
Self::generate_frames(pattern, 140)
}
pub fn fractions() -> Frames {
let pattern = styled_string!["½", "⅓", "⅔", "¼", "¾", "⅛", "⅜", "⅝", "⅞"];
Self::generate_frames(pattern, 100)
}
pub fn star1() -> Frames {
let pattern = styled_string!["✶", "✸", "✹", "✺", "✹", "✷"];
Self::generate_frames(pattern, 180)
}
pub fn star2() -> Frames {
let pattern = styled_string!["+", "x", "*"];
Self::generate_frames(pattern, 180)
}
pub fn dot_bounce() -> Frames {
let pattern = styled_string![".", "o", "O", "°", "O", "o", "."];
Self::generate_frames(pattern, 120)
}
pub fn flip() -> Frames {
let pattern = styled_string!["_", "_", "_", "-", "`", "`", "'", "´", "-", "_", "_", "_"];
Self::generate_frames(pattern, 120)
}
pub fn binary() -> Frames {
let pattern = styled_string![
"010010", "001100", "100101", "111010", "111101", "010111", "101011", "111000",
"110011", "110101"
];
Self::generate_frames(pattern, 80)
}
pub fn big_loading_bar() -> Frames {
let pattern = styled_string![
"▒▒▒▒▒▒▒▒▒▒",
"█▒▒▒▒▒▒▒▒▒",
"███▒▒▒▒▒▒▒",
"█████▒▒▒▒▒",
"███████▒▒▒",
"██████████"
];
Self::generate_frames(pattern, 240)
}
pub fn wall_bounce() -> Frames {
let pattern = styled_string![
"▐⠂ ▌",
"▐⠈ ▌",
"▐ ⠂ ▌",
"▐ ⠠ ▌",
"▐ ⡀ ▌",
"▐ ⠠ ▌",
"▐ ⠂ ▌",
"▐ ⠈ ▌",
"▐ ⠂ ▌",
"▐ ⠠ ▌",
"▐ ⡀ ▌",
"▐ ⠠ ▌",
"▐ ⠂ ▌",
"▐ ⠈ ▌",
"▐ ⠂▌",
"▐ ⠠▌",
"▐ ⡀▌",
"▐ ⠠ ▌",
"▐ ⠂ ▌",
"▐ ⠈ ▌",
"▐ ⠂ ▌",
"▐ ⠠ ▌",
"▐ ⡀ ▌",
"▐ ⠠ ▌",
"▐ ⠂ ▌",
"▐ ⠈ ▌",
"▐ ⠂ ▌",
"▐ ⠠ ▌",
"▐ ⡀ ▌",
"▐⠠ ▌"
];
Self::generate_frames(pattern, 140)
}
pub fn wall_bounce_line() -> Frames {
let pattern = styled_string![
"▐|\\____________▌",
"▐_|\\___________▌",
"▐__|\\__________▌",
"▐___|\\_________▌",
"▐____|\\________▌",
"▐_____|\\_______▌",
"▐______|\\______▌",
"▐_______|\\_____▌",
"▐________|\\____▌",
"▐_________|\\___▌",
"▐__________|\\__▌",
"▐___________|\\_▌",
"▐____________|\\▌",
"▐____________/|▌",
"▐___________/|_▌",
"▐__________/|__▌",
"▐_________/|___▌",
"▐________/|____▌",
"▐_______/|_____▌",
"▐______/|______▌",
"▐_____/|_______▌",
"▐____/|________▌",
"▐___/|_________▌",
"▐__/|__________▌",
"▐_/|___________▌",
"▐/|____________▌"
];
Self::generate_frames(pattern, 100)
}
pub fn stack() -> Frames {
let pattern = styled_string!["☱", "☲", "☴"];
Self::generate_frames(pattern, 200)
}
pub fn toggle() -> Frames {
let pattern = styled_string!["⊶", "⊷"];
Self::generate_frames(pattern, 250)
}
pub fn toggle2() -> Frames {
let pattern = styled_string!["▫", "▪"];
Self::generate_frames(pattern, 240)
}
pub fn toggle3() -> Frames {
let pattern = styled_string!["□", "■"];
Self::generate_frames(pattern, 240)
}
pub fn toggle4() -> Frames {
let pattern = styled_string!["■", "□", "▪", "▫"];
Self::generate_frames(pattern, 240)
}
pub fn toggle5() -> Frames {
let pattern = styled_string!["▮ ", "▯ "];
Self::generate_frames(pattern, 240)
}
pub fn toggle6() -> Frames {
let pattern = styled_string!["ဝ", "၀"];
Self::generate_frames(pattern, 240)
}
pub fn toggle7() -> Frames {
let pattern = styled_string!["⦾", "⦿"];
Self::generate_frames(pattern, 240)
}
pub fn toggle8() -> Frames {
let pattern = styled_string!["◍", "◌"];
Self::generate_frames(pattern, 240)
}
pub fn toggle9() -> Frames {
let pattern = styled_string!["◉", "◎"];
Self::generate_frames(pattern, 240)
}
pub fn toggle10() -> Frames {
let pattern = styled_string!["㊂", "㊀", "㊁"];
Self::generate_frames(pattern, 240)
}
pub fn toggle11() -> Frames {
let pattern = styled_string!["⧇", "⧆"];
Self::generate_frames(pattern, 240)
}
pub fn toggle12() -> Frames {
let pattern = styled_string!["☗", "☖"];
Self::generate_frames(pattern, 240)
}
pub fn toggle13() -> Frames {
let pattern = styled_string!["=", "*", "-"];
Self::generate_frames(pattern, 240)
}
pub fn arc() -> Frames {
let pattern = styled_string!["◜", "◠", "◝", "◞", "◡", "◟"];
Self::generate_frames(pattern, 120)
}
pub fn circle() -> Frames {
let pattern = styled_string!["◡", "⊙", "◠"];
Self::generate_frames(pattern, 200)
}
pub fn square_corners() -> Frames {
let pattern = styled_string!["◰ ", "◳ ", "◲ ", "◱ "];
Self::generate_frames(pattern, 200)
}
pub fn circle_corners() -> Frames {
let pattern = styled_string!["◴ ", "◷ ", "◶ ", "◵ "];
Self::generate_frames(pattern, 200)
}
pub fn circle_halves() -> Frames {
let pattern = styled_string!["◐ ", "◓ ", "◑ ", "◒ "];
Self::generate_frames(pattern, 200)
}
pub fn bouncing_ball() -> Frames {
let pattern = styled_string![
"( ● )",
"( ● )",
"( ● )",
"( ● )",
"( ●)",
"( ● )",
"( ● )",
"( ● )",
"( ● )",
"(● )"
];
Self::generate_frames(pattern, 160)
}
pub fn smiley() -> Frames {
let pattern = styled_string!["😄 ", "😝 "];
Self::generate_frames(pattern, 460)
}
pub fn monkey() -> Frames {
let pattern = styled_string!["🙈 ", "🙈 ", "🙉 ", "🙊 "];
Self::generate_frames(pattern, 440)
}
pub fn hearts() -> Frames {
let pattern = styled_string!["💛 ", "💙 ", "💜 ", "💚 ", "❤️ "];
Self::generate_frames(pattern, 240)
}
pub fn runner() -> Frames {
let pattern = styled_string!["🚶 ", "🏃 "];
Self::generate_frames(pattern, 240)
}
pub fn raining() -> Frames {
let pattern = styled_string!["🌧 ", "🌨 ", "🌧 ", "🌨 ", "🌧 ", "🌨 ", "🌨 ", "🌧 ", "🌨 "];
Self::generate_frames(pattern, 140)
}
pub fn weather() -> Frames {
let pattern = styled_string![
"☀️ ", "☀️ ", "⛅️ ", "⛅️ ", "☁️ ", "☁️ ", "⛅️ ", "⛅️ ", "☀️ ", "☀️ "
];
Self::generate_frames(pattern, 440)
}
pub fn christmas_tree() -> Frames {
let pattern = styled_string!["🌲", "🎄"];
Self::generate_frames(pattern, 340)
}
pub fn nade() -> Frames {
let pattern = styled_string![
"، ", "′ ", " ´ ", " ‾ ", " ⸌", " ⸊", " |", " ⁎", " ⁕", " ෴ ", " ⁓", " ",
" ", " "
];
Self::generate_frames(pattern, 180)
}
pub fn dots_simple_big1() -> Frames {
let pattern = styled_string![
"●∙∙",
"●∙∙",
"●∙∙",
"●∙∙",
"∙●∙",
"∙●∙",
"∙●∙",
"∙●∙",
"∙∙●",
"∙∙●",
"∙∙●",
"∙∙●"
];
Self::generate_frames(pattern, 240)
}
pub fn dots_simple_big2() -> Frames {
let pattern = styled_string![
"∙∙∙",
"∙∙∙",
"∙∙∙",
"∙∙∙",
"●∙∙",
"●∙∙",
"●∙∙",
"●∙∙",
"∙●∙",
"∙●∙",
"∙●∙",
"∙●∙",
"∙∙●",
"∙∙●",
"∙∙●",
"∙∙●"
];
Self::generate_frames(pattern, 240)
}
pub fn dots_simple_big3() -> Frames {
let pattern = styled_string![
"∙∙∙",
"∙∙∙",
"∙∙∙",
"●∙∙",
"●∙∙",
"●∙∙",
"●●∙",
"●●∙",
"●●∙",
"●●●",
"●●●",
"●●●",
"∙●●",
"∙●●",
"∙●●",
"∙∙●",
"∙∙●",
"∙∙●"
];
Self::generate_frames(pattern, 180)
}
pub fn dots_simple_big4() -> Frames {
let pattern = styled_string!["∙∙∙", "●∙∙", "●●∙", "●●●"];
Self::generate_frames(pattern, 180)
}
pub fn fist_bump() -> Frames {
let pattern = styled_string![
"🤜 🤛 ",
" 🤜 🤛 ",
" 🤜 🤛 ",
" 🤜 🤛 ",
" 🤜 🤛 ",
" 🤜 🤛 ",
" 🤜✨🤛 ",
" 🤜 🤛 "
];
Self::generate_frames(pattern, 100)
}
pub fn finger_dance() -> Frames {
let pattern = styled_string!["🤘 ", "🤟 ", "🖖 ", "✋ ", "🤚 ", "👆 "];
Self::generate_frames(pattern, 280)
}
pub fn mind_blown() -> Frames {
let pattern = styled_string![
"😐 ", "😐 ", "😮 ", "😮 ", "😦 ", "😦 ", "😧 ", "😧 ", "🤯 ", "🤯 ", "💥 ", "💥 ",
"✨ "
];
Self::generate_frames(pattern, 280)
}
pub fn speaker() -> Frames {
let pattern = styled_string!["🔈 ", "🔉 ", "🔊 ", "🔉 "];
Self::generate_frames(pattern, 200)
}
pub fn arrows() -> Frames {
let pattern = styled_string!["⇢", "⇨", "⇒", "⇉", "⇶"];
Self::generate_frames(pattern, 150)
}
pub fn dot_box() -> Frames {
let pattern = styled_string![".", "·", "•", "¤", "°", "¤", "•", "·"];
Self::generate_frames(pattern, 150)
}
pub fn simple_line_spin() -> Frames {
let pattern = styled_string!["+", "\\", "|", "!", "/", "-", "x"];
Self::generate_frames(pattern, 150)
}
pub fn bomb() -> Frames {
let pattern = styled_string![
"💣 ", " 💣 ", " 💣 ", " 💣", " 💣", " 💣", " 💣", " 💥", " ", " "
];
Self::generate_frames(pattern, 100)
}
pub fn dot_bounce2() -> Frames {
let pattern = styled_string![".", "·", "˙", "·", "."];
Self::generate_frames(pattern, 110)
}
pub fn orange_pulse() -> Frames {
let pattern = styled_string!["🔸", "🔶", "🟠", "🟠", "🔶"];
Self::generate_frames(pattern, 110)
}
pub fn blue_pulse() -> Frames {
let pattern = styled_string!["🔹", "🔷", "🔵", "🔵", "🔷"];
Self::generate_frames(pattern, 110)
}
pub fn green_pulse() -> Frames {
let pattern = styled_string!["🟢", "🟩", "🟩", "🟢"];
Self::generate_frames(pattern, 110)
}
pub fn red_pulse() -> Frames {
let pattern = styled_string!["🔴", "🟥", "🟥", "🔴"];
Self::generate_frames(pattern, 110)
}
pub fn other() -> Frames {
let pattern = styled_string!["d", "q", "p", "b"];
Self::generate_frames(pattern, 110)
}
pub fn pray() -> Frames {
let pattern = styled_string!["🧍 ", "🚶 ", "🧎 ", "🙇 "];
Self::generate_frames(pattern, 210)
}
pub fn wavy() -> Frames {
let pattern = styled_string![
"¸¸¸¸¸¸¸¸¸",
".¸¸¸¸¸¸¸¸",
"·.¸¸¸¸¸¸¸",
"¯`·.¸¸¸¸¸",
"´¯`·.¸¸¸¸",
"·´¯`·.¸¸¸",
".·´¯`·.¸¸",
"¸.·´¯`·.¸",
"¸¸.·´¯`·.",
"¸¸¸.·´¯`·",
"¸¸¸¸.·´¯`",
"¸¸¸¸¸.·´¯",
"¸¸¸¸¸¸.·´",
"¸¸¸¸¸¸¸.·",
"¸¸¸¸¸¸¸¸·"
];
Self::generate_frames(pattern, 80)
}
pub fn wavy2() -> Frames {
let pattern = styled_string![
"¸.·´¯`·.¸",
"¸¸.·´¯`·.",
".¸¸.·´¯`·",
"·.¸¸.·´¯`",
"`·.¸¸.·´¯",
"¯`·.¸¸.·´",
"´¯`·.¸¸.·",
"·´¯`·.¸¸.",
".·´¯`·.¸¸"
];
Self::generate_frames(pattern, 100)
}
pub fn wavy3() -> Frames {
let pattern = styled_string![
"▃▄▅",
"▆▇█",
"▇█▇",
"█▇▆",
"▇▆▅",
"▆▅▄",
"▅▄▂",
"▄▂▁",
"▂▁▂",
"▁▂▃",
"▂▃▄"
];
Self::generate_frames(pattern, 40)
}
pub fn wavy4() -> Frames {
let pattern = styled_string![
"ρββββββ",
"βρβββββ",
"ββρββββ",
"βββρβββ",
"ββββρββ",
"βββββρβ",
"ββββββρ"
];
Self::generate_frames(pattern, 100)
}
pub fn soccer() -> Frames {
let pattern = styled_string![
" 🧑⚽️ 🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️ 🧑 ",
"🧑 ⚽️ 🧑 "
];
Self::generate_frames(pattern, 80)
}
pub fn layer() -> Frames {
let pattern = styled_string!["-", "=", "≡"];
Self::generate_frames(pattern, 250)
}
pub fn matrix_glitch() -> Frames {
let pattern = styled_string![
"⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏",
"⠙⠹⠸⠼⠴⠦⠧⠇⠏⠋",
"⠹⠸⠼⠴⠦⠧⠇⠏⠋⠙",
"⠸⠼⠴⠦⠧⠇⠏⠋⠙⠹",
"⠼⠴⠦⠧⠇⠏⠋⠙⠹⠸",
"⠴⠦⠧⠇⠏⠋⠙⠹⠸⠼",
"⠦⠧⠇⠏⠋⠙⠹⠸⠼⠴",
"⠧⠇⠏⠋⠙⠹⠸⠼⠴⠦",
"⠇⠏⠋⠙⠹⠸⠼⠴⠦⠧",
"⠏⠋⠙⠹⠸⠼⠴⠦⠧⠇"
];
Self::generate_frames(pattern, 100)
}
pub fn matrix_glitch2() -> Frames {
let pattern = styled_string![
"█▒▓░█░▒▒▓░░▓▒▓▒█▓░░▓▓░░▓░",
"█▒▓▒█░▒▓░▓▒▓█▒░▒▓█▒░▓░▓░▓",
"▒█░░█▒░░▓▓▒░▒▓░░▒▒█▓░▓▓░░",
"░█░▓█░▒░▒▓░▒▓█▓░░▒░▓░▓░▓▓",
"▒▓█▓▓▓░▒▒▒▓░▓▒▒▒▒▒▓░░▒▒▓░",
"▓█▓█▓▒░▒▒▒▓▓▓▓░▒▒▓▒▒▓▒▓▒▒",
"▒▓█▒▓▓░▓▓▒▓▒▒▒▓▓▒░▓░▒▒▓▓▒",
"▓░▒▓▒▒▓▓▒░▒▓▒▒░▓▒░▒▓▓▒▒▓▓",
"▓░░░▓▒▓░░░▒▒▓░░░░▓▓░░▓▒▒▒",
"▓▒▓▒▓▓▒▓▒▒▓▒▓▓▓▓▒▓▒▓▓▒▒▓▒"
];
Self::generate_frames(pattern, 100)
}
pub fn matrix_glitch2_small() -> Frames {
let pattern = styled_string![
"█▒▓░█░▒▒▓",
"█▒▓▒█░▒▓░",
"▒█░░█▒░░▓",
"░█░▓█░▒░▒",
"▒▓█▓▓▓░▒▒",
"▓█▓█▓▒░▒▒",
"▒▓█▒▓▓░▓▓",
"▓░▒▓▒▒▓▓▒",
"▓░░░▓▒▓░░",
"▓▒▓▒▓▓▒▓▒"
];
Self::generate_frames(pattern, 100)
}
pub fn dwarf_fortress() -> Frames {
let pattern = styled_string![
" ██████£££ ",
"☺██████£££ ",
"☺██████£££ ",
"☺▓█████£££ ",
"☺▓█████£££ ",
"☺▒█████£££ ",
"☺▒█████£££ ",
"☺░█████£££ ",
"☺░█████£££ ",
"☺ █████£££ ",
" ☺█████£££ ",
" ☺█████£££ ",
" ☺▓████£££ ",
" ☺▓████£££ ",
" ☺▒████£££ ",
" ☺▒████£££ ",
" ☺░████£££ ",
" ☺░████£££ ",
" ☺ ████£££ ",
" ☺████£££ ",
" ☺████£££ ",
" ☺▓███£££ ",
" ☺▓███£££ ",
" ☺▒███£££ ",
" ☺▒███£££ ",
" ☺░███£££ ",
" ☺░███£££ ",
" ☺ ███£££ ",
" ☺███£££ ",
" ☺███£££ ",
" ☺▓██£££ ",
" ☺▓██£££ ",
" ☺▒██£££ ",
" ☺▒██£££ ",
" ☺░██£££ ",
" ☺░██£££ ",
" ☺ ██£££ ",
" ☺██£££ ",
" ☺██£££ ",
" ☺▓█£££ ",
" ☺▓█£££ ",
" ☺▒█£££ ",
" ☺▒█£££ ",
" ☺░█£££ ",
" ☺░█£££ ",
" ☺ █£££ ",
" ☺█£££ ",
" ☺█£££ ",
" ☺▓£££ ",
" ☺▓£££ ",
" ☺▒£££ ",
" ☺▒£££ ",
" ☺░£££ ",
" ☺░£££ ",
" ☺ £££ ",
" ☺£££ ",
" ☺£££ ",
" ☺▓££ ",
" ☺▓££ ",
" ☺▒££ ",
" ☺▒££ ",
" ☺░££ ",
" ☺░££ ",
" ☺ ££ ",
" ☺££ ",
" ☺££ ",
" ☺▓£ ",
" ☺▓£ ",
" ☺▒£ ",
" ☺▒£ ",
" ☺░£ ",
" ☺░£ ",
" ☺ £ ",
" ☺£ ",
" ☺£ ",
" ☺▓ ",
" ☺▓ ",
" ☺▒ ",
" ☺▒ ",
" ☺░ ",
" ☺░ ",
" ☺ ",
" ☺ &",
" ☺ ☼&",
" ☺ ☼ &",
" ☺☼ &",
" ☺☼ & ",
" ‼ & ",
" ☺ & ",
" ‼ & ",
" ☺ & ",
" ‼ & ",
" ☺ & ",
"‼ & ",
" & ",
" & ",
" & ░ ",
" & ▒ ",
" & ▓ ",
" & £ ",
" & ░£ ",
" & ▒£ ",
" & ▓£ ",
" & ££ ",
" & ░££ ",
" & ▒££ ",
"& ▓££ ",
"& £££ ",
" ░£££ ",
" ▒£££ ",
" ▓£££ ",
" █£££ ",
" ░█£££ ",
" ▒█£££ ",
" ▓█£££ ",
" ██£££ ",
" ░██£££ ",
" ▒██£££ ",
" ▓██£££ ",
" ███£££ ",
" ░███£££ ",
" ▒███£££ ",
" ▓███£££ ",
" ████£££ ",
" ░████£££ ",
" ▒████£££ ",
" ▓████£££ ",
" █████£££ ",
" ░█████£££ ",
" ▒█████£££ ",
" ▓█████£££ ",
" ██████£££ ",
" ██████£££ "
];
Self::generate_frames(pattern, 100)
}
}