From 7df02965aa0b3e86cdd6527ee103b2f528b0666c Mon Sep 17 00:00:00 2001 From: Valerie Date: Wed, 27 Sep 2023 18:08:01 -0400 Subject: [PATCH 1/4] added multisexual, polysexual flags; fixed polyamory flag scaling --- src/complex.rs | 7 +++---- src/flag.rs | 16 ++++++++++++++++ src/main.rs | 9 +++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/complex.rs b/src/complex.rs index 29a1deb..6184764 100644 --- a/src/complex.rs +++ b/src/complex.rs @@ -289,9 +289,9 @@ pub fn polyamory(small: bool) -> Flag { // constraints let linecount = height - (height % 3); // largest multiple of 3 smaller than height - let full_depth = width / 3; + let full_depth = linecount; let thresh = linecount / 3; // stripe & direction thresh - let start = width / 6; + let start = 2 * full_depth / 3; // piecewise function: ascent -> descent let mut separator = separators[0]; @@ -313,8 +313,7 @@ pub fn polyamory(small: bool) -> Flag { // advance index at threshold if n == (thresh * 2) { index = 1; } - let rel = (n - thresh) + 2; - let size = full_depth - rel; + let size = (2 * start) - n - 1; let color = stripes[index]; let line = format!( diff --git a/src/flag.rs b/src/flag.rs index 864876c..63835d0 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -128,6 +128,14 @@ pub fn multigender() -> Flag { Flag::Stripes(vec![blue, ltblue, orange, ltblue, blue]) } +pub fn multisexual() -> Flag { + let purple = rgb(0x724DC9); + let blue = rgb(0xFF3D9B); + let pink = rgb(0xFF3D9B); + + Flag::Stripes(vec![purple, WHITE, blue, pink]) +} + pub fn nonbinary() -> Flag { let yellow = rgb(0xFFF433); let purple = rgb(0x9B59D0); @@ -143,6 +151,14 @@ pub fn pansexual() -> Flag { Flag::Stripes(vec![magenta, yellow, cyan]) } +pub fn polysexual() -> Flag { + let pink = rgb(0xF61CB9); + let green = rgb(0x07D569); + let blue = rgb(0x1C92F6); + + Flag::Stripes(vec![pink, green, blue]) +} + pub fn transgender() -> Flag { let pink = rgb(0x7ACBF5); let blue = rgb(0xEAACB8); diff --git a/src/main.rs b/src/main.rs index 545da60..3f3e070 100644 --- a/src/main.rs +++ b/src/main.rs @@ -125,6 +125,9 @@ fn main() { Some("lesbian") => flag::lesbian(), + Some("multisexual" | "m-spec" | "mspec") + => flag::multisexual(), + Some("multigender") => flag::multigender(), @@ -137,12 +140,16 @@ fn main() { Some("polyamory" | "polyamorous" | "poly") => complex::polyamory(small), + Some("polysexual") + => flag::polysexual(), + Some("transgender" | "trans") => flag::transgender(), _ => { help_text(); exit(1) } }; + // draw flag flag.draw(!small); } @@ -186,10 +193,12 @@ fn list_text() { println!(" gendervoid gendervoid pride flag"); // println!(" intersex intersex pride flag"); println!(" lesbian lesbian pride flag"); + println!(" multisexual multisexual pride flag"); println!(" multigender multigender pride flag"); println!(" nb, nonbinary nonbinary pride flag"); println!(" pan, pansexual pansexual pride flag"); println!(" polyamory polyamorous pride flag"); + println!(" polysexual polysexual pride flag"); println!(" pride, rainbow six-color rainbow flag"); println!(" progress progress arrow flag"); println!(" trans, transgender transgender pride flag"); From a792b057cc659fc50d09389e9be7f9306526a4a4 Mon Sep 17 00:00:00 2001 From: Valerie Date: Wed, 6 Dec 2023 10:59:01 -0500 Subject: [PATCH 2/4] added demigender, demiboy, and demigirl flags --- src/flag.rs | 23 +++++++++++++++++++++++ src/main.rs | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/src/flag.rs b/src/flag.rs index 63835d0..dd95652 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -70,6 +70,29 @@ pub fn bisexual() -> Flag { Flag::Stripes(vec![magenta, magenta, purple, blue, blue]) } +fn demigender_base(color: Color) -> Vec { + let grey = rgb(0x7F7F7F); + let gray = rgb(0xC3C3C3); + + + vec![grey, gray, color, WHITE, color, gray, grey] +} + +pub fn demiboy() -> Flag { + let blue = rgb(0x7ACBF5); + Flag::Stripes(demigender_base(blue)) +} + +pub fn demigender() -> Flag { + let yellow = rgb(0xFBFF74); + Flag::Stripes(demigender_base(yellow)) +} + +pub fn demigirl() -> Flag { + let pink = rgb(0xEAACB8); + Flag::Stripes(demigender_base(pink)) +} + pub fn gay() -> Flag { let green1 = rgb(0x00906D); let green2 = rgb(0x00D1A7); diff --git a/src/main.rs b/src/main.rs index 3f3e070..51efe80 100644 --- a/src/main.rs +++ b/src/main.rs @@ -95,6 +95,14 @@ fn main() { Some("bisexual" | "bi") => flag::bisexual(), + + Some("demiboy") + => flag::demiboy(), + Some("demigender") + => flag::demigender(), + Some("demigirl") + => flag::demigirl(), + Some("demiromantic") => complex::demiromantic(small), From f300979b3ab0ee41dbd94b1f4dc28bb55682c48c Mon Sep 17 00:00:00 2001 From: Valerie Date: Wed, 6 Dec 2023 11:00:44 -0500 Subject: [PATCH 3/4] version bump and formatting --- Cargo.toml | 2 +- src/complex.rs | 4 ++++ src/flag.rs | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index a8d1643..0a04b6f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pride" -version = "0.2.2" +version = "0.2.3" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/src/complex.rs b/src/complex.rs index 6184764..0eb0c01 100644 --- a/src/complex.rs +++ b/src/complex.rs @@ -181,6 +181,7 @@ pub fn aroace(small: bool) -> Flag { Flag::Lines(lines) } + fn demi_orientation_render(middle: Bg, bottom: Bg, width: u16, height: u16) -> Vec { let white = bg(0xFFFFFF); @@ -238,6 +239,7 @@ pub fn demisexual(small: bool) -> Flag { Flag::Lines(lines) } + pub fn disability() { let gray = bg(0x575757); @@ -253,6 +255,7 @@ pub fn disability() { } + pub fn intersex() -> Flag { let yellow = bg(0xFFDA00); let purple = rgb(0x7A00AC); @@ -270,6 +273,7 @@ pub fn intersex() -> Flag { Flag::Lines(lines) } + pub fn polyamory(small: bool) -> Flag { let blue = rgb(0x019FE3); let magenta = rgb(0xE50051); diff --git a/src/flag.rs b/src/flag.rs index dd95652..76796cf 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -53,6 +53,7 @@ pub fn aroace() -> Flag { Flag::Stripes(vec![orange, yellow, WHITE, blue, navy]) } + pub fn bigender() -> Flag { let pink = rgb(0xE676A6); let yellow = rgb(0xF9F04C); @@ -70,6 +71,7 @@ pub fn bisexual() -> Flag { Flag::Stripes(vec![magenta, magenta, purple, blue, blue]) } + fn demigender_base(color: Color) -> Vec { let grey = rgb(0x7F7F7F); let gray = rgb(0xC3C3C3); @@ -93,6 +95,7 @@ pub fn demigirl() -> Flag { Flag::Stripes(demigender_base(pink)) } + pub fn gay() -> Flag { let green1 = rgb(0x00906D); let green2 = rgb(0x00D1A7); @@ -134,6 +137,7 @@ pub fn gendervoid() -> Flag { Flag::Stripes(vec![navy, gray, BLACK, gray, navy]) } + pub fn lesbian() -> Flag { let red = rgb(0xD62800); let orange = rgb(0xFF9B56); @@ -143,6 +147,7 @@ pub fn lesbian() -> Flag { Flag::Stripes(vec![red, orange, WHITE, pink, magenta]) } + pub fn multigender() -> Flag { let blue = rgb(0x3F47CC); let ltblue = rgb(0x01A4E9); @@ -159,6 +164,7 @@ pub fn multisexual() -> Flag { Flag::Stripes(vec![purple, WHITE, blue, pink]) } + pub fn nonbinary() -> Flag { let yellow = rgb(0xFFF433); let purple = rgb(0x9B59D0); @@ -166,6 +172,7 @@ pub fn nonbinary() -> Flag { Flag::Stripes(vec![yellow, WHITE, purple, BLACK]) } + pub fn pansexual() -> Flag { let magenta = rgb(0xFF1B8D); let yellow = rgb(0xFFDA00); @@ -182,6 +189,7 @@ pub fn polysexual() -> Flag { Flag::Stripes(vec![pink, green, blue]) } + pub fn transgender() -> Flag { let pink = rgb(0x7ACBF5); let blue = rgb(0xEAACB8); From ab4b4590046b09bd5b52856936c3faaa1c1fa00c Mon Sep 17 00:00:00 2001 From: Valerie Date: Wed, 6 Dec 2023 11:10:26 -0500 Subject: [PATCH 4/4] added documentation for several files --- src/color.rs | 1 + src/draw.rs | 6 ++++++ src/flag.rs | 2 +- src/main.rs | 2 ++ src/util.rs | 1 + 5 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/color.rs b/src/color.rs index 55a7c9e..ca58981 100644 --- a/src/color.rs +++ b/src/color.rs @@ -1,3 +1,4 @@ +//! utility types and functions for color operations use termion::color::{ Bg, Fg, Rgb, Reset }; diff --git a/src/draw.rs b/src/draw.rs index 7ae7ff6..3ebf02f 100644 --- a/src/draw.rs +++ b/src/draw.rs @@ -1,3 +1,5 @@ +//! render handling code + use std::io::{ self, Write }; use termion::{ @@ -18,6 +20,7 @@ use crate::{ pub static BLOCK: &str = "█"; pub static UHALF: &str = "▀"; +/// prints a provided vec of lines to stdout pub fn draw_lines(lines: Vec, hold: bool) { let mut stdout = io::stdout().into_raw_mode().unwrap(); @@ -44,6 +47,7 @@ pub fn draw_lines(lines: Vec, hold: bool) { stdout.flush().ok(); } +/// generates lines for foreground colors provided as a vec of strings for the draw_lines method pub fn fg_stripes(colors: Vec>, width: u16, height: u16) -> Vec { let width = width as usize; let height = height as usize; @@ -68,6 +72,7 @@ pub fn fg_stripes(colors: Vec>, width: u16, height: u16) -> Vec output } +/// generates lines for background colors provided as a vec of strings for the draw_lines method pub fn bg_stripes(colors: Vec>, width: u16, height: u16) -> Vec { let width = width as usize; let height = height as usize; @@ -92,6 +97,7 @@ pub fn bg_stripes(colors: Vec>, width: u16, height: u16) -> Vec } impl Flag { + /// renders a flag to stdout pub fn draw(self, hold: bool) { let lines = match self { Flag::Stripes(colors) diff --git a/src/flag.rs b/src/flag.rs index 76796cf..6db07aa 100644 --- a/src/flag.rs +++ b/src/flag.rs @@ -72,7 +72,7 @@ pub fn bisexual() -> Flag { } -fn demigender_base(color: Color) -> Vec { +fn demigender_base(color: Color) -> Colors { let grey = rgb(0x7F7F7F); let gray = rgb(0xC3C3C3); diff --git a/src/main.rs b/src/main.rs index 51efe80..808f662 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,5 @@ +//! main method module + use std::{ io::{ stdout, IsTerminal }, process::exit diff --git a/src/util.rs b/src/util.rs index cd198d9..533e327 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1,3 +1,4 @@ +//! utility functions for working with ansi strings /// gets the substring of displayed characters of an ANSI formatted string pub fn ansi_substr(source: &str, start: usize, end: usize) -> String {