diff src/laser/rasterize.clj @ 5:8cc418e04b87

made preserve-meta
author Robert McIntyre <rlm@mit.edu>
date Fri, 20 Aug 2010 01:47:28 -0400
parents 6533b4ef83ad
children 4ae2497acf7d
line wrap: on
line diff
     1.1 --- a/src/laser/rasterize.clj	Fri Aug 20 01:30:12 2010 -0400
     1.2 +++ b/src/laser/rasterize.clj	Fri Aug 20 01:47:28 2010 -0400
     1.3 @@ -38,30 +38,12 @@
     1.4  (def cut_feed 20)
     1.5  (def corner_radius 0)
     1.6  
     1.7 -(defmulti  display "Creates a JFrame and displays a buffered image"  class)
     1.8  
     1.9 -(defn- makePanel [image] (proxy [Panel] [] (paint [g]  (.drawImage g image 0 0 nil))))
    1.10 +(defn preserve-meta [f]
    1.11 +  (fn [& x] (with-meta
    1.12 +	      (apply f x)
    1.13 +	      (meta (last x)))))
    1.14  
    1.15 -(defmethod display 
    1.16 -  BufferedImage  [image] 
    1.17 -  (let [panel (makePanel image)
    1.18 -	frame (JFrame. "Oh Yeah!")]
    1.19 -    (.add frame panel) 
    1.20 -    (.pack frame) 
    1.21 -    (.setVisible frame true ) 
    1.22 -    (.setSize frame(.getWidth image) (.getHeight image))))
    1.23 - 
    1.24 -(defmethod display
    1.25 -  ImagePlus [image]
    1.26 -  (display (.getBufferedImage image)))
    1.27 -
    1.28 -(defmethod display
    1.29 -  clojure.lang.PersistentHashMap [frame-hash]
    1.30 -  (display (frame-hash->bufferedImage frame-hash)))
    1.31 -
    1.32 -(defmethod display
    1.33 -    clojure.lang.PersistentArrayMap [frame-hash]
    1.34 -    (display (frame-hash->bufferedImage frame-hash)))
    1.35  
    1.36  
    1.37  (defn frame-hash
    1.38 @@ -85,6 +67,11 @@
    1.39        {:width  (.getWidth image+) :height (.getHeight image+)})))
    1.40  
    1.41  
    1.42 +
    1.43 +
    1.44 +
    1.45 +
    1.46 +
    1.47  (def white {:r 255, :g 255, :b 255})
    1.48  (def black {:r 0,   :g 0,   :b 0})
    1.49  
    1.50 @@ -128,18 +115,11 @@
    1.51  
    1.52  (defn filter-keys [fun m]
    1.53    (select-keys m (filter fun (keys m))))
    1.54 +(def filter-keys (preserve-meta filter-keys))
    1.55  
    1.56  (defn filter-vals [fun m]
    1.57 -  (into {} (filter (comp fun val) m)))
    1.58 -
    1.59 -  
    1.60 -
    1.61 -
    1.62 -
    1.63 -
    1.64 -
    1.65 -
    1.66 -
    1.67 +    (into {} (filter (comp fun val) m)))
    1.68 +(def filter-vals (preserve-meta filter-vals))
    1.69  
    1.70  (defn frame-hash->bufferedImage
    1.71    [frame-hash]
    1.72 @@ -155,6 +135,34 @@
    1.73  		                   (:b rgb))]
    1.74  	    (.setRGB image (first coord) (last coord) packed-RGB))))
    1.75  	image))
    1.76 +  
    1.77 +(defmulti  display "Creates a JFrame and displays a buffered image"  class)
    1.78  
    1.79 +(defn- makePanel [image] (proxy [Panel] [] (paint [g]  (.drawImage g image 0 0 nil))))
    1.80  
    1.81  
    1.82 +(defmethod display 
    1.83 +  BufferedImage  [image] 
    1.84 +  (let [panel (makePanel image)
    1.85 +	frame (JFrame. "Oh Yeah!")]
    1.86 +    (.add frame panel) 
    1.87 +    (.pack frame) 
    1.88 +    (.setVisible frame true ) 
    1.89 +    (.setSize frame(.getWidth image) (.getHeight image))))
    1.90 + 
    1.91 +(defmethod display
    1.92 +  ImagePlus [image]
    1.93 +  (display (.getBufferedImage image)))
    1.94 +
    1.95 +(defmethod display
    1.96 +  clojure.lang.PersistentHashMap [frame-hash]
    1.97 +  (display (frame-hash->bufferedImage frame-hash)))
    1.98 +
    1.99 +(defmethod display
   1.100 +    clojure.lang.PersistentArrayMap [frame-hash]
   1.101 +    (display (frame-hash->bufferedImage frame-hash)))
   1.102 +
   1.103 +
   1.104 +
   1.105 +
   1.106 +