--
You received this message because you are subscribed to the Google Groups "clj-processing" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clj-processin...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
(ns drawtest.core
(:require [quil.core :as q])
(:require [drawtest.dynamic :as dyn])
(:require [quil.middleware :as m])
)
(q/defsketch drawtest
:title "Draw Test"
:setup dyn/setup
:update dyn/update-state
:draw dyn/draw
:mouse-clicked dyn/mouse-clicked
:size [768 768]
:features [:exit-on-close]
:middleware [m/fun-mode])
(ns drawtest.dynamic
(:require [quil.core :as q]
[clojure.string :as str]))
(def width 768)
(def height 768)
(defn setup []
(q/no-stroke)
(q/smooth)
(q/frame-rate 64)
(q/background 0)
(q/fill (q/color 255 0 255))
{:x (/ width 2) :y (/ height 2) :draw true})
(defn update-state [state]
(if (:draw state) ; want to draw, so set :draw-now true and reset :draw to false
(assoc state :draw false :draw-now true)
(assoc state :draw-now false)))
(defn draw [state]
(let [{:keys [x y draw-now]} state]
(when (:draw-now state) ; only draw if update has set :draw-now to true
(q/ellipse x y 64 64))))
(defn mouse-clicked
[state event]
(q/background 0)
(let [px (:x event)
py (:y event)]
(assoc state :x px :y py :draw true)))
; Marco Molteni, May 2018; Show how to draw only on state change using functional mode.
(ns game-of-life.state-change
(:require [quil.core :as q]
[quil.middleware :as m]))
(defn setup [] (q/frame-rate 15) {})
(defn update-state [state] state)
(defn draw [state] (let [x (q/random (q/width)) y (q/random (q/width)) r (q/random (/ (q/width) 2)) grey (q/random 50 200)] (q/fill grey) (q/ellipse x y r r)))
(defn key-pressed [state event] (if (:stop state) (do (q/start-loop) (assoc state :stop false)) (do (q/no-loop) (assoc state :stop true))))
(q/defsketch state-change :size [400 400] :setup setup :update update-state :draw draw :key-pressed key-pressed :features [:keep-on-top :no-safe-fns] :middleware [m/fun-mode])