Index: resources/slides.lua |
diff --git a/resources/slides.lua b/resources/slides.lua |
index 419e812cfd3b6393834120854b29ca95afb4a4d6..30f146d766eb52d92f4fdc32ddd36f5a040a50c5 100644 |
--- a/resources/slides.lua |
+++ b/resources/slides.lua |
@@ -1,78 +1,12 @@ |
-function tostr(t) |
- local str = "" |
- for k, v in next, t do |
- if #str > 0 then |
- str = str .. ", " |
- end |
- if type(k) == "number" then |
- str = str .. "[" .. k .. "] = " |
- else |
- str = str .. tostring(k) .. " = " |
- end |
- if type(v) == "table" then |
- str = str .. "{ " .. tostr(v) .. " }" |
- elseif type(v) == "string" then |
- str = str .. '"' .. v .. '"' |
- else |
- str = str .. tostring(v) |
- end |
- end |
- return str |
-end |
+gPath = "/skia/trunk/resources/" |
-function trim_ws(s) |
- return s:match("^%s*(.*)") |
+function load_file(file) |
+ package.path = package.path .. ";" .. gPath .. file .. ".lua" |
+ require(file) |
end |
-function count_hypens(s) |
- local leftover = s:match("^-*(.*)") |
- return string.len(s) - string.len(leftover) |
-end |
- |
-function parse_file(file) |
- local slides = {} |
- local block = {} |
- |
- for line in file:lines() do |
- local s = trim_ws(line) |
- if #s == 0 then -- done with a block |
- if #block > 0 then |
- slides[#slides + 1] = block |
- block = {} |
- end |
- else |
- local n = count_hypens(s) |
- block[#block + 1] = { |
- indent = n, |
- text = trim_ws(s:sub(n + 1, -1)) |
- } |
- end |
- end |
- return slides |
-end |
- |
-function pretty_print_slide(slide) |
- io.write("{\n") |
- for i = 1, #slide do |
- local node = slide[i] |
- for j = 0, node.indent do |
- io.write(" ") |
- end |
- io.write("{ ") |
- io.write(tostr(node)) |
- io.write(" },\n") |
- end |
- io.write("},\n") |
-end |
- |
-function pretty_print_slides(slides) |
- io.write("gSlides = {\n") |
- for i = 1, #slides do |
- pretty_print_slide(slides[i]) |
- end |
- io.write("}\n") |
-end |
+load_file("slides_utils") |
gSlides = parse_file(io.open("/skia/trunk/resources/slides_content.lua", "r")) |
@@ -151,7 +85,7 @@ function sqr(value) return value * value end |
function set_blur(paint, alpha) |
local sigma = sqr(1 - alpha) * 20 |
- paint:setImageFilter(Sk.newBlurImageFilter(sigma, sigma)) |
+-- paint:setImageFilter(Sk.newBlurImageFilter(sigma, sigma)) |
paint:setAlpha(alpha) |
end |
@@ -244,28 +178,6 @@ local gCurrAnimation |
gSlideIndex = 1 |
-function next_slide() |
- local prev = gSlides[gSlideIndex] |
- |
- gSlideIndex = gSlideIndex + 1 |
- if gSlideIndex > #gSlides then |
- gSlideIndex = 1 |
- end |
- |
- spawn_transition(prev, gSlides[gSlideIndex], true) |
-end |
- |
-function prev_slide() |
- local prev = gSlides[gSlideIndex] |
- |
- gSlideIndex = gSlideIndex - 1 |
- if gSlideIndex < 1 then |
- gSlideIndex = #gSlides |
- end |
- |
- spawn_transition(prev, gSlides[gSlideIndex], false) |
-end |
- |
function new_drawable_picture(pic) |
return { |
picture = pic, |
@@ -288,6 +200,44 @@ function new_drawable_image(img) |
} |
end |
+function new_drawable_slide(slide) |
+ return { |
+ slide = slide, |
+ draw = function (self, canvas, x, y, paint) |
+ if (nil == paint or ("number" == type(paint) and (1 == paint))) then |
+ canvas:save() |
+ else |
+ canvas:saveLayer(paint) |
+ end |
+ canvas:translate(x, y) |
+ drawSlide(canvas, self.slide, gTemplate) |
+ canvas:restore() |
+ end |
+ } |
+end |
+ |
+function next_slide() |
+ local prev = gSlides[gSlideIndex] |
+ |
+ gSlideIndex = gSlideIndex + 1 |
+ if gSlideIndex > #gSlides then |
+ gSlideIndex = 1 |
+ end |
+ |
+ spawn_transition(prev, gSlides[gSlideIndex], true) |
+end |
+ |
+function prev_slide() |
+ local prev = gSlides[gSlideIndex] |
+ |
+ gSlideIndex = gSlideIndex - 1 |
+ if gSlideIndex < 1 then |
+ gSlideIndex = #gSlides |
+ end |
+ |
+ spawn_transition(prev, gSlides[gSlideIndex], false) |
+end |
+ |
function convert_to_picture_drawable(slide) |
local rec = Sk.newPictureRecorder() |
drawSlide(rec:beginRecording(640, 480), slide, gTemplate) |
@@ -300,7 +250,8 @@ function convert_to_image_drawable(slide) |
return new_drawable_image(surf:newImageSnapshot()) |
end |
-gMakeDrawable = convert_to_picture_drawable |
+-- gMakeDrawable = convert_to_picture_drawable |
+gMakeDrawable = new_drawable_slide |
function spawn_transition(prevSlide, nextSlide, is_forward) |
local transition |