compiler/libec: (#94) Fixed DOs fussiness over module names and project order
[sdk] / autoLayout / slides.ec
1 import "autoLayout"
2
3 import "titleSlide"
4 import "languageSlide"
5 import "classesSlide"
6 import "instancesSlide"
7 import "formSlide"
8 import "buttonSlide"
9 import "gnosisSlide"
10
11 Array<Class> slides
12 { [
13    class(TitleSlide),
14    class(LanguageSlide),
15    class(ClassesSlide),
16    class(InstancesSlide),
17    class(FormSlide),
18    class(ButtonSlide),
19    class(GNOSISSlide)
20 ] };
21
22 class SlideForm : AutoLayoutForm
23 {
24    int slideNum;
25    caption = "Butterbur Slides";
26
27    SlideForm()
28    {
29       subclass(Element) c = slides.count ? (subclass(Element))slides[slideNum] : null;
30       if(c)
31          contents = eInstance_New(c);
32    }
33
34    bool OnKeyHit(Key key, unichar ch)
35    {
36       int num = slideNum;
37       switch(key)
38       {
39          case home:     num = 0; break;
40          case end:      if(slides.count) num = slides.count-1; break;
41          case pageUp:   if(num > 0) num--; break;
42          case pageDown: if(num < slides.count-1) num++; break;
43          case p:        printSlides(caption); break;
44       }
45       if(slideNum != num)
46       {
47          delete contents;
48          slideNum = num;
49          contents = eInstance_New(slides[num]);
50          OnLoadGraphics();
51          OnResize(clientSize.w, clientSize.h);
52       }
53       return true;
54    }
55 }
56
57 SlideForm slideForm { clientSize = { 1600, 1200 } };
58
59 class SlidePrinter : Window
60 {
61    fullRender = true;
62    size = { 1600, 1200 };
63    displayDriver = "Win32Printer";
64 }
65
66 Bitmap outputSlide(Class sc)
67 {
68    Element c = eInstance_New(sc);
69    Bitmap bmp { };
70    AutoLayoutForm form1 { contents = c, clientSize = { 1600, 1200 } };
71    bmp.Allocate(null, 1600, 1200, 0, pixelFormat888, false);
72    form1.Create();
73    form1.display.Lock(true);
74    form1.Grab(bmp, null, false);
75    form1.display.Unlock();
76    form1.Destroy(0);
77    delete c;
78    bmp.Save("test.png", null, null);
79    return bmp;
80 }
81
82 void printSlides(const String title)
83 {
84    int i = 0;
85    SlidePrinter printer { size = { 1600, 1200 } };
86    SetPrintingDocumentName(title);
87
88    printer.Create();
89    for(s : slides)
90    {
91       Bitmap bmp = outputSlide(s);
92       Picture pic { printer, anchor = { 0, 0, 0, 0 }, bitmapImage = bmp };
93       if(i++) printer.display.NextPage();
94       pic.Create();
95       pic.UpdateDisplay();
96       pic.Destroy(0);
97       delete bmp;
98    }
99    printer.Destroy(0);
100 }