RKYRGWWIIERC4W4TS4NVYTBPPL53U66JKZPHNEGYATGAPYXQ3JZQC
YEMYZP24MMAEYZJTLAYTOOBVILR7467ZX2K5T2PDGXW75IQE2NJQC
RXCY7LD6ZRIOIKZEYKLMCYPMQPXF4DOEEFBDLVR2B22BXLZJFFBQC
A3TVGLVHSVLMEHLHB3TPBSD3QGNVGX3DIK6BEBDTTHWBNW4ALMRAC
C2AK6BRZ7C4GYAJBHJRSV67536KRP6QC2IJN5OENKFFKPXCNTARAC
5PUTZ65VCZROT54SY5B4SZM47G5C4M5MFTS6NVBLEOXBNU4UXU2QC
DMVROIKLOEHSWE4XDJ66XZH3RSHJ3KL3ORDIYI5D36N6BZ2QJK4QC
4H5JKC7STGGRGHLUDK3TYNN2DJO5RXEH4WZPYDFRXYM4HAVDOVYQC
PRE42LRLBF7CR3L7ERIPSQJJTDAQQ4UJ2H5KOHSVX7TL4STJXYNAC
LJFHLCOLK632EAP4SOFHWIWXW4N2QPNESQT7ZGO3BGU5MDUVYN6QC
(red+2 . (#xEC #xB3 #xB3))
(red+1 . (#xDC #xA3 #xA3))
(red . (#xCC #x93 #x93))
(red-1 . (#xBC #x83 #x83))
(fg-2 . (#x65 #x65 #x55))
(fg-1 . (#xA6 #xA6 #x89))
(fg . (#xDC #xDC #xCC))
(fg+1 . (#xF5 #xF5 #xD6))
(fg+2 . (#xFF #xFF #xEF))
(red-6 . (#x6C #x33 #x33))
(red-5 . (#x7C #x43 #x43))
(red-4 . (#x8C #x53 #x53))
(red-3 . (#x9C #x63 #x63))
(loop for (key . _) in pattern
collect (assoc key target)))
(defparameter *alt-color-alist*
(match-alist-order
*color-alist*
(append (mapcar (lambda (it)
(cons it (theme-color it)))
'(black
bg-2 bg-1 bg-05 bg bg+05 bg+1 bg+2 bg+3
fg-2 fg-1 fg fg+1 fg+2))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.45
(theme-color it))))
'(red-6))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.5
(theme-color it))))
'(red-5 green-5 blue-5))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.55
(theme-color it))))
'(red-4 green-4 blue-4))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.6
(theme-color it))))
'(red-3 green-3 blue-3))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.65
(theme-color it))))
'(red-2 yellow-2 green-2 blue-2))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.7
(theme-color it))))
'(blue-1 green-1 yellow-1 red-1))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.75
(theme-color it))))
'(red orange yellow green cyan blue magenta))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.8
(theme-color it))))
'(red+1 green+1 blue+1))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.85
(theme-color it))))
'(red+2 green+2 blue+2))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.9
(theme-color it))))
'(green+3 blue+3))
(mapcar (lambda (it)
(cons it
(apply #'set-l-oklab
0.95
(theme-color it))))
'(green+4))
)))
(multiple-value-bind (l a b) (multiple-value-call #'xyz-to-oklab
(dufy:qrgb-to-xyz r g b))
(prog1 (format s
"oklab(~,3f% ~,3f ~,3f)"
(* 100.0 l) a b)
(unless (null s)
(format s "~%")))))))
(multiple-value-list (multiple-value-call #'xyz-to-oklab
(dufy:qrgb-to-xyz r g b))))))
(defun oklab-color (name &optional (s t))
(prog1 (apply #'format s
"oklab(~,3f% ~,3f ~,3f)"
(oklab-value name))
(unless (null s)
(format s "~%"
))))
(cond ((net.didierverna.clon:getopt :context context
:long-name "help")
(net.didierverna.clon:help))
(list-names
(list-names t))
((and html css)
(format *error-output* "Can't use HTML and CSS options together~%")
(net.didierverna.clon:help))
(css
(let ((values (cdr (assoc css *color-alist*))))
(format t "rgb(~{~d~^, ~})~%" values)))
(html
(html-color html t))
(hsv
(hsv-color hsv t))
(hsl
(hsl-color hsl t))
(oklab
(oklab-color oklab t))
(cielab
(cielab-color cielab t))
#+(or)
(float
(float-color float t))
((null remainder)
(summary))
((or foreground background)
(zenburn-text foreground background "~{~a~^ ~}" remainder))
(t
(net.didierverna.clon:help)))))
(let ((*color-alist* (if alt
*alt-color-alist*
*color-alist*)))
(cond ((net.didierverna.clon:getopt :context context
:long-name "help")
(net.didierverna.clon:help))
(list-names
(list-names t))
((and html css)
(format *error-output* "Can't use HTML and CSS options together~%")
(net.didierverna.clon:help))
(css
(let ((values (cdr (assoc css *color-alist*))))
(format t "rgb(~{~d~^, ~})~%" values)))
(html
(html-color html t))
(hsv
(hsv-color hsv t))
(hsl
(hsl-color hsl t))
(oklab
(oklab-color oklab t))
(cielab
(cielab-color cielab t))
#+(or)
(float
(float-color float t))
((null remainder)
(summary))
((or foreground background)
(zenburn-text foreground background "~{~a~^ ~}" remainder))
(t
(net.didierverna.clon:help))))))