无意中看到 telephone-line 有一种渐变颜色的效果,看起来很棒,但telephone-line的源码有些难懂,所以自己动手实现类似的效果
渐变颜色
渐变颜色的实现可使用color-gradient
(color-gradient '(0 0 0) (color-name-to-rgb "red") 10)
实现原理是对红(R)、绿(G)、蓝(B)三个颜色通道分别取 n + 2 个过渡值,n 为中间颜色过渡状态,所以对于red
、#000
、#a0a0a0
等颜色需要转化为RGB色彩模式
生成XPM图片
XPM图片格式参考 https://en.wikipedia.org/wiki/X_PixMap(XPM3)
大概是这样的
/* XPM */ static char * XFACE[] = { /* <Values> */ /* <width/columns> <height/rows> <colors> <chars per pixel …