Mercurial > hg > indyvon
changeset 62:44a7acf60c16
Asynchronous scaled display.
author | Mikhail Kryshen <mikhail@kryshen.net> |
---|---|
date | Thu, 26 Aug 2010 03:42:44 +0400 |
parents | 88bb47e3a401 |
children | 2d74abee0c93 |
files | src/net/kryshen/indyvon/demo.clj src/net/kryshen/indyvon/layers.clj |
diffstat | 2 files changed, 23 insertions(+), 2 deletions(-) [+] |
line diff
1.1 --- a/src/net/kryshen/indyvon/demo.clj Wed Aug 25 22:03:01 2010 +0400 1.2 +++ b/src/net/kryshen/indyvon/demo.clj Thu Aug 26 03:42:44 2010 +0400 1.3 @@ -30,7 +30,7 @@ 1.4 1.5 (def layer1b (border layer1 2 3)) 1.6 1.7 -(def layer1c (async-layer layer1 20 30)) 1.8 +;;(def layer1c (async-layer layer1 20 30)) 1.9 1.10 (def layer2 1.11 (reify 1.12 @@ -41,9 +41,12 @@ 1.13 (.fillRect 0 0 *width* *height*)) 1.14 (with-rotate 0.5 0 0 1.15 (draw! layer1b 30 25)) 1.16 - (draw! layer1c 55 5)) 1.17 + (draw! layer1 55 5)) 1.18 (layer-size [layer] (Size. 70 65)))) 1.19 1.20 +(def layer2m 1.21 + (miniature layer2 30 30)) 1.22 + 1.23 (def layer3 1.24 (border (text-layer "Sample\ntext" :right :center))) 1.25 1.26 @@ -78,6 +81,7 @@ 1.27 (.setColor (rand-nth [Color/BLACK Color/BLUE Color/RED])) 1.28 (.drawLine 0 0 *width* *height*)) 1.29 (draw! layer2 15 20) 1.30 + (draw! layer2m 120 50) 1.31 (draw! layer3 100 100 80 50) 1.32 (draw! fps)) 1.33 (layer-size [layer] (Size. 400 300))))
2.1 --- a/src/net/kryshen/indyvon/layers.clj Wed Aug 25 22:03:01 2010 +0400 2.2 +++ b/src/net/kryshen/indyvon/layers.clj Thu Aug 26 03:42:44 2010 +0400 2.3 @@ -230,6 +230,23 @@ 2.4 (layer-size [layer] 2.5 (Size. width height))))) 2.6 2.7 +(defn miniature 2.8 + "Creates layer that asynchroniously renders view of the content 2.9 + scaled to the specified size." 2.10 + [content width height] 2.11 + (async-layer 2.12 + (reify 2.13 + Layer 2.14 + (render! [this] 2.15 + (let [size (layer-size content) 2.16 + sx (/ width (:width size)) 2.17 + sy (/ height (:height size))] 2.18 + (.scale *graphics* sx sy) 2.19 + (draw! content 0 0 (:width size) (:height size)))) 2.20 + (layer-size [this] 2.21 + (Size. width height))) 2.22 + width height)) 2.23 + 2.24 (defn viewport 2.25 "Creates scrollable viewport layer." 2.26 ([content] (viewport content :left :top))