view src/net/kryshen/indyvon/demo.clj @ 71:59e1810c0278

Moved fps code from demo to layers. Moved frame creation code from demo to component.
author Mikhail Kryshen <mikhail@kryshen.net>
date Sun, 29 Aug 2010 20:38:22 +0400
parents b2f6c78413d3
children a823dd0c2736
line source
1 ;;
2 ;; Copyright (C) 2010 Mikhail Kryshen <mikhail@kryshen.net>
3 ;;
4 ;; This file is part of Indyvon.
5 ;;
7 (ns net.kryshen.indyvon.demo
8 (:gen-class)
9 (:use
10 (net.kryshen.indyvon core layers component))
11 (:import
12 (net.kryshen.indyvon.core Size)
13 (java.awt Color)
14 (javax.swing JFrame)))
16 (def layer1
17 (reify
18 Layer
19 (render! [layer]
20 (with-handlers layer
21 (doto *graphics*
22 (.setColor (rand-nth [Color/RED Color/ORANGE]))
23 (.fillRect 0 0 *width* *height*))
24 (:mouse-entered e (println e))
25 (:mouse-exited e (println e))
26 (:mouse-moved e (println e))))
27 (layer-size [layer]
28 (Size. 30 20))))
30 (def layer1b (border layer1 2 3))
32 (def layer2
33 (reify
34 Layer
35 (render! [layer]
36 (doto *graphics*
37 (.setColor Color/YELLOW)
38 (.fillRect 0 0 *width* *height*))
39 (with-rotate 0.5 0 0
40 (draw! layer1b 30 25))
41 (draw! layer1 55 5))
42 (layer-size [layer]
43 (Size. 70 65))))
45 (def layer2m (miniature layer2 30 30))
47 (def layer3 (border (text-layer "Sample\ntext" :right :center)))
49 (def layer
50 (reify
51 Layer
52 (render! [layer]
53 ;;(repaint)
54 (doto *graphics*
55 ;; Random color to see when repaint happens.
56 (.setColor (rand-nth [Color/BLACK Color/BLUE Color/RED]))
57 (.drawLine 0 0 *width* *height*)
58 (.drawLine *width* 0 0 *height*))
59 (draw! layer2 15 20)
60 (draw! layer2m 120 50)
61 (draw! layer3 100 100 80 50))
62 (layer-size [layer]
63 (Size. 400 300))))
65 (def vp (viewport layer))
67 (def root (fps-layer vp))
69 (defn show-frame [layer]
70 (doto (make-jframe "Test" layer)
71 (.setDefaultCloseOperation JFrame/DISPOSE_ON_CLOSE)
72 (.setVisible true)))
74 (defn -main []
75 (println "Try to drag the viewport.")
76 (show-frame root)
77 (show-frame (fps-layer (viewport-miniature vp 80 60))))