| Index: resources/slides.lua
|
| diff --git a/resources/slides.lua b/resources/slides.lua
|
| index 6123ba8e67f5da29512034a30dd49891afe5e2a9..29ca8d13add98cdf279ef13ad3c03ca38becbe31 100644
|
| --- a/resources/slides.lua
|
| +++ b/resources/slides.lua
|
| @@ -47,21 +47,21 @@ function slide_transition(prev, next, is_forward)
|
| drawSlideProc(canvas)
|
| return nil
|
| end
|
| - canvas:drawImage(self.prevImage, self.curr_x, 0)
|
| - canvas:drawImage(self.nextImage, self.curr_x + 640, 0)
|
| + self.prevDrawable:draw(canvas, self.curr_x, 0)
|
| + self.nextDrawable:draw(canvas, self.curr_x + 640, 0)
|
| self.curr_x = self.curr_x + self.step_x
|
| return self
|
| end
|
| }
|
| if is_forward then
|
| - rec.prevImage = prev
|
| - rec.nextImage = next
|
| + rec.prevDrawable = prev
|
| + rec.nextDrawable = next
|
| rec.curr_x = 0
|
| rec.step_x = -15
|
| rec.isDone = function (self) return self.curr_x <= -640 end
|
| else
|
| - rec.prevImage = next
|
| - rec.nextImage = prev
|
| + rec.prevDrawable = next
|
| + rec.nextDrawable = prev
|
| rec.curr_x = -640
|
| rec.step_x = 15
|
| rec.isDone = function (self) return self.curr_x >= 0 end
|
| @@ -71,15 +71,15 @@ end
|
|
|
| function fade_slide_transition(prev, next, is_forward)
|
| local rec = {
|
| - prevImage = prev,
|
| - nextImage = next,
|
| + prevDrawable = prev,
|
| + nextDrawable = next,
|
| proc = function(self, canvas, drawSlideProc)
|
| if self:isDone() then
|
| drawSlideProc(canvas)
|
| return nil
|
| end
|
| - canvas:drawImage(self.prevImage, self.prev_x, 0, self.prev_a)
|
| - canvas:drawImage(self.nextImage, self.next_x, 0, self.next_a)
|
| + self.prevDrawable:draw(canvas, self.prev_x, 0, self.prev_a)
|
| + self.nextDrawable:draw(canvas, self.next_x, 0, self.next_a)
|
| self:step()
|
| return self
|
| end
|
| @@ -205,7 +205,27 @@ function prev_slide()
|
| spawn_transition(prev, gSlides[gSlideIndex], false)
|
| end
|
|
|
| -gSurfaceFactory = function (w, h) return Sk.newRasterSurface(w, h) end
|
| +function new_drawable_picture(pic)
|
| + return {
|
| + picture = pic,
|
| + width = pic:width(),
|
| + height = pic:height(),
|
| + draw = function (self, canvas, x, y, paint)
|
| + canvas:drawPicture(self.picture, x, y, paint)
|
| + end
|
| + }
|
| +end
|
| +
|
| +function new_drawable_image(img)
|
| + return {
|
| + image = img,
|
| + width = img:width(),
|
| + height = img:height(),
|
| + draw = function (self, canvas, x, y, paint)
|
| + canvas:drawImage(self.image, x, y, paint)
|
| + end
|
| + }
|
| +end
|
|
|
| function spawn_transition(prevSlide, nextSlide, is_forward)
|
| local transition
|
| @@ -219,18 +239,15 @@ function spawn_transition(prevSlide, nextSlide, is_forward)
|
| return
|
| end
|
|
|
| - local surf = gSurfaceFactory(640, 480)
|
| - local canvas = surf:getCanvas()
|
| + local rec = Sk.newPictureRecorder()
|
|
|
| - canvas:clear()
|
| - drawSlide(canvas, prevSlide, gTemplate, gPaints)
|
| - local prevImage = surf:newImageSnapshot()
|
| + drawSlide(rec:beginRecording(640, 480), prevSlide, gTemplate, gPaints)
|
| + local prevDrawable = new_drawable_picture(rec:endRecording())
|
|
|
| - canvas:clear()
|
| - drawSlide(canvas, nextSlide, gTemplate, gPaints)
|
| - local nextImage = surf:newImageSnapshot()
|
| + drawSlide(rec:beginRecording(640, 480), nextSlide, gTemplate, gPaints)
|
| + local nextDrawable = new_drawable_picture(rec:endRecording())
|
|
|
| - gCurrAnimation = transition(prevImage, nextImage, is_forward)
|
| + gCurrAnimation = transition(prevDrawable, nextDrawable, is_forward)
|
| end
|
|
|
| --------------------------------------------------------------------------------------
|
|
|