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))