# HG changeset patch # User Robert McIntyre # Date 1282283248 14400 # Node ID 8cc418e04b87743189a0f5904bbf2a400fc18b42 # Parent 6533b4ef83adbe752cefcb43ef788ba1bc396823 made preserve-meta diff -r 6533b4ef83ad -r 8cc418e04b87 src/laser/rasterize.clj --- a/src/laser/rasterize.clj Fri Aug 20 01:30:12 2010 -0400 +++ b/src/laser/rasterize.clj Fri Aug 20 01:47:28 2010 -0400 @@ -38,30 +38,12 @@ (def cut_feed 20) (def corner_radius 0) -(defmulti display "Creates a JFrame and displays a buffered image" class) -(defn- makePanel [image] (proxy [Panel] [] (paint [g] (.drawImage g image 0 0 nil)))) +(defn preserve-meta [f] + (fn [& x] (with-meta + (apply f x) + (meta (last x))))) -(defmethod display - BufferedImage [image] - (let [panel (makePanel image) - frame (JFrame. "Oh Yeah!")] - (.add frame panel) - (.pack frame) - (.setVisible frame true ) - (.setSize frame(.getWidth image) (.getHeight image)))) - -(defmethod display - ImagePlus [image] - (display (.getBufferedImage image))) - -(defmethod display - clojure.lang.PersistentHashMap [frame-hash] - (display (frame-hash->bufferedImage frame-hash))) - -(defmethod display - clojure.lang.PersistentArrayMap [frame-hash] - (display (frame-hash->bufferedImage frame-hash))) (defn frame-hash @@ -85,6 +67,11 @@ {:width (.getWidth image+) :height (.getHeight image+)}))) + + + + + (def white {:r 255, :g 255, :b 255}) (def black {:r 0, :g 0, :b 0}) @@ -128,18 +115,11 @@ (defn filter-keys [fun m] (select-keys m (filter fun (keys m)))) +(def filter-keys (preserve-meta filter-keys)) (defn filter-vals [fun m] - (into {} (filter (comp fun val) m))) - - - - - - - - - + (into {} (filter (comp fun val) m))) +(def filter-vals (preserve-meta filter-vals)) (defn frame-hash->bufferedImage [frame-hash] @@ -155,6 +135,34 @@ (:b rgb))] (.setRGB image (first coord) (last coord) packed-RGB)))) image)) + +(defmulti display "Creates a JFrame and displays a buffered image" class) +(defn- makePanel [image] (proxy [Panel] [] (paint [g] (.drawImage g image 0 0 nil)))) +(defmethod display + BufferedImage [image] + (let [panel (makePanel image) + frame (JFrame. "Oh Yeah!")] + (.add frame panel) + (.pack frame) + (.setVisible frame true ) + (.setSize frame(.getWidth image) (.getHeight image)))) + +(defmethod display + ImagePlus [image] + (display (.getBufferedImage image))) + +(defmethod display + clojure.lang.PersistentHashMap [frame-hash] + (display (frame-hash->bufferedImage frame-hash))) + +(defmethod display + clojure.lang.PersistentArrayMap [frame-hash] + (display (frame-hash->bufferedImage frame-hash))) + + + + +