Add color check support with shr-color
authorJulien Danjou <julien@danjou.info>
Mon, 22 Nov 2010 15:32:36 +0000 (16:32 +0100)
committerJulien Danjou <julien@danjou.info>
Mon, 22 Nov 2010 15:32:36 +0000 (16:32 +0100)
Signed-off-by: Julien Danjou <julien@danjou.info>
lisp/ChangeLog
lisp/shr.el

index ffce470..fee208a 100644 (file)
@@ -1,6 +1,9 @@
 2010-11-22  Julien Danjou  <julien@danjou.info>
 
        * shr.el (shr-tag-font): Add.
+       (shr-tag-color-check): New function to get better colors.
+       (shr-tag-insert-color-overlay): Factorize code between tag-font and
+       tag-span.
 
        * shr-color.el: New file.
 
index 0b3e1a9..1084505 100644 (file)
@@ -517,21 +517,28 @@ START, and END."
 (defun shr-tag-s (cont)
   (shr-fontize-cont cont 'strike-through))
 
+(autoload 'shr-color-visible "shr-color")
+(defun shr-tag-color-check (fg &optional bg)
+  "Check that FG is visible on BG."
+  (shr-color-visible (or bg (frame-parameter nil 'background-color)) fg (not bg)))
+
+(defun shr-tag-insert-color-overlay (color start end)
+  (when color
+    (let ((overlay (make-overlay start end)))
+      (overlay-put overlay 'face (cons 'foreground-color
+                                       (cadr (shr-tag-color-check color)))))))
+
 (defun shr-tag-span (cont)
   (let ((start (point))
        (color (cdr (assq 'color (shr-parse-style (cdr (assq :style cont)))))))
     (shr-generic cont)
-    (when color
-      (let ((overlay (make-overlay start (point))))
-       (overlay-put overlay 'face (cons 'foreground-color color))))))
+    (shr-tag-insert-color-overlay color start (point))))
 
 (defun shr-tag-font (cont)
   (let ((start (point))
         (color (cdr (assq :color cont))))
     (shr-generic cont)
-    (when color
-      (let ((overlay (make-overlay start (point))))
-       (overlay-put overlay 'face (cons 'foreground-color color))))))
+    (shr-tag-insert-color-overlay color start (point))))
 
 (defun shr-parse-style (style)
   (when style