view src/kryshen/indyvon/demo.clj @ 36:5413b188d112

Rename namespaces: indyvon to kryshen.indyvon.
author Mikhail Kryshen <mikhail@kryshen.net>
date Thu, 08 Jul 2010 07:03:24 +0400
parents
children d2fb660ca49f
line source
1 ;;
2 ;; Copyright (C) 2010 Mikhail Kryshen <mikhail@kryshen.net>
3 ;;
4 ;; This file is part of Indyvon.
5 ;;
7 (ns kryshen.indyvon.demo
8 (:gen-class)
9 (:use kryshen.indyvon.core
10 kryshen.indyvon.layers
11 kryshen.indyvon.component)
12 (:import (kryshen.indyvon.core Size Bounds)
13 (java.awt Color)
14 (javax.swing JFrame)))
16 (def frame (JFrame. "Test"))
18 (def layer1
19 (reify
20 Layer
21 (render! [layer opts]
22 (with-handlers layer
23 (doto *graphics*
24 (.setColor Color/RED)
25 (.fillRect 0 0 (:width *bounds*) (:height *bounds*)))
26 (:mouse-entered e (println e))
27 (:mouse-exited e (println e))
28 (:mouse-moved e (println e))))
29 (size [layer opts] (Size. 30 20))))
31 (def layer1b (border-layer layer1 2 3))
33 (def layer2
34 (reify
35 Layer
36 (render! [layer opts]
37 (doto *graphics*
38 (.setColor Color/YELLOW)
39 (.fillRect 0 0 (:width *bounds*) (:height *bounds*)))
40 (draw! layer1b [10 5])
41 (draw! layer1 [55 5]))
42 (size [layer opts] (Size. 70 65))))
44 (def layer3
45 (border-layer (text-layer "Sample\ntext" :right :center)))
47 (defn fps-layer [fps]
48 (border-layer (text-layer (format "%.1f" fps) :right :bottom) 0 5))
50 (def fps
51 (let [update-interval 0.1
52 frames (ref 0)
53 last (ref 0)
54 fl (ref (fps-layer 0.0))]
55 (reify
56 Layer
57 (render! [layer opts]
58 (render! @fl nil)
59 (dosync
60 (alter frames + 1)
61 (let [time (System/currentTimeMillis)
62 elapsed (/ (- time @last) 1000.0)]
63 (when (> elapsed update-interval)
64 (ref-set fl (fps-layer (/ @frames elapsed)))
65 (ref-set frames 0)
66 (ref-set last time)))))
67 (size [layer opts] (size @fl nil)))))
69 (def layer
70 (reify
71 Layer
72 (render! [layer opts]
73 (*update*)
74 (doto *graphics*
75 (.setColor (rand-nth [Color/BLACK Color/BLUE Color/RED]))
76 (.drawLine 0 0 (:width *bounds*) (:height *bounds*)))
77 (draw! layer2 [15 20])
78 (draw! layer3 [100 100 80 50])
79 (render! fps nil))
80 (size [layer opts] (Size. 400 300))))
82 (defn -main []
83 (doto frame
84 (.addWindowListener
85 (proxy [java.awt.event.WindowAdapter] []
86 (windowClosing [event] (.dispose frame))))
87 (.. (getContentPane) (add (make-jpanel (viewport layer))))
88 (.pack)
89 (.setVisible true)))