From 3b7bc08ff081e91fa52124a0a441c5dbd2e17214 Mon Sep 17 00:00:00 2001 From: Valerie Date: Fri, 23 Jun 2023 14:19:18 -0400 Subject: [PATCH 1/7] added libraries section to README --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 2c41b3d..b3ab496 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,8 @@ Currently supports a variety of stripe flags. Under Construction features: - ["Complex" Flags](https://git.vwolfe.io/valerie/pride/src/branch/complex) +## Libraries + +- [pico-args](https://crates.io/crates/pico-args) +- [termion](https://crates.io/crates/termion) + From b60ad4bb725fe899d5a9cb09b0a14de4629a422e Mon Sep 17 00:00:00 2001 From: Valerie Date: Mon, 26 Jun 2023 11:07:34 -0400 Subject: [PATCH 2/7] added mlm pride flag, made null subcommand display rainbow pride flag --- src/flag.rs | 11 +++++++++++ src/main.rs | 11 ++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/flag.rs b/src/flag.rs index 2da1984..eb2c31c 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -62,6 +62,17 @@ pub fn bisexual() -> Colors { vec![magenta, magenta, purple, blue, blue] } +pub fn gay() -> Colors { + let green1 = rgb(0x00906D); + let green2 = rgb(0x00D1A7); + let green3 = rgb(0x7EEBC1); + let blue1 = rgb(0x6CAEE8); + let blue2 = rgb(0x5543D3); + let blue3 = rgb(0x461280); + + vec![green1, green2, green3, WHITE, blue1, blue2, blue3] +} + pub fn genderfluid() -> Colors { let pink = rgb(0xFF75A2); let violet = rgb(0xBE18D6); diff --git a/src/main.rs b/src/main.rs index 439b0ad..324e23d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,7 +38,8 @@ fn main() { let subcommand = args.subcommand().unwrap(); let colors: Colors = match subcommand.as_deref() { - Some("pride" | "gay") + Some("pride") + | None => { let variant = args.subcommand().unwrap_or(None); match variant.as_deref() { @@ -70,6 +71,9 @@ fn main() { Some("bisexual" | "bi") => flag::bisexual(), + Some("gay" | "mlm") + => flag::gay(), + Some("genderfluid") => flag::genderfluid(), @@ -104,7 +108,7 @@ fn help_text() { println!("Valerie Wolfe "); println!("Show pride flags in the terminal.\n"); - println!("usage: pride [flags] \n"); + println!("usage: pride [flags] [name]\n"); println!("args:"); println!(" The pride flag to display\n"); @@ -127,7 +131,7 @@ fn list_text() { println!(" ace, asexual asexual pride flag"); println!(" bigender bigender pride flag"); println!(" bi, bisexual bisexual pride flag"); - println!(" gay, pride six-color rainbow flag"); + println!(" gay, mlm gay men pride flag"); println!(" genderfluid genderfluid pride flag"); println!(" genderqueer genderqueer pride flag"); println!(" gendervoid gendervoid pride flag"); @@ -135,6 +139,7 @@ fn list_text() { println!(" multigender multigender pride flag"); println!(" nb, nonbinary nonbinary pride flag"); println!(" pan, pansexual pansexual pride flag"); + println!(" pride six-color rainbow flag"); // println!(" progress progress arrow flag"); println!(" trans, transgender transgender pride flag"); } From dd7adca3d0253e8b02a6ff042b0091fae71844be Mon Sep 17 00:00:00 2001 From: Valerie Date: Mon, 26 Jun 2023 11:08:11 -0400 Subject: [PATCH 3/7] version bump --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index f2389ac..2b6969d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pride" -version = "0.1.4" +version = "0.1.5" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html From 2748d7e27308bd525cc8d54ace74be92126dc595 Mon Sep 17 00:00:00 2001 From: Valerie Date: Mon, 26 Jun 2023 11:17:21 -0400 Subject: [PATCH 4/7] added 'rainbow' name for rainbow pride flag --- src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 324e23d..fe1a93f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,7 +38,7 @@ fn main() { let subcommand = args.subcommand().unwrap(); let colors: Colors = match subcommand.as_deref() { - Some("pride") + Some("pride" | "rainbow") | None => { let variant = args.subcommand().unwrap_or(None); @@ -139,7 +139,7 @@ fn list_text() { println!(" multigender multigender pride flag"); println!(" nb, nonbinary nonbinary pride flag"); println!(" pan, pansexual pansexual pride flag"); - println!(" pride six-color rainbow flag"); + println!(" pride, rainbow six-color rainbow flag"); // println!(" progress progress arrow flag"); println!(" trans, transgender transgender pride flag"); } From 47d63cd7f53d057b7510e3cb12a820a4ea7ae3c1 Mon Sep 17 00:00:00 2001 From: Valerie Date: Mon, 26 Jun 2023 11:33:36 -0400 Subject: [PATCH 5/7] added more documentation --- src/color.rs | 2 ++ src/draw.rs | 18 ++++++++++++++++++ src/flag.rs | 2 ++ src/main.rs | 4 +++- src/variant.rs | 2 ++ 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/color.rs b/src/color.rs index 5a3a0b5..dcec15d 100644 --- a/src/color.rs +++ b/src/color.rs @@ -9,7 +9,9 @@ pub static WHITE: Color = Fg(Rgb(0xFF, 0xFF, 0xFF)); pub static RESET: Fg = Fg(Reset); +/// converts a hex integer to Fg(Rgb) pub fn rgb(hex: u32) -> Color { + // colors should be 0xrrggbb = 0x__rrggbb; drop the most significant byte let [_, r, g, b] = hex.to_be_bytes(); Fg(Rgb(r, g, b)) diff --git a/src/draw.rs b/src/draw.rs index c60a747..2b3255e 100644 --- a/src/draw.rs +++ b/src/draw.rs @@ -12,49 +12,67 @@ use termion::{ use crate::color::{ RESET, Colors }; use crate::flag::BLOCK; +/// draw a fullscreen stripe flag and hold for keypress pub fn full(colors: Colors) { + // prepare stdin and stdout let mut stdout = io::stdout().into_raw_mode().unwrap(); let stdin = io::stdin(); + // get constraints let count = colors.len(); let (width, height) = terminal_size().unwrap(); let thresh = height as usize / count; + // clear the terminal write!(stdout, "{}{}", cursor::Hide, clear::All).ok(); stdout.flush().ok(); + // build terminal width stripe string let stripe = BLOCK.repeat(width as usize); + // create our color index let mut index = 0; + // for every terminal row... for n in 0..(height as usize) { + // ... increment our index at color change threshold if n != 0 && n % thresh == 0 { index += 1; + // and break if out of bounds if index >= count { break; } } + // ... draw the stripe with color at index write!( stdout, "{color}{stripe}{RESET}", color = colors[index] ).ok(); } + // flush stdout stdout.flush().ok(); + // wait for keypress for _ in stdin.keys() { break; } write!(stdout, "{}{}", cursor::Show, clear::All).ok(); stdout.flush().ok(); } +/// draws a small stripe flag pub fn small(colors: Colors) { + // prepare stdout let mut stdout = io::stdout(); + // get constraints let count = colors.len(); let width = count * 3; + // build small stripe string let stripe = BLOCK.repeat(width); + // print a stripe for all colors for color in colors { println!("{color}{stripe}"); } + // reset our foreground color to play nice and flush stdout print!("{RESET}"); stdout.flush().ok(); } diff --git a/src/flag.rs b/src/flag.rs index eb2c31c..db8078b 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -1,3 +1,5 @@ +//! stripe pride flag color functions. +//! all of these return a Vec of colors to be drawn from first to last. use crate::color::*; diff --git a/src/main.rs b/src/main.rs index fe1a93f..65fb719 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,6 +12,7 @@ use crate::color::Colors; static VERSION: &str = env!("CARGO_PKG_VERSION"); fn main() { + // collect args let mut args = Arguments::from_env(); // handle help flag @@ -37,6 +38,7 @@ fn main() { let subcommand = args.subcommand().unwrap(); + // get color vec from matched flag let colors: Colors = match subcommand.as_deref() { Some("pride" | "rainbow") | None @@ -95,7 +97,7 @@ fn main() { Some("pansexual" | "pan") => flag::pansexual(), - _ => { help_text(); exit(1) } + _ => { help_text(); exit(1) } // (or die) }; if small { draw::small(colors); } diff --git a/src/variant.rs b/src/variant.rs index 127d71d..d2062cb 100644 --- a/src/variant.rs +++ b/src/variant.rs @@ -1,3 +1,5 @@ +//! variant pride flags +//! these aren't in the flag module for organizational reasons. use crate::{ color::*, From 6488a40905a71016275054c0d8f1ad80b75abb4a Mon Sep 17 00:00:00 2001 From: Valerie Date: Sun, 2 Jul 2023 11:02:49 -0400 Subject: [PATCH 6/7] added gnc flag --- src/flag.rs | 8 ++++++++ src/main.rs | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/src/flag.rs b/src/flag.rs index db8078b..f8d0b0d 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -83,6 +83,14 @@ pub fn genderfluid() -> Colors { vec![pink, WHITE, violet, BLACK, blue] } +pub fn gender_nonconforming() -> Colors { + let purple = rgb(0x50284D); + let magenta = rgb(0x96467B); + let blue = rgb(0x5C96F7); + + vec![purple, purple, magenta, blue, WHITE, blue, magenta, purple, purple] +} + pub fn genderqueer() -> Colors { let purple = rgb(0xB899DF); let green = rgb(0x6B8E3B); diff --git a/src/main.rs b/src/main.rs index 65fb719..15b9928 100644 --- a/src/main.rs +++ b/src/main.rs @@ -79,6 +79,9 @@ fn main() { Some("genderfluid") => flag::genderfluid(), + Some("gender-nonconforming" | "gnc" | "gendernonconforming") + => flag::gender_nonconforming(), + Some("genderqueer") => flag::genderqueer(), @@ -135,6 +138,7 @@ fn list_text() { println!(" bi, bisexual bisexual pride flag"); println!(" gay, mlm gay men pride flag"); println!(" genderfluid genderfluid pride flag"); + println!(" gender-nonconforming gender nonconforming pride flag"); println!(" genderqueer genderqueer pride flag"); println!(" gendervoid gendervoid pride flag"); println!(" lesbian lesbian pride flag"); From 1332a306bc436725858e244c13b9486a9842f0aa Mon Sep 17 00:00:00 2001 From: Valerie Date: Mon, 3 Jul 2023 11:14:44 -0400 Subject: [PATCH 7/7] updated README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3ab496..9917b4f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ to make major changes and refactors until the main roadmap is complete.** Currently supports a variety of stripe flags. Under Construction features: -- ["Complex" Flags](https://git.vwolfe.io/valerie/pride/src/branch/complex) +- [Complex Drawing](https://git.vwolfe.io/valerie/pride/src/branch/complex) ## Libraries