| OLD | NEW |
| 1 gShowBounds = false | 1 gShowBounds = false |
| 2 gUseBlurInTransitions = false |
| 2 | 3 |
| 3 gPath = "/skia/trunk/resources/" | 4 gPath = "/skia/trunk/resources/" |
| 4 | 5 |
| 5 function load_file(file) | 6 function load_file(file) |
| 6 local prev_path = package.path | 7 local prev_path = package.path |
| 7 package.path = package.path .. ";" .. gPath .. file .. ".lua" | 8 package.path = package.path .. ";" .. gPath .. file .. ".lua" |
| 8 require(file) | 9 require(file) |
| 9 package.path = prev_path | 10 package.path = prev_path |
| 10 end | 11 end |
| 11 | 12 |
| 12 load_file("slides_utils") | 13 load_file("slides_utils") |
| 13 | 14 |
| 14 gSlides = parse_file(io.open("/skia/trunk/resources/slides_content2.lua", "r")) | 15 gSlides = parse_file(io.open("/skia/trunk/resources/slides_content2.lua", "r")) |
| 15 | 16 |
| 16 function make_rect(l, t, r, b) | 17 function make_rect(l, t, r, b) |
| 17 return { left = l, top = t, right = r, bottom = b } | 18 return { left = l, top = t, right = r, bottom = b } |
| 18 end | 19 end |
| 19 | 20 |
| 20 function make_paint(typefacename, stylebits, size, color) | 21 function make_paint(typefacename, stylebits, size, color) |
| 21 local paint = Sk.newPaint(); | 22 local paint = Sk.newPaint(); |
| 22 paint:setAntiAlias(true) | 23 paint:setAntiAlias(true) |
| 23 paint:setSubpixelText(true) | 24 paint:setSubpixelText(true) |
| 24 paint:setTypeface(Sk.newTypeface(typefacename, stylebits)) | 25 paint:setTypeface(Sk.newTypeface(typefacename, stylebits)) |
| 25 paint:setTextSize(size) | 26 paint:setTextSize(size) |
| 26 paint:setColor(color) | 27 paint:setColor(color) |
| 27 return paint | 28 return paint |
| 28 end | 29 end |
| 29 | 30 |
| 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 | |
| 56 function draw_bullet(canvas, x, y, paint, indent) | 31 function draw_bullet(canvas, x, y, paint, indent) |
| 57 if 0 == indent then | 32 if 0 == indent then |
| 58 return | 33 return |
| 59 end | 34 end |
| 60 local ps = paint:getTextSize() | 35 local ps = paint:getTextSize() |
| 61 local cx = x - ps * .8 | 36 local cx = x - ps * .8 |
| 62 local cy = y - ps * .4 | 37 local cy = y - ps * .4 |
| 63 local radius = ps * .2 | 38 local radius = ps * .2 |
| 64 canvas:drawCircle(cx, cy, radius, paint) | 39 canvas:drawCircle(cx, cy, radius, paint) |
| 65 end | 40 end |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 158 gRedPaint:setColor{a=1, r=1, g=0, b=0 } | 133 gRedPaint:setColor{a=1, r=1, g=0, b=0 } |
| 159 | 134 |
| 160 -- animation.proc is passed the canvas before drawing. | 135 -- animation.proc is passed the canvas before drawing. |
| 161 -- The animation.proc returns itself or another animation (which means keep anim
ating) | 136 -- The animation.proc returns itself or another animation (which means keep anim
ating) |
| 162 -- or it returns nil, which stops the animation. | 137 -- or it returns nil, which stops the animation. |
| 163 -- | 138 -- |
| 164 local gCurrAnimation | 139 local gCurrAnimation |
| 165 | 140 |
| 166 gSlideIndex = 1 | 141 gSlideIndex = 1 |
| 167 | 142 |
| 143 ----------------------------------------------------------------------------- |
| 144 |
| 168 function new_drawable_picture(pic) | 145 function new_drawable_picture(pic) |
| 169 return { | 146 return { |
| 170 picture = pic, | 147 picture = pic, |
| 171 width = pic:width(), | 148 width = pic:width(), |
| 172 height = pic:height(), | 149 height = pic:height(), |
| 173 draw = function (self, canvas, x, y, paint) | 150 draw = function (self, canvas, x, y, paint) |
| 174 canvas:drawPicture(self.picture, x, y, paint) | 151 canvas:drawPicture(self.picture, x, y, paint) |
| 175 end | 152 end |
| 176 } | 153 } |
| 177 end | 154 end |
| 178 | 155 |
| 179 function new_drawable_image(img) | 156 function new_drawable_image(img) |
| 180 return { | 157 return { |
| 181 image = img, | 158 image = img, |
| 182 width = img:width(), | 159 width = img:width(), |
| 183 height = img:height(), | 160 height = img:height(), |
| 184 draw = function (self, canvas, x, y, paint) | 161 draw = function (self, canvas, x, y, paint) |
| 185 canvas:drawImage(self.image, x, y, paint) | 162 canvas:drawImage(self.image, x, y, paint) |
| 186 end | 163 end |
| 187 } | 164 } |
| 188 end | 165 end |
| 189 | 166 |
| 167 function convert_to_picture_drawable(slide) |
| 168 local rec = Sk.newPictureRecorder() |
| 169 drawSlide(rec:beginRecording(640, 480), slide, gTemplate) |
| 170 return new_drawable_picture(rec:endRecording()) |
| 171 end |
| 172 |
| 173 function convert_to_image_drawable(slide) |
| 174 local surf = Sk.newRasterSurface(640, 480) |
| 175 drawSlide(surf:getCanvas(), slide, gTemplate) |
| 176 return new_drawable_image(surf:newImageSnapshot()) |
| 177 end |
| 178 |
| 190 function new_drawable_slide(slide) | 179 function new_drawable_slide(slide) |
| 191 return { | 180 return { |
| 192 slide = slide, | 181 slide = slide, |
| 193 draw = function (self, canvas, x, y, paint) | 182 draw = function (self, canvas, x, y, paint) |
| 194 if (nil == paint or ("number" == type(paint) and (1 == paint))) then | 183 if (nil == paint or ("number" == type(paint) and (1 == paint))) then |
| 195 canvas:save() | 184 canvas:save() |
| 196 else | 185 else |
| 197 canvas:saveLayer(paint) | 186 canvas:saveLayer(paint) |
| 198 end | 187 end |
| 199 canvas:translate(x, y) | 188 canvas:translate(x, y) |
| 200 drawSlide(canvas, self.slide, gTemplate) | 189 drawSlide(canvas, self.slide, gTemplate) |
| 201 canvas:restore() | 190 canvas:restore() |
| 202 end | 191 end |
| 203 } | 192 } |
| 204 end | 193 end |
| 205 | 194 |
| 195 gNewDrawableFactory = { |
| 196 default = new_drawable_slide, |
| 197 picture = convert_to_picture_drawable, |
| 198 image = convert_to_image_drawable, |
| 199 } |
| 200 |
| 201 ----------------------------------------------------------------------------- |
| 202 |
| 206 function next_slide() | 203 function next_slide() |
| 207 local prev = gSlides[gSlideIndex] | 204 local prev = gSlides[gSlideIndex] |
| 208 | 205 |
| 209 if gSlideIndex < #gSlides then | 206 if gSlideIndex < #gSlides then |
| 210 gSlideIndex = gSlideIndex + 1 | 207 gSlideIndex = gSlideIndex + 1 |
| 211 spawn_transition(prev, gSlides[gSlideIndex], true) | 208 spawn_transition(prev, gSlides[gSlideIndex], true) |
| 212 end | 209 end |
| 213 end | 210 end |
| 214 | 211 |
| 215 function prev_slide() | 212 function prev_slide() |
| 216 local prev = gSlides[gSlideIndex] | 213 local prev = gSlides[gSlideIndex] |
| 217 | 214 |
| 218 if gSlideIndex > 1 then | 215 if gSlideIndex > 1 then |
| 219 gSlideIndex = gSlideIndex - 1 | 216 gSlideIndex = gSlideIndex - 1 |
| 220 spawn_transition(prev, gSlides[gSlideIndex], false) | 217 spawn_transition(prev, gSlides[gSlideIndex], false) |
| 221 end | 218 end |
| 222 end | 219 end |
| 223 | 220 |
| 224 function convert_to_picture_drawable(slide) | 221 gDrawableType = "default" |
| 225 local rec = Sk.newPictureRecorder() | |
| 226 drawSlide(rec:beginRecording(640, 480), slide, gTemplate) | |
| 227 return new_drawable_picture(rec:endRecording()) | |
| 228 end | |
| 229 | |
| 230 function convert_to_image_drawable(slide) | |
| 231 local surf = Sk.newRasterSurface(640, 480) | |
| 232 drawSlide(surf:getCanvas(), slide, gTemplate) | |
| 233 return new_drawable_image(surf:newImageSnapshot()) | |
| 234 end | |
| 235 | |
| 236 gMakeDrawable = new_drawable_slide | |
| 237 | 222 |
| 238 load_file("slides_transitions") | 223 load_file("slides_transitions") |
| 239 | 224 |
| 240 function spawn_transition(prevSlide, nextSlide, is_forward) | 225 function spawn_transition(prevSlide, nextSlide, is_forward) |
| 241 local transition | 226 local transition |
| 242 if is_forward then | 227 if is_forward then |
| 243 transition = gTransitionTable[nextSlide.transition] | 228 transition = gTransitionTable[nextSlide.transition] |
| 244 else | 229 else |
| 245 transition = gTransitionTable[prevSlide.transition] | 230 transition = gTransitionTable[prevSlide.transition] |
| 246 end | 231 end |
| 247 | 232 |
| 248 if not transition then | 233 if not transition then |
| 249 transition = fade_slide_transition | 234 transition = fade_slide_transition |
| 250 end | 235 end |
| 251 | 236 |
| 252 local prevDrawable = gMakeDrawable(prevSlide) | 237 local prevDrawable = gNewDrawableFactory[gDrawableType](prevSlide) |
| 253 local nextDrawable = gMakeDrawable(nextSlide) | 238 local nextDrawable = gNewDrawableFactory[gDrawableType](nextSlide) |
| 254 gCurrAnimation = transition(prevDrawable, nextDrawable, is_forward) | 239 gCurrAnimation = transition(prevDrawable, nextDrawable, is_forward) |
| 255 end | 240 end |
| 256 | 241 |
| 257 --------------------------------------------------------------------------------
------ | 242 --------------------------------------------------------------------------------
------ |
| 258 | 243 |
| 259 function spawn_rotate_animation() | 244 function spawn_rotate_animation() |
| 260 gCurrAnimation = { | 245 gCurrAnimation = { |
| 261 angle = 0, | 246 angle = 0, |
| 262 angle_delta = 5, | 247 angle_delta = 5, |
| 263 pivot_x = 320, | 248 pivot_x = 320, |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 345 | 330 |
| 346 local keyProcs = { | 331 local keyProcs = { |
| 347 n = next_slide, | 332 n = next_slide, |
| 348 p = prev_slide, | 333 p = prev_slide, |
| 349 r = spawn_rotate_animation, | 334 r = spawn_rotate_animation, |
| 350 s = spawn_scale_animation, | 335 s = spawn_scale_animation, |
| 351 ["="] = function () scale_text_delta(gTemplate, 1) end, | 336 ["="] = function () scale_text_delta(gTemplate, 1) end, |
| 352 ["-"] = function () scale_text_delta(gTemplate, -1) end, | 337 ["-"] = function () scale_text_delta(gTemplate, -1) end, |
| 353 | 338 |
| 354 b = function () gShowBounds = not gShowBounds end, | 339 b = function () gShowBounds = not gShowBounds end, |
| 340 B = function () gUseBlurInTransitions = not gUseBlurInTransitions end, |
| 341 |
| 342 ["1"] = function () gDrawableType = "default" end, |
| 343 ["2"] = function () gDrawableType = "picture" end, |
| 344 ["3"] = function () gDrawableType = "image" end, |
| 355 } | 345 } |
| 356 | 346 |
| 357 function onCharHandler(uni) | 347 function onCharHandler(uni) |
| 358 local proc = keyProcs[uni] | 348 local proc = keyProcs[uni] |
| 359 if proc then | 349 if proc then |
| 360 proc() | 350 proc() |
| 361 return true | 351 return true |
| 362 end | 352 end |
| 363 return false | 353 return false |
| 364 end | 354 end |
| OLD | NEW |