;;; bad-grad.el --- bad grad -*- lexical-binding: t -*- ;;; Commentary: ;;; Code: (require 'cl-lib) (cl-pushnew ".." load-path :test #'string=) (require 'luki-lisp) (-> 'bad-draw) (-> 'color) ;; try us: ;; 1. (eval-buffer) ;; 2. (progn (pop-buf "*bad-draw*" (bad-grad-sea (box :w 97 :h 29))) (setq mode-line-format nil)) (cl-defmethod bad-grad-colors ((e elem) (beg string) (end string)) (cl-loop initially (goto-char (pos-bol)) with a = (bad-color-decimal beg) with o = (bad-color-decimal end) with w = (@ e w) with h = (@ e h) with n = (* w h) for (r g b) in (color-gradient a o n) for bgc = (color-rgb-to-hex r g b) for fgc = (color-complement bgc) for prp = (list :background bgc :foreground fgc) collect prp into props finally (cl-loop for c from (+ 9472 (point) (- (line-number-at-pos (point-max)))) for m from 1 for pnt = (point) for p in props do (@i c) (put-text-property pnt (1+ pnt) 'face p) (& (z (m m w)) (@i 10))))) (defun bad-grad-chars () (cl-loop with e = (ascii :w 16 :h 4) with buf = (get-buffer-create "*bad-draw*") with beg = nil with end = nil do (with-current-buffer buf (setf beg (point)) (bad-grad-colors e "#000000" "#000087") (bad-grad-colors e "#000087" "#008787") (bad-grad-colors e "#008787" "#00ff87") (bad-grad-colors e "#00ff87" "#00ffff") (setf end (point)) (bad-read-string e (buf-str beg end t))) return (pop-buf buf))) (<- 'bad-grad)