Mercurial > rlm
comparison src/rlm/visualize.clj @ 0:78a630e650d2
initial import
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Tue, 18 Oct 2011 00:57:08 -0700 |
parents | |
children | 12d1367cf1aa |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:78a630e650d2 |
---|---|
1 (ns rlm.visualize | |
2 "this namespace has only one purpose -- to enable | |
3 visual display of as many data structures as possible, | |
4 with a focus on image processing (for example, raw integers | |
5 will be shown as the color which they would encode in a RGBA | |
6 BufferedImage. I want to get as many types as I can in here." | |
7 {:author "Robert McIntyre"} | |
8 | |
9 (:import java.awt.image.BufferedImage | |
10 [ij ImagePlus IJ])) | |
11 | |
12 (defmulti visual (fn [& args] (class (last args)))) | |
13 | |
14 (import '[org.scilab.forge.jlatexmath TeXConstants TeXFormula TeXIcon]) | |
15 (import java.awt.Insets) | |
16 (import javax.swing.JLabel) | |
17 (import java.awt.Color) | |
18 | |
19 | |
20 (defmethod visual ImagePlus | |
21 [image] | |
22 (.show image) | |
23 image) | |
24 | |
25 (defmethod visual (class 4) | |
26 [color] | |
27 (let [image (BufferedImage. 200 200 BufferedImage/TYPE_INT_RGB)] | |
28 (doall (for [y (range 200) x (range 200)] (.setRGB image x y color))) | |
29 (visual (ImagePlus. "color display" image)))) | |
30 | |
31 (defmethod visual BufferedImage | |
32 [image] | |
33 (visual (ImagePlus. "visual" image))) | |
34 | |
35 | |
36 (defmethod visual TeXFormula | |
37 [formula] | |
38 (let [icon | |
39 (doto (.createTeXIcon formula TeXConstants/STYLE_DISPLAY 30) | |
40 (.setInsets (Insets. 5 5 5 5))) | |
41 image (BufferedImage. (.getIconWidth icon) (.getIconHeight icon) | |
42 BufferedImage/TYPE_INT_ARGB) | |
43 g (.createGraphics image) | |
44 jl (JLabel.)] | |
45 (.setForeground jl (Color. 0 0 0)) | |
46 (.setColor g Color/white) | |
47 (.fillRect g 0 0 (.getIconWidth icon) (.getIconHeight icon)) | |
48 (.paintIcon icon jl g 0 0) | |
49 (visual image))) | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 |