]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix color-lighten-hsl logic
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 22 Mar 2022 14:28:02 +0000 (15:28 +0100)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 22 Mar 2022 14:28:02 +0000 (15:28 +0100)
* lisp/color.el (color-lighten-hsl): Lighten by percentage,
instead of just adding the specified number to the luminance
element (bug#54514).

lisp/color.el
test/lisp/color-tests.el

index 0fe663d97a790f96f2419597bfd4171825544bb0..fe629f4f988d12b2ea83ea4c0786a533791c3375 100644 (file)
@@ -403,7 +403,7 @@ See `color-desaturate-hsl'."
 Given a color defined in terms of hue, saturation, and luminance
 \(arguments H, S, and L), return a color that is PERCENT lighter.
 Returns a list (HUE SATURATION LUMINANCE)."
-  (list H S (color-clamp (+ L (/ percent 100.0)))))
+  (list H S (color-clamp (+ L (* L (/ percent 100.0))))))
 
 (defun color-lighten-name (name percent)
   "Make a color with a specified NAME lighter by PERCENT.
index 49b632c8410fde890b57999f2850dcb03d0f5f7c..e4e1eda26d396ce488eb2408c9e821e20cb63d59 100644 (file)
 
 (ert-deftest color-tests-lighten-hsl ()
   (should (equal (color-lighten-hsl 360 0.5 0.5 0) '(360 0.5 0.5)))
-  (should (equal (color-lighten-hsl 360 0.5 0.5 -10) '(360 0.5 0.4)))
+  (should (equal (color-lighten-hsl 360 0.5 0.5 -10) '(360 0.5 0.45)))
   (should (equal (color-lighten-hsl 360 0.5 0.5 -500) '(360 0.5 0.0)))
   (should
    (color-tests--approx-equal
-    (color-lighten-hsl 120 0.5 0.8 5) '(120 0.5 0.85)))
+    (color-lighten-hsl 120 0.5 0.8 5) '(120 0.5 0.84)))
   (should
    (equal (color-lighten-hsl 120 0.5 0.8 500) '(120 0.5 1.0))))
 
 (ert-deftest color-tests-lighten-name ()
-  (should (equal (color-lighten-name "black" 100) "#ffffffffffff"))
+  (should (equal (color-lighten-name "black" 100) "#000000000000"))
   (should (equal (color-lighten-name "white" 100) "#ffffffffffff"))
   (should (equal (color-lighten-name "red" 0) "#ffff00000000"))
-  (should (equal (color-lighten-name "red" 10) "#ffff33323332")))
+  (should (equal (color-lighten-name "red" 10) "#ffff19991999")))
 
 (ert-deftest color-tests-darken-hsl ()
   (should (equal (color-darken-hsl 360 0.5 0.5 0) '(360 0.5 0.5)))
-  (should (equal (color-darken-hsl 360 0.5 0.5 -10) '(360 0.5 0.6)))
+  (should (equal (color-darken-hsl 360 0.5 0.5 -10) '(360 0.5 0.55)))
   (should (equal (color-darken-hsl 360 0.5 0.5 -500) '(360 0.5 1.0)))
-  (should (equal (color-darken-hsl 120 0.5 0.8 5) '(120 0.5 0.75)))
+  (should (equal (color-darken-hsl 120 0.5 0.8 5) '(120 0.5 0.76)))
   (should (equal (color-darken-hsl 120 0.5 0.8 500) '(120 0.5 0.0))))
 
 (ert-deftest color-tests-darken-name ()
   (should (equal (color-darken-name "black" 100) "#000000000000"))
   (should (equal (color-darken-name "white" 100) "#000000000000"))
   (should (equal (color-darken-name "red" 0) "#ffff00000000"))
-  (should (equal (color-darken-name "red" 10) "#cccc00000000")))
+  (should (equal (color-darken-name "red" 10) "#e66500000000")))
 
 (provide 'color-tests)
 ;;; color-tests.el ends here