summaryrefslogtreecommitdiffstats
path: root/third_party/rust/termion/examples/rainbow.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/termion/examples/rainbow.rs
parentInitial commit. (diff)
downloadfirefox-2aa4a82499d4becd2284cdb482213d541b8804dd.tar.xz
firefox-2aa4a82499d4becd2284cdb482213d541b8804dd.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/termion/examples/rainbow.rs')
-rw-r--r--third_party/rust/termion/examples/rainbow.rs60
1 files changed, 60 insertions, 0 deletions
diff --git a/third_party/rust/termion/examples/rainbow.rs b/third_party/rust/termion/examples/rainbow.rs
new file mode 100644
index 0000000000..4ee4000d01
--- /dev/null
+++ b/third_party/rust/termion/examples/rainbow.rs
@@ -0,0 +1,60 @@
+extern crate termion;
+
+use termion::event::Key;
+use termion::input::TermRead;
+use termion::raw::IntoRawMode;
+use std::io::{Write, stdout, stdin};
+
+fn rainbow<W: Write>(stdout: &mut W, blue: u8) {
+ write!(stdout,
+ "{}{}",
+ termion::cursor::Goto(1, 1),
+ termion::clear::All)
+ .unwrap();
+
+ for red in 0..32 {
+ let red = red * 8;
+ for green in 0..64 {
+ let green = green * 4;
+ write!(stdout,
+ "{} ",
+ termion::color::Bg(termion::color::Rgb(red, green, blue)))
+ .unwrap();
+ }
+ write!(stdout, "\n\r").unwrap();
+ }
+
+ writeln!(stdout, "{}b = {}", termion::style::Reset, blue).unwrap();
+}
+
+fn main() {
+ let stdin = stdin();
+ let mut stdout = stdout().into_raw_mode().unwrap();
+
+ writeln!(stdout,
+ "{}{}{}Use the up/down arrow keys to change the blue in the rainbow.",
+ termion::clear::All,
+ termion::cursor::Goto(1, 1),
+ termion::cursor::Hide)
+ .unwrap();
+
+ let mut blue = 172u8;
+
+ for c in stdin.keys() {
+ match c.unwrap() {
+ Key::Up => {
+ blue = blue.saturating_add(4);
+ rainbow(&mut stdout, blue);
+ }
+ Key::Down => {
+ blue = blue.saturating_sub(4);
+ rainbow(&mut stdout, blue);
+ }
+ Key::Char('q') => break,
+ _ => {}
+ }
+ stdout.flush().unwrap();
+ }
+
+ write!(stdout, "{}", termion::cursor::Show).unwrap();
+}