Skip to content

Instantly share code, notes, and snippets.

@PetrGlad
Created November 29, 2011 15:00
Show Gist options
  • Save PetrGlad/1405090 to your computer and use it in GitHub Desktop.
Save PetrGlad/1405090 to your computer and use it in GitHub Desktop.
cells gui
(ns petrglad.cell.cell
(:import (java.awt Color Graphics Dimension RenderingHints)
(java.awt.image BufferedImage)
(javax.swing JPanel JFrame)))
(def scale 7)
(def dim 100)
(defn fill-cell [#^Graphics g x c]
(doto g
(.setColor c)
(.fillOval (* (first x) scale) (* (second x) scale) scale scale)))
(defn render-cell [g cell]
(let [x (:x cell)
alpha (:v cell)]
(fill-cell g x (new Color 255 0 alpha alpha))))
(defn render [g cells]
(let [img (new BufferedImage (* scale dim) (* scale dim) BufferedImage/TYPE_INT_ARGB)
bg (.getGraphics img)]
(doto bg
(.setRenderingHint RenderingHints/KEY_ANTIALIASING RenderingHints/VALUE_ANTIALIAS_ON)
(.setColor (. Color white))
(.fillRect 0 0 (. img (getWidth)) (. img (getHeight))))
(dorun (for [cell cells] (render-cell bg cell)))
(.drawImage g img 0 0 nil)
(.dispose bg)))
(let [cells (for [i (range 100)] {:x [(rand-int dim) (rand-int dim)] :v (rand-int 200)})
panel (doto (proxy [JPanel] []
(paint [g] (render g cells)))
(.setPreferredSize (new Dimension
(* scale dim)
(* scale dim))))]
(def frame (doto (new JFrame) (.add panel) (.pack) (.show))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment