]> code.delx.au - gnu-emacs-elpa/commitdiff
Add gamma-correction to alpha-blending
authorOleh Krehel <ohwoeowho@gmail.com>
Wed, 29 Apr 2015 12:32:36 +0000 (14:32 +0200)
committerOleh Krehel <ohwoeowho@gmail.com>
Wed, 29 Apr 2015 12:32:36 +0000 (14:32 +0200)
* colir.el (colir-compose-method): Make 'colir-compose-alpha default.
(colir-compose-alpha): Add gamma-correction.

colir.el

index c9a0ada1adc75514308d508776df9c92cd443f27..f5ce0aef8ac31248a2979b66a85960134b9a29a1 100644 (file)
--- a/colir.el
+++ b/colir.el
@@ -32,7 +32,7 @@
 
 (require 'color)
 
-(defcustom colir-compose-method 'colir-compose-overlay
+(defcustom colir-compose-method 'colir-compose-alpha
   "Select a method to compose two color channels."
   :type '(choice
           (const colir-compose-alpha)
       (* 2 a b)
     (- 1 (* 2 (- 1 a) (- 1 b)))))
 
-(defun colir-compose-alpha (a b &optional alpha)
+(defun colir-compose-alpha (a b &optional alpha gamma)
   "Compose A and B channels."
   (setq alpha (or alpha 0.5))
-  (+ (* a alpha) (* b (- 1 alpha))))
+  (setq gamma (or gamma 2.2))
+  (+ (* (expt a gamma) alpha) (* (expt b gamma) (- 1 alpha))))
 
 (defun colir-blend (c1 c2)
   "Blend the two colors C1 and C2 using `colir-compose-method'.