Mercurial > hg > indyvon
changeset 51:a20b1fccc0ef
Beginning of transformations.
author | Mikhail Kryshen <mikhail@kryshen.net> |
---|---|
date | Thu, 29 Jul 2010 15:59:33 +0400 |
parents | 409b1b16053d |
children | 7fcc0869ce00 |
files | src/net/kryshen/indyvon/core.clj src/net/kryshen/indyvon/demo.clj |
diffstat | 2 files changed, 23 insertions(+), 1 deletions(-) [+] |
line diff
1.1 --- a/src/net/kryshen/indyvon/core.clj Thu Jul 29 01:28:30 2010 +0400 1.2 +++ b/src/net/kryshen/indyvon/core.clj Thu Jul 29 15:59:33 2010 +0400 1.3 @@ -7,6 +7,7 @@ 1.4 (ns net.kryshen.indyvon.core 1.5 (:import 1.6 (java.awt Graphics2D Component Color Font AWTEvent) 1.7 + (java.awt.geom AffineTransform) 1.8 (java.awt.event MouseListener MouseMotionListener) 1.9 (java.awt.font FontRenderContext))) 1.10 1.11 @@ -152,6 +153,26 @@ 1.12 (finally 1.13 (.setColor *graphics* color#))))) 1.14 1.15 +;; TODO: 1.16 +;; 1.17 +;; (with-transform 1.18 +;; (rotate ...) 1.19 +;; (draw ...) 1.20 +;; (scale ...) 1.21 +;; (draw ...)) 1.22 + 1.23 +(defmacro with-transform [transform & body] 1.24 + `(let [old-t# (.getTransform *graphics*)] 1.25 + (try 1.26 + (.transform *graphics* ~transform) 1.27 + ~@body 1.28 + (finally 1.29 + (.setTransform *graphics* old-t#))))) 1.30 + 1.31 +(defmacro with-rotate [theta ax ay & body] 1.32 + `(let [transform# (AffineTransform/getRotateInstance ~theta ~ax ~ay)] 1.33 + (with-transform transform# ~@body))) 1.34 + 1.35 (defn- geometry-vec [geometry] 1.36 (if (vector? geometry) 1.37 geometry
2.1 --- a/src/net/kryshen/indyvon/demo.clj Thu Jul 29 01:28:30 2010 +0400 2.2 +++ b/src/net/kryshen/indyvon/demo.clj Thu Jul 29 15:59:33 2010 +0400 2.3 @@ -37,7 +37,8 @@ 2.4 (doto *graphics* 2.5 (.setColor Color/YELLOW) 2.6 (.fillRect 0 0 (:width *bounds*) (:height *bounds*))) 2.7 - (draw! layer1b 10 5) 2.8 + (with-rotate 0.5 0 0 2.9 + (draw! layer1b 10 5)) 2.10 (draw! layer1 55 5)) 2.11 (layer-size [layer] (Size. 70 65)))) 2.12