view src/net/kryshen/indyvon/demo.clj @ 77:1ca7872b889b

Rename text-layer to label.
author Mikhail Kryshen <mikhail@kryshen.net>
date Tue, 31 Aug 2010 02:20:24 +0400
parents ddfde9cce39a
children 880ae8e03408
line source
1 ;;
2 ;; Copyright 2010 Mikhail Kryshen <mikhail@kryshen.net>
3 ;;
4 ;; This file is part of Indyvon.
5 ;;
6 ;; Indyvon is free software: you can redistribute it and/or modify it
7 ;; under the terms of the GNU Lesser General Public License version 3
8 ;; only, as published by the Free Software Foundation.
9 ;;
10 ;; Indyvon is distributed in the hope that it will be useful, but
11 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
12 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 ;; Lesser General Public License for more details.
14 ;;
15 ;; You should have received a copy of the GNU Lesser General Public
16 ;; License along with Indyvon. If not, see
17 ;; <http://www.gnu.org/licenses/>.
18 ;;
20 (ns net.kryshen.indyvon.demo
21 (:gen-class)
22 (:use
23 (net.kryshen.indyvon core layers component))
24 (:import
25 (net.kryshen.indyvon.core Size)
26 (java.awt Color)
27 (javax.swing JFrame)))
29 (def layer1
30 (reify
31 Layer
32 (render! [layer]
33 (with-handlers layer
34 (with-color (if (hovered? layer) Color/ORANGE Color/RED)
35 (.fillRect *graphics* 0 0 *width* *height*))
36 (:mouse-entered e
37 (repaint)
38 (println e))
39 (:mouse-exited e
40 (repaint)
41 (println e))
42 (:mouse-moved e
43 (println e))))
44 (layer-size [layer]
45 (Size. 30 20))))
47 (def layer1b (border layer1 2 3))
49 (def layer2
50 (reify
51 Layer
52 (render! [layer]
53 (doto *graphics*
54 (.setColor Color/YELLOW)
55 (.fillRect 0 0 *width* *height*))
56 (with-rotate 0.5 0 0
57 (draw! layer1b 30 25))
58 (draw! layer1 55 5))
59 (layer-size [layer]
60 (Size. 70 65))))
62 (def layer2m (miniature layer2 30 30))
64 (def layer3 (border (label "Sample\ntext" :right :center)))
66 (def layer
67 (reify
68 Layer
69 (render! [layer]
70 ;;(repaint)
71 (doto *graphics*
72 ;; Random color to see when repaint happens.
73 (.setColor (rand-nth [Color/BLACK Color/BLUE Color/RED]))
74 (.drawLine 0 0 *width* *height*)
75 (.drawLine *width* 0 0 *height*))
76 (draw! layer2 15 20)
77 (draw! layer2m 120 50)
78 (draw! layer3 100 100 80 50))
79 (layer-size [layer]
80 (Size. 400 300))))
82 (def vp (viewport layer))
84 (def root (fps-layer vp))
86 (defn show-frame [layer]
87 (doto (make-jframe "Test" layer)
88 (.setDefaultCloseOperation JFrame/DISPOSE_ON_CLOSE)
89 (.setVisible true)))
91 (defn -main []
92 (println "Try to drag the viewport.")
93 (show-frame root)
94 (show-frame (fps-layer (viewport-miniature vp 80 60))))