~jerstlouis/ecere/master

« back to all changes in this revision

Viewing changes to autoLayout/slides.ec

  • Committer: Jerome St-Louis
  • Date: 2018-08-20 03:05:58 UTC
  • Revision ID: git-v1:8ca377601976310aacf772f6aeb12cfd1c931223
autoLayout: Initial commit of AutoLayout and SlidesTest

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
}