summaryrefslogtreecommitdiffstats
path: root/emacs.d/lisp/rudel/rudel-icons.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs.d/lisp/rudel/rudel-icons.el')
-rw-r--r--emacs.d/lisp/rudel/rudel-icons.el90
1 files changed, 90 insertions, 0 deletions
diff --git a/emacs.d/lisp/rudel/rudel-icons.el b/emacs.d/lisp/rudel/rudel-icons.el
new file mode 100644
index 0000000..9bb35b5
--- /dev/null
+++ b/emacs.d/lisp/rudel/rudel-icons.el
@@ -0,0 +1,90 @@
+;;; rudel-icons.el --- Icons used by Rudel
+;;
+;; Copyright (C) 2008, 2009 Jan Moringen
+;;
+;; Author: Jan Moringen <scymtym@users.sourceforge.net>
+;; Keywords: rudel, icons
+;; X-RCS: $Id:$
+;;
+;; This file is part of Rudel.
+;;
+;; Rudel is free software: you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; Rudel is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with Rudel. If not, see <http://www.gnu.org/licenses>.
+
+
+;;; Commentary:
+;;
+;; This file loads all icons used in Rudel.
+
+
+;;; History:
+;;
+;; 0.1 - Initial revision.
+
+
+;;; Code:
+;;
+
+(require 'image)
+
+
+;;; Image constants
+;;
+
+(defconst rudel-icons-image-formats '(svg png)
+ "Image formats to try (in that order) when loading Rudel icons.")
+
+(defconst rudel-icons-directory
+ (file-name-as-directory
+ (concat (file-name-directory
+ (locate-library "rudel-icons.el"))
+ "icons"))
+ "Directory that holds Rudel icon files.")
+
+
+;;; Helper macro
+;;
+
+(defmacro rudel-defimage (name &optional docstring)
+ "Load image from Rudel icon directory and define image named NAME.
+Optional argument DOCSTRING is the documentation string to
+associate with the image."
+ (declare (doc-string 2))
+ (let ((icon (intern (format "rudel-icon-%s" name)))
+ (specs (mapcar
+ (lambda (type)
+ `(:type ,type
+ :ascent center
+ :mask heuristic
+ :file ,(concat rudel-icons-directory
+ name "." (symbol-name type))))
+ rudel-icons-image-formats)))
+ `(defimage ,icon
+ (,@specs)
+ ,(or docstring
+ (format "%s icon." (capitalize name)))))
+ )
+
+
+;;; Image definitions
+;;
+
+(rudel-defimage "person")
+(rudel-defimage "document")
+(rudel-defimage "connected")
+(rudel-defimage "disconnected")
+(rudel-defimage "plaintext")
+(rudel-defimage "encrypted")
+
+(provide 'rudel-icons)
+;;; rudel-icons.el ends here