| Index: resources/slides.lua
 | 
| diff --git a/resources/slides.lua b/resources/slides.lua
 | 
| index a4de5b74d6a20b37f7bd06ab994f04afc01f1993..b2c9b902c311b6ef3198980428bbbf452b417907 100644
 | 
| --- a/resources/slides.lua
 | 
| +++ b/resources/slides.lua
 | 
| @@ -138,8 +138,18 @@ function slide_transition(prev, next, is_forward)
 | 
|      return rec
 | 
|  end
 | 
|  
 | 
| +function sqr(value) return value * value end
 | 
| +
 | 
| +function ease(value) 
 | 
| +function set_blur(paint, alpha)
 | 
| +    local sigma = sqr(1 - alpha) * 20
 | 
| +--    paint:setImageFilter(Sk.newBlurImageFilter(sigma, sigma))
 | 
| +    paint:setAlpha(alpha)
 | 
| +end
 | 
| +
 | 
|  function fade_slide_transition(prev, next, is_forward)
 | 
|      local rec = {
 | 
| +        paint = Sk.newPaint(),
 | 
|          prevDrawable = prev,
 | 
|          nextDrawable = next,
 | 
|          proc = function(self, canvas, drawSlideProc)
 | 
| @@ -147,8 +157,12 @@ function fade_slide_transition(prev, next, is_forward)
 | 
|                  drawSlideProc(canvas)
 | 
|                  return nil
 | 
|              end
 | 
| -            self.prevDrawable:draw(canvas, self.prev_x, 0, self.prev_a)
 | 
| -            self.nextDrawable:draw(canvas, self.next_x, 0, self.next_a)
 | 
| +
 | 
| +            set_blur(self.paint, self.prev_a)
 | 
| +            self.prevDrawable:draw(canvas, self.prev_x, 0, self.paint)
 | 
| +
 | 
| +            set_blur(self.paint, self.next_a)
 | 
| +            self.nextDrawable:draw(canvas, self.next_x, 0, self.paint)
 | 
|              self:step()
 | 
|              return self
 | 
|          end
 | 
| @@ -263,6 +277,20 @@ function new_drawable_image(img)
 | 
|      }
 | 
|  end
 | 
|  
 | 
| +function convert_to_picture_drawable(slide)
 | 
| +    local rec = Sk.newPictureRecorder()
 | 
| +    drawSlide(rec:beginRecording(640, 480), slide, gTemplate)
 | 
| +    return new_drawable_picture(rec:endRecording())
 | 
| +end
 | 
| +
 | 
| +function convert_to_image_drawable(slide)
 | 
| +    local surf = Sk.newRasterSurface(640, 480)
 | 
| +    drawSlide(surf:getCanvas(), slide, gTemplate)
 | 
| +    return new_drawable_image(surf:newImageSnapshot())
 | 
| +end
 | 
| +
 | 
| +gMakeDrawable = convert_to_picture_drawable
 | 
| +
 | 
|  function spawn_transition(prevSlide, nextSlide, is_forward)
 | 
|      local transition
 | 
|      if is_forward then
 | 
| @@ -275,14 +303,8 @@ function spawn_transition(prevSlide, nextSlide, is_forward)
 | 
|          transition = fade_slide_transition
 | 
|      end
 | 
|  
 | 
| -    local rec = Sk.newPictureRecorder()
 | 
| -
 | 
| -    drawSlide(rec:beginRecording(640, 480), prevSlide, gTemplate)
 | 
| -    local prevDrawable = new_drawable_picture(rec:endRecording())
 | 
| -
 | 
| -    drawSlide(rec:beginRecording(640, 480), nextSlide, gTemplate)
 | 
| -    local nextDrawable = new_drawable_picture(rec:endRecording())
 | 
| -
 | 
| +    local prevDrawable = gMakeDrawable(prevSlide)
 | 
| +    local nextDrawable = gMakeDrawable(nextSlide)
 | 
|      gCurrAnimation = transition(prevDrawable, nextDrawable, is_forward)
 | 
|  end
 | 
|  
 | 
| 
 |