|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
;; Create and preview xpms and favicons using emacs.
;; Copyleft 2005-2009, Eduardo Ochs <eduardoochs@gmail.com>.
;; First version: 2005nov05.
;; Current version: 2009aug03.
;; Trivial changes: 2012may04.
;; Source: <http://angg.twu.net/elisp/myxpm.el>
;; Htmlized: <http://angg.twu.net/elisp/myxpm.el.html>
;; How to use this: load with
;; (load-file "myxpm.el")
;; then execute the `find-myxpmscaled+' sexps by hand.
;; «.find-myxpmscaled+» (to "find-myxpmscaled+")
;; «.eev-icon» (to "eev-icon")
;; «.blogme-icon» (to "blogme-icon")
;; «.dednat4-icon» (to "dednat4-icon")
;; «.rrj» (to "rrj")
;; «.littlelangs» (to "littlelangs")
;; «.transparent-fav» (to "transparent-fav")
;; «.forthsun» (to "forthsun")
;; «.ninecolors» (to "ninecolors")
;; «.gab» (to "gab")
;; (find-angg ".emacs" "find-xpm")
;; (find-fline "/usr/X11R6/include/X11/xpm.h")
;; http://www.w3.org/People/danield/xpm_story.html
;; (find-w3m "$S/http/www.w3.org/People/danield/xpm_story.html" "multi syntax:")
(defun myxpm-quote (str) (format "\"%s\"" str))
(defun myxpm-strings (strs) (mapconcat 'myxpm-quote strs ",\n"))
(defun myxpm-block (ttl strs) (format "/* %s */\n%s" ttl (myxpm-strings strs)))
(defun myxpm-3blocks (varname numbers colors grid)
(if (listp numbers) (setq numbers (apply 'format "%d %d %d %d" numbers)))
(format "/* XPM */\nstatic char *%s[] = {\n%s,\n%s,\n%s\n};\n"
(or varname "noname")
(myxpm-block "width height ncolors chars_per_pixel" (list numbers))
(myxpm-block "colors" colors)
(myxpm-block "pixels" grid)))
(defun myxpm-ccode (varname colors grid)
(myxpm-3blocks
varname (list (length (car grid)) (length grid) (length colors) 1)
colors grid))
(defun myxpm-xtimes (xscale str)
(mapconcat (lambda (c) (concat (make-list xscale c))) str ""))
(defun myxpm-ytimes (yscale strs)
(apply 'append (mapcar (lambda (str) (make-list yscale str)) strs)))
(defun myxpm-xytimes (xscale yscale grid)
(myxpm-ytimes yscale (mapcar (lambda (str) (myxpm-xtimes xscale str)) grid)))
(defun find-myxpm (colors grid &optional convert-to)
(ee-write-string (myxpm-ccode nil colors grid) "$EEVTMPDIR/ee.xpm")
(find-fline "$EEVTMPDIR/ee.xpm")
(if convert-to (find-sh0 (format "convert $EEVTMPDIR/ee.xpm %s" convert-to)))
(list (length (car grid)) (length grid)))
(defun find-myxpmscaled (xscale yscale colors grid &optional convert-to)
(find-myxpm colors (myxpm-xytimes xscale yscale grid) convert-to)
(list (length (car grid)) (length grid)))
;; «find-myxpmscaled+» (to ".find-myxpmscaled+")
(defun find-myxpmscaled+ (colors grid &optional convert-to scale)
(cond ((numberp scale) (find-myxpm colors (myxpm-xytimes scale scale grid)))
(scale (find-myxpm colors grid convert-to)) ; try to save
(t (find-myxpm colors grid))) ; no saving
(list (length (car grid))
(length grid)
(cond ((numberp scale) `(scaled ,scale))
(scale `(save into ,convert-to)))))
;; Tests:
;; (myxpm-xtimes 3 "abcde")
;; (myxpm-ytimes 3 '("a" "bc"))
;; (myxpm-xytimes 2 3 '("a" "bc" "def"))
;; (setq myxpm-colors '(". c #ffbb00" "o c red" "- c lime green"))
;; (find-estring (myxpm-ccode nil myxpm-colors '("...." "..oo" "--oo")))
;; (find-myxpm myxpm-colors '("...." "..oo" "--oo"))
;; (find-myxpmscaled 8 8 myxpm-colors '("...." "..oo" "--oo"))
;; (find-ecolors)
;; (find-sh "wish <(echo 'puts [tk_chooseColor]; exit')")
;; «eev-icon» (to ".eev-icon")
;; (find-anggfile "eev-current/eev-icon.png")
;;
' (find-myxpmscaled+
'(" c none"
". c olive drab"
"O c #eeffe5")
'(" "
"............... "
"............... "
"............... "
"............... "
"............... "
".OO...OO..O...O "
"O..O.O..O.O...O "
"OOOO.OOOO..O.O. "
"O....O.....O.O. "
".OO...OO....O.. "
"............... "
"............... "
"............... "
"............... "
"............... ")
;; "~/eev-current/eev-icon.png" t
"/tmp/eev_16.png" 2
)
;; (find-fline "/tmp/")
;; (eev "convert $EEVTMPDIR/ee.xpm /tmp/favicon.ico && Scp /tmp/favicon.ico angg.twu.net:slow_html/ && Scp /tmp/favicon.ico angg.twu.net:public_html/")
;; (eev "display $EEVTMPDIR/ee.xpm")
;; (eev "display /tmp/favicon.ico")
;; «blogme-icon» (to ".blogme-icon")
;; (find-anggfile "blogme/blogme-icon.png")
' (find-myxpmscaled+
'(" c none"
". c #ffbb00"
"O c #ff6600")
'(" "
"............... "
"............... "
"............... "
"............... "
"...OOO...OOO... "
"...O.......O... "
"...O.......O... "
"...O.......O... "
"...O.......O... "
"...O.......O... "
"...OOO...OOO... "
"............... "
"............... "
"............... "
"............... ")
"~/blogme/blogme-icon.png" 4)
;; (find-sh0 "cp -v ~/blogme/blogme-icon.png ~/blogme3/.favicon.png")
' (find-myxpmscaled+
'(". c none"
" c black"
"o c bisque"
"4 c red")
'("................"
" "
" "
" "
" "
" o o "
" o o 4 "
" ooooo 4 4 4 "
" o o 444 "
" ooooo 4 4 4 "
" o o 4 "
" o o "
" "
" "
" "
" ")
"~/eev-current/eev-glyph-icon.png" 4)
;; «dednat4-icon» (to ".dednat4-icon")
;; (find-anggfile "dednat4/dednat4-icon.png")
;;
' (find-myxpmscaled+
'(". c none"
" c antiquewhite1"
"a c sienna"
"b c brown"
"c c brown"
"d c brown"
"o c blue4")
'(" b o aa "
" bb ooooo a "
" b b o aaa "
" bbb ooooo aaa "
" o "
" ooo ooo "
" o o "
" o o "
" o o "
" ooo ooo "
" o o "
" o "
" cc ooooo d "
" c o dd "
" c ooooo d d "
" cc o ddd ")
"~/dednat4/dednat4-icon.png" 4)
;; «rrj» (to ".rrj")
;; (find-anggfile "IMAGES/rrj.png")
;;
' (find-myxpmscaled+
'(". c none"
" c white"
"o c black")
'(" "
" "
" "
" o "
" "
" o oo o oo o "
" oo oo o "
" o o o "
" o o o "
" o o o "
" o o o o "
" oo "
" "
" "
" "
" ")
"~/IMAGES/rrj.png" 4)
;; (find-ecolors)
' (find-myxpmscaled+
'(" c mediumblue"
"o c lightgrey"
"b c blue"
"a c navyblue"
"c c blue3")
'(" "
" "
" "
" "
" "
" bbbb "
" oo bbbb oo "
" oo bbbb oo "
" bbbb "
" bbbb "
" oo bbbb oo "
" oo bbbb oo "
" o "
" o "
" "
" ")
"~/IMAGES/forth.png" 1)
;; «littlelangs» (to ".littlelangs")
;; (find-angg "IMAGES/littlelangs.png")
;; (find-ecolors)
' (find-myxpmscaled+
'(" c firebrick"
"o c orange")
'(" "
" "
" "
" "
" oo oo "
" oo oo "
" oo oo "
" oo oo "
" oo oo "
" oo oo "
" ooooo ooooo "
" ooooo ooooo "
" "
" "
" "
" ")
"~/IMAGES/littlelangs.png" 1)
;; «transparent-fav» (to ".transparent-fav")
' (find-myxpmscaled+
'(" c none")
(make-list 16 " ")
"~/IMAGES/transparent-fav.png" 2)
;; «forthsun» (to ".forthsun")
;; (find-anggfile "IMAGES/forthsun.png")
' (find-myxpmscaled+
'(" c white"
"x c black"
"y c gold "
;;"o c lightgrey"
"o c black"
"b c blue"
"a c navyblue"
"c c blue3")
'(" xxxxyyyy"
" xyyyy"
" xxyyyy"
" xx xyyy"
" x xxx"
" x x x"
" x x"
" x x"
" oo oo "
" oo oo "
" "
" oo oo "
" oo oo "
" o "
" o "
" ")
"~/IMAGES/forthsun.png" t)
' (find-myxpmscaled+
'(" c white"
"x c black"
"y c gold "
;;"o c lightgrey"
"o c black"
"b c blue"
"a c navyblue"
"c c blue3")
'(" "
" bbbb "
" bbb "
" bbb "
" bbb "
" bbb "
" bbb "
" bbbb "
" oo oo "
" oo oo "
" "
" oo oo "
" oo oo "
" o "
" o "
" ")
"~/IMAGES/forthluawhite.png" t)
' (find-myxpmscaled+
'(" c navyblue"
"x c black"
"y c gold "
;;"o c lightgrey"
"o c yellow"
"b c white"
"a c navyblue"
"c c blue3")
'(" "
" bbbb "
" bbb "
" bbb "
" bbb "
" bbb "
" bbb "
" bbbb "
" oo oo "
" oo oo "
" "
" oo oo "
" oo oo "
" o "
" o "
" ")
"~/IMAGES/forthlua.png" t)
;; «ninecolors» (to ".ninecolors")
' (find-myxpmscaled+
'(" c #FFFFFF"
". c #00FE44"
"+ c #B7FE00"
"@ c #FFC400"
"# c #00ACFE"
"% c #A1706B"
"$ c #FC030B"
"& c #042CFE"
"* c #8703FE"
"= c #FF00D6")
'(".....+++++@@@@@ "
".....+++++@@@@@ "
".....+++++@@@@@ "
".....+++++@@@@@ "
".....+++++@@@@@ "
"#####%%%%%$$$$$ "
"#####%%%%%$$$$$ "
"#####%%%%%$$$$$ "
"#####%%%%%$$$$$ "
"#####%%%%%$$$$$ "
"&&&&&*****===== "
"&&&&&*****===== "
"&&&&&*****===== "
"&&&&&*****===== "
"&&&&&*****===== "
" ")
"/tmp/9colors.png" 4)
;; «gab» (to ".gab")
' (find-myxpmscaled+
'(" c #FFFFFF"
;; ". c purple"
;; ". c darkmagenta"
". c saddlebrown"
;; "a c yellow"
;; "a c yellow"
"a c #E4580B"
"b c #3B3F1C"
"c c #6C773D"
;; ". c #00FE44"
"r c #C61A1A"
"X c #C61A1A"
"= c #FF00D6")
'("aaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaa"
"aaaaaXXaaXXaaaaa"
"aaaaaXXaaXXaaaaa"
"aaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaa"
"aaaaaaaaaaaaaaaa"
"bbbbbbbbbbbbbbbb"
"bbbbbbbbbbbbbbbb"
"bbbbbbbbbbbbbbbb"
"cccccccccccccccc"
"cccccccccccccccc"
"cccccccccccccccc"
"cccccccccccccccc"
"cccccccccccccccc"
"cccccccccccccccc")
"/tmp/gab.png" t)
;;
;; Local Variables:
;; coding: raw-text-unix
;; ee-delimiter-hash: "\n#*\n"
;; ee-delimiter-percent: "\n%*\n"
;; ee-anchor-format: "«%s»"
;; ee-comment-prefix: ";;"
;; End: