aboutsummaryrefslogtreecommitdiffhomepage
path: root/resources
diff options
context:
space:
mode:
authorGravatar reed <reed@chromium.org>2014-10-11 11:28:07 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-10-11 11:28:07 -0700
commit18ea777638f1494b068ba4ca1a5d6725a0e80cf1 (patch)
tree5008c512d24cd5ea270799603371fe3b50b8057b /resources
parent09445a4f7fe6c8cd8cfe172ce160af7007738490 (diff)
allow for lua click handlers
BUG=skia: TBR= Review URL: https://codereview.chromium.org/649013002
Diffstat (limited to 'resources')
-rw-r--r--resources/slides.lua108
-rw-r--r--resources/test.lua2
2 files changed, 110 insertions, 0 deletions
diff --git a/resources/slides.lua b/resources/slides.lua
new file mode 100644
index 0000000000..2f44e78e1b
--- /dev/null
+++ b/resources/slides.lua
@@ -0,0 +1,108 @@
+
+function make_paint(size, color)
+ local paint = Sk.newPaint();
+ paint:setAntiAlias(true)
+ paint:setTextSize(size)
+ paint:setColor(color)
+ return paint
+end
+
+function find_paint(paints, style)
+ if not style then
+ style = "child"
+ end
+ local paint = paints[style]
+ return paint
+end
+
+function draw_node(canvas, node, x, y, paints)
+ if node.text then
+ local paint = find_paint(paints, node.style)
+ canvas:drawText(node.text, x, y, paint)
+ end
+ if node.draw then
+ node.draw(canvas)
+ end
+end
+
+function drawSlide(canvas, slide, template, paints)
+ draw_node(canvas, slide, template.title.x, template.title.y, paints)
+
+ if slide.children then
+ local x = template.child.x
+ local y = template.child.y
+ local dy = template.child.dy
+ for i = 1, #slide.children do
+ draw_node(canvas, slide.children[i], x, y, paints)
+ y = y + dy
+ end
+ end
+end
+
+--------------------------------------------------------------------------------------
+
+gTemplate = {
+ title = { x = 10, y = 64, textSize = 64 },
+ child = { x = 40, y = 120, dy = 50, textSize = 40 },
+}
+
+gPaints = {}
+gPaints.title = make_paint(gTemplate.title.textSize, { a=1, r=0, g=0, b=0 } )
+gPaints.child = make_paint(gTemplate.child.textSize, { a=.75, r=0, g=0, b=0 } )
+
+gRedPaint = Sk.newPaint()
+gRedPaint:setAntiAlias(true)
+gRedPaint:setColor{a=1, r=1, g=0, b=0 }
+
+gSlides = {
+ { text = "Title1", style="title", color = { a=1, r=1, g=0, b=0 },
+ children = {
+ { text = "bullet 1", style = "child" },
+ { text = "bullet 2", style = "child" },
+ { text = "bullet 3", style = "child" },
+ { draw = function (canvas)
+ canvas:drawOval({left=300, top=300, right=400, bottom=400}, gRedPaint)
+ end },
+ },
+ },
+ { text = "Title2", style="title", color = { a=1, r=0, g=1, b=0 },
+ children = {
+ { text = "bullet uno", style = "child" },
+ { text = "bullet 2", style = "child" },
+ { text = "bullet tres", style = "child" },
+ }
+ },
+ { text = "Title3", style="title",
+ children = {
+ { text = "bullet 1", style = "child", },
+ { text = "bullet 2", style = "child", color = { r=0, g=0, b=1 } },
+ { text = "bullet 3", style = "child" },
+ }
+ }
+}
+
+gSlideIndex = 1
+
+--------------------------------------------------------------------------------------
+
+function onDrawContent(canvas)
+ drawSlide(canvas, gSlides[gSlideIndex], gTemplate, gPaints)
+
+ return false -- we're not animating
+end
+
+function onClickHandler(x, y)
+ if x < 100 and y < 100 then
+ onNextSlide()
+ return true
+ end
+ return false
+end
+
+function onNextSlide()
+ gSlideIndex = gSlideIndex + 1
+ if gSlideIndex > #gSlides then
+ gSlideIndex = 1
+ end
+end
+
diff --git a/resources/test.lua b/resources/test.lua
index 84d3517ae6..1029db41ed 100644
--- a/resources/test.lua
+++ b/resources/test.lua
@@ -69,6 +69,8 @@ function onDrawContent(canvas)
r2.bottom = r2.top + image:height() * 1;
canvas:drawImageRect(image, nil, r2, 0.75);
if x > 200 then x = 0 end;
+
+ return true -- so we can animate
end
onStartup()