emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Adding some convenience functions to color.el


From: Yilkal Argaw
Subject: Adding some convenience functions to color.el
Date: Fri, 9 Jun 2023 02:57:41 +0300

Hi
Today I was messing around with some theme that  made use of color.el and I noticed some functions that might be of use could be added to color.el to help with the conditionally assigning setting some colors based on lightness or darkness of some other color. I wondered if it might be useful to other users and if it might be worth adding it to color.el. I

diff --git a/lisp/color.el b/lisp/color.el
index f68cf5e6b17..3740c3d5a7c 100644
--- a/lisp/color.el
+++ b/lisp/color.el
@@ -119,6 +119,18 @@ inclusive."
        (color-hue-to-rgb m1 m2 H)
        (color-hue-to-rgb m1 m2 (mod (- H (/ 3.0)) 1))))))
 
+(defun color-name-to-hsl (color)
+ "Convert COLOR to HSL."
+  (apply #'color-rgb-to-hsl (color-name-to-rgb color)))
+
+(defun color-name-light-p (color)
+   "Return non-nil if COLOR is on the lighter side."
+  (when color (>= (caddr (color-name-to-hsl color) 0.5))))
+
+(defun color-name-dark-p (color)
+  "Return non-nil if COLOR is on the darker side."
+  (when color (not (color-name-light-p color))))
+
 (defun color-complement-hex (color)
   "Return the color that is the complement of COLOR, in hexadecimal format."
   (apply 'color-rgb-to-hex (color-complement color)))


With Regards
Yilkal Argaw

reply via email to

[Prev in Thread] Current Thread [Next in Thread]