OLD | NEW |
1 | 1 |
2 gPath = "/skia/trunk/resources/" | 2 gPath = "/skia/trunk/resources/" |
3 | 3 |
4 function load_file(file) | 4 function load_file(file) |
| 5 local prev_path = package.path |
5 package.path = package.path .. ";" .. gPath .. file .. ".lua" | 6 package.path = package.path .. ";" .. gPath .. file .. ".lua" |
6 require(file) | 7 require(file) |
| 8 package.path = prev_path |
7 end | 9 end |
8 | 10 |
9 load_file("slides_utils") | 11 load_file("slides_utils") |
10 | 12 |
11 gSlides = parse_file(io.open("/skia/trunk/resources/slides_content.lua", "r")) | 13 gSlides = parse_file(io.open("/skia/trunk/resources/slides_content.lua", "r")) |
12 | 14 |
13 function make_rect(l, t, r, b) | 15 function make_rect(l, t, r, b) |
14 return { left = l, top = t, right = r, bottom = b } | 16 return { left = l, top = t, right = r, bottom = b } |
15 end | 17 end |
16 | 18 |
(...skipping 20 matching lines...) Expand all Loading... |
37 local extra_dy = template[node.indent + 1].extra_dy | 39 local extra_dy = template[node.indent + 1].extra_dy |
38 local fm = paint:getFontMetrics() | 40 local fm = paint:getFontMetrics() |
39 local x_offset = -fm.ascent * node.indent | 41 local x_offset = -fm.ascent * node.indent |
40 | 42 |
41 y = y - fm.ascent * scale | 43 y = y - fm.ascent * scale |
42 canvas:drawText(node.text, x + x_offset, y, paint) | 44 canvas:drawText(node.text, x + x_offset, y, paint) |
43 y = y + fm.descent * scale + extra_dy | 45 y = y + fm.descent * scale + extra_dy |
44 end | 46 end |
45 end | 47 end |
46 | 48 |
47 function scale_text_delta(template, delta) | |
48 template = template.slide | |
49 for i = 1, #template do | |
50 local paint = template[i].paint | |
51 paint:setTextSize(paint:getTextSize() + delta) | |
52 end | |
53 end | |
54 | |
55 function slide_transition(prev, next, is_forward) | |
56 local rec = { | |
57 proc = function(self, canvas, drawSlideProc) | |
58 if self:isDone() then | |
59 drawSlideProc(canvas) | |
60 return nil | |
61 end | |
62 self.prevDrawable:draw(canvas, self.curr_x, 0) | |
63 self.nextDrawable:draw(canvas, self.curr_x + 640, 0) | |
64 self.curr_x = self.curr_x + self.step_x | |
65 return self | |
66 end | |
67 } | |
68 if is_forward then | |
69 rec.prevDrawable = prev | |
70 rec.nextDrawable = next | |
71 rec.curr_x = 0 | |
72 rec.step_x = -15 | |
73 rec.isDone = function (self) return self.curr_x <= -640 end | |
74 else | |
75 rec.prevDrawable = next | |
76 rec.nextDrawable = prev | |
77 rec.curr_x = -640 | |
78 rec.step_x = 15 | |
79 rec.isDone = function (self) return self.curr_x >= 0 end | |
80 end | |
81 return rec | |
82 end | |
83 | |
84 function sqr(value) return value * value end | |
85 | |
86 function set_blur(paint, alpha) | |
87 local sigma = sqr(1 - alpha) * 20 | |
88 -- paint:setImageFilter(Sk.newBlurImageFilter(sigma, sigma)) | |
89 paint:setAlpha(alpha) | |
90 end | |
91 | |
92 function fade_slide_transition(prev, next, is_forward) | |
93 local rec = { | |
94 paint = Sk.newPaint(), | |
95 prevDrawable = prev, | |
96 nextDrawable = next, | |
97 proc = function(self, canvas, drawSlideProc) | |
98 if self:isDone() then | |
99 drawSlideProc(canvas) | |
100 return nil | |
101 end | |
102 | |
103 set_blur(self.paint, self.prev_a) | |
104 self.prevDrawable:draw(canvas, self.prev_x, 0, self.paint) | |
105 | |
106 set_blur(self.paint, self.next_a) | |
107 self.nextDrawable:draw(canvas, self.next_x, 0, self.paint) | |
108 self:step() | |
109 return self | |
110 end | |
111 } | |
112 if is_forward then | |
113 rec.prev_x = 0 | |
114 rec.prev_a = 1 | |
115 rec.next_x = 640 | |
116 rec.next_a = 0 | |
117 rec.isDone = function (self) return self.next_x <= 0 end | |
118 rec.step = function (self) | |
119 self.next_x = self.next_x - 20 | |
120 self.next_a = (640 - self.next_x) / 640 | |
121 self.prev_a = 1 - self.next_a | |
122 end | |
123 else | |
124 rec.prev_x = 0 | |
125 rec.prev_a = 1 | |
126 rec.next_x = 0 | |
127 rec.next_a = 0 | |
128 rec.isDone = function (self) return self.prev_x >= 640 end | |
129 rec.step = function (self) | |
130 self.prev_x = self.prev_x + 20 | |
131 self.prev_a = (640 - self.prev_x) / 640 | |
132 self.next_a = 1 - self.prev_a | |
133 end | |
134 end | |
135 return rec | |
136 end | |
137 | |
138 --------------------------------------------------------------------------------
------ | 49 --------------------------------------------------------------------------------
------ |
139 function make_tmpl(paint, extra_dy) | 50 function make_tmpl(paint, extra_dy) |
140 return { paint = paint, extra_dy = extra_dy } | 51 return { paint = paint, extra_dy = extra_dy } |
141 end | 52 end |
142 | 53 |
143 function SkiaPoint_make_template() | 54 function SkiaPoint_make_template() |
144 local title = { | 55 local title = { |
145 margin_x = 30, | 56 margin_x = 30, |
146 margin_y = 100, | 57 margin_y = 100, |
147 } | 58 } |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 | 157 |
247 function convert_to_image_drawable(slide) | 158 function convert_to_image_drawable(slide) |
248 local surf = Sk.newRasterSurface(640, 480) | 159 local surf = Sk.newRasterSurface(640, 480) |
249 drawSlide(surf:getCanvas(), slide, gTemplate) | 160 drawSlide(surf:getCanvas(), slide, gTemplate) |
250 return new_drawable_image(surf:newImageSnapshot()) | 161 return new_drawable_image(surf:newImageSnapshot()) |
251 end | 162 end |
252 | 163 |
253 -- gMakeDrawable = convert_to_picture_drawable | 164 -- gMakeDrawable = convert_to_picture_drawable |
254 gMakeDrawable = new_drawable_slide | 165 gMakeDrawable = new_drawable_slide |
255 | 166 |
| 167 load_file("slides_transitions") |
| 168 |
256 function spawn_transition(prevSlide, nextSlide, is_forward) | 169 function spawn_transition(prevSlide, nextSlide, is_forward) |
257 local transition | 170 local transition |
258 if is_forward then | 171 if is_forward then |
259 transition = prevSlide.transition | 172 transition = gTransitionTable[nextSlide.transition] |
260 else | 173 else |
261 transition = nextSlide.transition | 174 transition = gTransitionTable[prevSlide.transition] |
262 end | 175 end |
263 | 176 |
264 if not transition then | 177 if not transition then |
265 transition = fade_slide_transition | 178 transition = fade_slide_transition |
266 end | 179 end |
267 | 180 |
268 local prevDrawable = gMakeDrawable(prevSlide) | 181 local prevDrawable = gMakeDrawable(prevSlide) |
269 local nextDrawable = gMakeDrawable(nextSlide) | 182 local nextDrawable = gMakeDrawable(nextSlide) |
270 gCurrAnimation = transition(prevDrawable, nextDrawable, is_forward) | 183 gCurrAnimation = transition(prevDrawable, nextDrawable, is_forward) |
271 end | 184 end |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 } | 281 } |
369 | 282 |
370 function onCharHandler(uni) | 283 function onCharHandler(uni) |
371 local proc = keyProcs[uni] | 284 local proc = keyProcs[uni] |
372 if proc then | 285 if proc then |
373 proc() | 286 proc() |
374 return true | 287 return true |
375 end | 288 end |
376 return false | 289 return false |
377 end | 290 end |
OLD | NEW |