Pi66

Home | Repos | About | Blog | Gaza

walrs
pywal but if its Fast-Minimal-Simple
git clone https://git.pi66.xyz/walrs

About | Files | Commits | Refs | License


feat: add method to lighten color toward white

Author: pixel2175
Date: 2025-06-24 01:26
commit: 37538e6d

Stat

M src/get_colors.rs 21 +14 -7

Diff

diff --git a/src/get_colors.rs b/src/get_colors.rs
index 6243a3b..481b4ed 100644
--- a/src/get_colors.rs
+++ b/src/get_colors.rs
@@ -24,11 +24,12 @@ fn remove_duplicates(colors: Vec<(u8, u8, u8)>) -> Vec<(u8, u8, u8)> {
     let set: HashSet<_> = colors.into_iter().collect();
     set.into_iter().collect()
 }
-
-fn to_gray(r: u8, g: u8, b: u8, v: u8) -> (u8, u8, u8) {
-    let mut gray = (0.3 * r as f32 + 0.59 * g as f32 + 0.11 * b as f32).round() as u8;
-    gray = gray.saturating_add(v);
-    (gray, gray, gray)
+fn to_gray(r: u8, g: u8, b: u8, v: f32) -> (u8, u8, u8) {
+    (
+        (r as f32 + (255.0 - r as f32) * v) as u8,
+        (g as f32 + (255.0 - g as f32) * v) as u8,
+        (b as f32 + (255.0 - b as f32) * v) as u8,
+    )
 }

...
Show all
diff --git a/src/get_colors.rs b/src/get_colors.rs
index 6243a3b..481b4ed 100644
--- a/src/get_colors.rs
+++ b/src/get_colors.rs
@@ -24,11 +24,12 @@ fn remove_duplicates(colors: Vec<(u8, u8, u8)>) -> Vec<(u8, u8, u8)> {
     let set: HashSet<_> = colors.into_iter().collect();
     set.into_iter().collect()
 }
-
-fn to_gray(r: u8, g: u8, b: u8, v: u8) -> (u8, u8, u8) {
-    let mut gray = (0.3 * r as f32 + 0.59 * g as f32 + 0.11 * b as f32).round() as u8;
-    gray = gray.saturating_add(v);
-    (gray, gray, gray)
+fn to_gray(r: u8, g: u8, b: u8, v: f32) -> (u8, u8, u8) {
+    (
+        (r as f32 + (255.0 - r as f32) * v) as u8,
+        (g as f32 + (255.0 - g as f32) * v) as u8,
+        (b as f32 + (255.0 - b as f32) * v) as u8,
+    )
 }

fn generate_variation(color: (u8, u8, u8), offset: i8) -> (u8, u8, u8) { @@ -148,9 +149,15 @@ pub fn get_colors(

 let (mut r, mut g, mut b) = collect&#95;rgb&#91;20&#93;;
 (r, g, b) = adjust&#95;rgb(r, g, b, 40, 60);

- (r, g, b) = to_gray(r, g, b, 15); + println!("before: #{:02x}{:02x}{:02x}", r, g, b); + (r, g, b) = to_gray(r, g, b, 0.4); + println!("after : #{:02x}{:02x}{:02x}", r, g, b); done[7] = (r, g, b); done[15] = (r, g, b); - + // + // for color in &done { + // println!("#{:02x}{:02x}{:02x}", color.0, color.1, color.2,) + // } + // (done, *alpha) }

// Created by Pi66

// Copyright ©Pi66 2026