Rune - Fix array passing, optimize constant array indices
[rune.git] / tests / gfxslider2.d
1 #!/usr/local/bin/rune -x
2 #
3 #       Graphical test
4
5 import "sys";
6 import <stdio>;
7 import <gfx>;
8 import <gadgets>;
9
10 alias stdio.File *stdout = stdio.stdout;
11
12 typedef gfx.Event       Event;
13 typedef gfx.Frame       Frame;
14
15 subclass gadgets.SliderFrame as MySlider
16 {
17 }
18
19 subclass Frame as MyFrame
20 {
21         refine method 
22         bool
23         refreshFrame(int x, int y, int w, int h) {
24                 super.refreshFrame(x, y, w, h);
25                 this.drawLine(5, 5, this.bounds.w - 5, this.bounds.h -5);
26                 this.drawLine(this.bounds.w - 5, 5, 5, this.bounds.h -5);
27                 this.drawRect(0, 0, this.bounds.w - 1, this.bounds.h -1);
28         }
29 }
30
31 int
32 main(int ac, char **av)
33 {
34         Frame *frame0;
35         Frame *frame1;
36         MyFrame *frame2;
37         MySlider *sliderH;
38         MySlider *sliderV;
39         int i;
40         int j;
41         int k;
42         int l;
43
44         frame0.createFrame("OUTER", &gfx.root, 1024, 1024, BODY);
45         frame0->setBGColor(255, 129, 0);
46         sliderH.createSlider(frame0, 0, 0, sliderH.NULL, BELOW|FILLX);
47         sliderV.createSlider(frame0, 0, 0, sliderH, RIGHT|FILLY);
48         frame1.createFrame("WINDOW", frame0,
49                            0, 0, BODY|FILLX|FILLY|WINDOW);
50         frame2.createFrame("INNER", frame1,
51                            2000, 1000, BODY|WINDOW|CLIP);
52 #    frame2.createFrame(frame1, 1000, 1000, BODY);
53         sliderH->setBody(frame1, frame2);
54         sliderV->setBody(frame1, frame2);
55
56         # Create 6400 buttons
57         #
58         for (i = 0; i < 4; ++i) {
59                 Frame *frame3;
60
61                 frame3.createFrame("LEFT", frame2, 0, 0, LEFT);
62                 for (j = 0; j < 4; ++j) {
63                         Frame *frame4;
64
65                         frame4.createFrame("SUB-ABOVE", frame3, 0, 0, ABOVE);
66                         for (k = 0; k < 20; ++k) {
67                                 Frame *frame5;
68
69                                 frame5.createFrame("SUB-SUB-ABOVE",
70                                                    frame4, 0, 0, ABOVE);
71                                 for (l = 0; l < 20; ++l) {
72                                         gadgets.ButtonFrame *button;
73
74                                         button.createButton(frame5,
75                                                             0, 0, LEFT, "LEFT");
76                                 }
77                         }
78                 }
79         }
80         stdout->show("Number of buttons:", i * j * k * l);
81         frame0->recalc();
82         frame0->flush();
83         Thread.waitThreads();           # wait until all threads have exited
84         return(0);
85 }