use { cgmath::Point2, nested::{ core::{OuterViewPort, ViewPort}, terminal::{make_label, TerminalStyle, TerminalView}, vec::VecBuffer, }, }; pub fn make_monstera() -> OuterViewPort { let monstera_lines_port = ViewPort::new(); let _monstera_lines = VecBuffer::with_data( vec![ make_label(" |"), make_label(" |"), make_label(" _..._ | _..._"), make_label(" .( \\|/ )."), make_label(" ( | )"), make_label(" .__>. <> | <> .<__."), make_label(" / | \\"), make_label(" | .___ _ | _ ___. |"), make_label(" _./___>. / \\ | / \\ .<___\\._ "), make_label(" / \\_/ | \\_/ \\"), make_label(" ( .____. | .____. )"), make_label(" ( /____ \\ _ | _ / ____\\ )"), make_label(" _* \\.) / \\ | / \\ (./ *_"), make_label(" / \\_/ | \\_/ \\"), make_label(" ( .__. | .__. )"), make_label(" ( / __ \\ | / __ \\ )"), make_label(" * / \\.) O | O (./ \\ *"), make_label(" / .___. | .___. \\"), make_label(" ( / .---\\ | /---. \\ )"), make_label(" *. ( | ) .*"), make_label(" \\_ . | . _/"), make_label(" \\ | /"), make_label(" ."), ], monstera_lines_port.inner(), ); monstera_lines_port .outer() .to_sequence() .to_index() .map_key( |idx| Point2::new(0 as i16, *idx as i16), |pt| if pt.x == 0 { Some(pt.y as usize) } else { None }, ) .flatten() .map_item(|_p, at| at.add_style_back(TerminalStyle::fg_color((0, 100, 10)))) }