| OLD | NEW |
| 1 gShowBounds = false | 1 gShowBounds = false |
| 2 | 2 |
| 3 gPath = "/skia/trunk/resources/" | 3 gPath = "/skia/trunk/resources/" |
| 4 | 4 |
| 5 function load_file(file) | 5 function load_file(file) |
| 6 local prev_path = package.path | 6 local prev_path = package.path |
| 7 package.path = package.path .. ";" .. gPath .. file .. ".lua" | 7 package.path = package.path .. ";" .. gPath .. file .. ".lua" |
| 8 require(file) | 8 require(file) |
| 9 package.path = prev_path | 9 package.path = prev_path |
| 10 end | 10 end |
| 11 | 11 |
| 12 load_file("slides_utils") | 12 load_file("slides_utils") |
| 13 | 13 |
| 14 gSlides = parse_file(io.open("/skia/trunk/resources/slides_content2.lua", "r")) | 14 gSlides = parse_file(io.open("/skia/trunk/resources/slides_content2.lua", "r")) |
| 15 | 15 |
| 16 function make_rect(l, t, r, b) | 16 function make_rect(l, t, r, b) |
| 17 return { left = l, top = t, right = r, bottom = b } | 17 return { left = l, top = t, right = r, bottom = b } |
| 18 end | 18 end |
| 19 | 19 |
| 20 function make_paint(typefacename, stylebits, size, color) | 20 function make_paint(typefacename, stylebits, size, color) |
| 21 local paint = Sk.newPaint(); | 21 local paint = Sk.newPaint(); |
| 22 paint:setAntiAlias(true) | 22 paint:setAntiAlias(true) |
| 23 paint:setSubpixelText(true) | 23 paint:setSubpixelText(true) |
| 24 paint:setTypeface(Sk.newTypeface(typefacename, stylebits)) | 24 paint:setTypeface(Sk.newTypeface(typefacename, stylebits)) |
| 25 paint:setTextSize(size) | 25 paint:setTextSize(size) |
| 26 paint:setColor(color) | 26 paint:setColor(color) |
| 27 return paint | 27 return paint |
| 28 end | 28 end |
| 29 | 29 |
| 30 function center_rect(sw, sh, dst) |
| 31 local dw = dst.right - dst.left |
| 32 local dh = dst.bottom - dst.top |
| 33 |
| 34 local rw, rh |
| 35 |
| 36 if sw / sh > dw / dh then |
| 37 rw = dw |
| 38 rh = sh * dw / sw |
| 39 else |
| 40 rh = dh |
| 41 rw = sw * dh / sh |
| 42 end |
| 43 |
| 44 local x = dst.left + ((sw - rw) / 2) |
| 45 local y = dst.top + ((sh - rh) / 2) |
| 46 return make_rect(x, y, x + rw, y + rh) |
| 47 end |
| 48 |
| 49 function draw_image_centered(canvas, image) |
| 50 local sw = image:width() |
| 51 local sh = image:height() |
| 52 local dstR = center_rect(image:width(), image:height(), make_rect(20, 20, 62
0, 460)) |
| 53 canvas:drawImageRect(image, nil, dstR) |
| 54 end |
| 55 |
| 30 function draw_bullet(canvas, x, y, paint, indent) | 56 function draw_bullet(canvas, x, y, paint, indent) |
| 31 if 0 == indent then | 57 if 0 == indent then |
| 32 return | 58 return |
| 33 end | 59 end |
| 34 local ps = paint:getTextSize() | 60 local ps = paint:getTextSize() |
| 35 local cx = x - ps * .8 | 61 local cx = x - ps * .8 |
| 36 local cy = y - ps * .4 | 62 local cy = y - ps * .4 |
| 37 local radius = ps * .2 | 63 local radius = ps * .2 |
| 38 canvas:drawCircle(cx, cy, radius, paint) | 64 canvas:drawCircle(cx, cy, radius, paint) |
| 39 end | 65 end |
| 40 | 66 |
| 41 function stroke_rect(canvas, rect, color) | 67 function stroke_rect(canvas, rect, color) |
| 42 local paint = Sk.newPaint() | 68 local paint = Sk.newPaint() |
| 43 paint:setStroke(true); | 69 paint:setStroke(true); |
| 44 paint:setColor(color) | 70 paint:setColor(color) |
| 45 canvas:drawRect(rect, paint) | 71 canvas:drawRect(rect, paint) |
| 46 end | 72 end |
| 47 | 73 |
| 48 function drawSlide(canvas, slide, master_template) | 74 function drawSlide(canvas, slide, master_template) |
| 49 template = master_template.slide -- need to sniff the slide to know if we'
re title or slide | 75 |
| 76 if #slide == 1 then |
| 77 template = master_template.title |
| 78 canvas:drawText(slide[1].text, 320, 240, template[1]) |
| 79 return |
| 80 end |
| 81 |
| 82 template = master_template.slide |
| 50 | 83 |
| 51 local x = template.margin_x | 84 local x = template.margin_x |
| 52 local y = template.margin_y | 85 local y = template.margin_y |
| 53 local scale = 1.25 | 86 local scale = 1.25 |
| 54 | 87 |
| 55 if slide.blockstyle == "code" then | 88 if slide.blockstyle == "code" then |
| 56 local paint = master_template.codePaint | 89 local paint = master_template.codePaint |
| 57 local fm = paint:getFontMetrics() | 90 local fm = paint:getFontMetrics() |
| 58 local height = #slide * (fm.descent - fm.ascent) | 91 local height = #slide * (fm.descent - fm.ascent) |
| 59 y = (480 - height) / 2 | 92 y = (480 - height) / 2 |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 canvas:translate(x, y) | 199 canvas:translate(x, y) |
| 167 drawSlide(canvas, self.slide, gTemplate) | 200 drawSlide(canvas, self.slide, gTemplate) |
| 168 canvas:restore() | 201 canvas:restore() |
| 169 end | 202 end |
| 170 } | 203 } |
| 171 end | 204 end |
| 172 | 205 |
| 173 function next_slide() | 206 function next_slide() |
| 174 local prev = gSlides[gSlideIndex] | 207 local prev = gSlides[gSlideIndex] |
| 175 | 208 |
| 176 gSlideIndex = gSlideIndex + 1 | 209 if gSlideIndex < #gSlides then |
| 177 if gSlideIndex > #gSlides then | 210 gSlideIndex = gSlideIndex + 1 |
| 178 gSlideIndex = 1 | 211 spawn_transition(prev, gSlides[gSlideIndex], true) |
| 179 end | 212 end |
| 180 | |
| 181 spawn_transition(prev, gSlides[gSlideIndex], true) | |
| 182 end | 213 end |
| 183 | 214 |
| 184 function prev_slide() | 215 function prev_slide() |
| 185 local prev = gSlides[gSlideIndex] | 216 local prev = gSlides[gSlideIndex] |
| 186 | 217 |
| 187 gSlideIndex = gSlideIndex - 1 | 218 if gSlideIndex > 1 then |
| 188 if gSlideIndex < 1 then | 219 gSlideIndex = gSlideIndex - 1 |
| 189 gSlideIndex = #gSlides | 220 spawn_transition(prev, gSlides[gSlideIndex], false) |
| 190 end | 221 end |
| 191 | |
| 192 spawn_transition(prev, gSlides[gSlideIndex], false) | |
| 193 end | 222 end |
| 194 | 223 |
| 195 function convert_to_picture_drawable(slide) | 224 function convert_to_picture_drawable(slide) |
| 196 local rec = Sk.newPictureRecorder() | 225 local rec = Sk.newPictureRecorder() |
| 197 drawSlide(rec:beginRecording(640, 480), slide, gTemplate) | 226 drawSlide(rec:beginRecording(640, 480), slide, gTemplate) |
| 198 return new_drawable_picture(rec:endRecording()) | 227 return new_drawable_picture(rec:endRecording()) |
| 199 end | 228 end |
| 200 | 229 |
| 201 function convert_to_image_drawable(slide) | 230 function convert_to_image_drawable(slide) |
| 202 local surf = Sk.newRasterSurface(640, 480) | 231 local surf = Sk.newRasterSurface(640, 480) |
| 203 drawSlide(surf:getCanvas(), slide, gTemplate) | 232 drawSlide(surf:getCanvas(), slide, gTemplate) |
| 204 return new_drawable_image(surf:newImageSnapshot()) | 233 return new_drawable_image(surf:newImageSnapshot()) |
| 205 end | 234 end |
| 206 | 235 |
| 207 -- gMakeDrawable = convert_to_picture_drawable | |
| 208 gMakeDrawable = new_drawable_slide | 236 gMakeDrawable = new_drawable_slide |
| 209 | 237 |
| 210 load_file("slides_transitions") | 238 load_file("slides_transitions") |
| 211 | 239 |
| 212 function spawn_transition(prevSlide, nextSlide, is_forward) | 240 function spawn_transition(prevSlide, nextSlide, is_forward) |
| 213 local transition | 241 local transition |
| 214 if is_forward then | 242 if is_forward then |
| 215 transition = gTransitionTable[nextSlide.transition] | 243 transition = gTransitionTable[nextSlide.transition] |
| 216 else | 244 else |
| 217 transition = gTransitionTable[prevSlide.transition] | 245 transition = gTransitionTable[prevSlide.transition] |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 278 end | 306 end |
| 279 | 307 |
| 280 local bgPaint = nil | 308 local bgPaint = nil |
| 281 | 309 |
| 282 function draw_bg(canvas) | 310 function draw_bg(canvas) |
| 283 if not bgPaint then | 311 if not bgPaint then |
| 284 bgPaint = Sk.newPaint() | 312 bgPaint = Sk.newPaint() |
| 285 local grad = Sk.newLinearGradient( 0, 0, { a=1, r=0, g=0, b=.3 }, | 313 local grad = Sk.newLinearGradient( 0, 0, { a=1, r=0, g=0, b=.3 }, |
| 286 640, 480, { a=1, r=0, g=0, b=.8 }) | 314 640, 480, { a=1, r=0, g=0, b=.8 }) |
| 287 bgPaint:setShader(grad) | 315 bgPaint:setShader(grad) |
| 316 bgPaint:setDither(true) |
| 288 end | 317 end |
| 289 | 318 |
| 290 canvas:drawPaint(bgPaint) | 319 canvas:drawPaint(bgPaint) |
| 291 end | 320 end |
| 292 | 321 |
| 293 function onDrawContent(canvas, width, height) | 322 function onDrawContent(canvas, width, height) |
| 294 local matrix = Sk.newMatrix() | 323 local matrix = Sk.newMatrix() |
| 295 matrix:setRectToRect(make_rect(0, 0, 640, 480), make_rect(0, 0, width, heigh
t), "center") | 324 matrix:setRectToRect(make_rect(0, 0, 640, 480), make_rect(0, 0, width, heigh
t), "center") |
| 296 canvas:concat(matrix) | 325 canvas:concat(matrix) |
| 297 | 326 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 326 } | 355 } |
| 327 | 356 |
| 328 function onCharHandler(uni) | 357 function onCharHandler(uni) |
| 329 local proc = keyProcs[uni] | 358 local proc = keyProcs[uni] |
| 330 if proc then | 359 if proc then |
| 331 proc() | 360 proc() |
| 332 return true | 361 return true |
| 333 end | 362 end |
| 334 return false | 363 return false |
| 335 end | 364 end |
| OLD | NEW |