Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Side by Side Diff: resources/slides.lua

Issue 648083002: add canvas:clear to lua (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | src/utils/SkLua.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 function make_paint(size, color) 2 function make_paint(size, color)
3 local paint = Sk.newPaint(); 3 local paint = Sk.newPaint();
4 paint:setAntiAlias(true) 4 paint:setAntiAlias(true)
5 paint:setSubpixelText(true) 5 paint:setSubpixelText(true)
6 paint:setTextSize(size) 6 paint:setTextSize(size)
7 paint:setColor(color) 7 paint:setColor(color)
8 return paint 8 return paint
9 end 9 end
10 10
(...skipping 22 matching lines...) Expand all
33 local x = template.child.x 33 local x = template.child.x
34 local y = template.child.y 34 local y = template.child.y
35 local dy = template.child.dy 35 local dy = template.child.dy
36 for i = 1, #slide.children do 36 for i = 1, #slide.children do
37 draw_node(canvas, slide.children[i], x, y, paints) 37 draw_node(canvas, slide.children[i], x, y, paints)
38 y = y + dy 38 y = y + dy
39 end 39 end
40 end 40 end
41 end 41 end
42 42
43 function slide_transition(prev, next, is_forward)
44 local rec = {
45 proc = function(self, canvas, drawSlideProc)
46 if self:isDone() then
47 drawSlideProc(canvas)
48 return nil
49 end
50 canvas:drawImage(self.prevImage, self.curr_x, 0)
51 canvas:drawImage(self.nextImage, self.curr_x + 640, 0)
52 self.curr_x = self.curr_x + self.step_x
53 return self
54 end
55 }
56 if is_forward then
57 rec.prevImage = prev
58 rec.nextImage = next
59 rec.curr_x = 0
60 rec.step_x = -15
61 rec.isDone = function (self) return self.curr_x <= -640 end
62 else
63 rec.prevImage = next
64 rec.nextImage = prev
65 rec.curr_x = -640
66 rec.step_x = 15
67 rec.isDone = function (self) return self.curr_x >= 0 end
68 end
69 return rec
70 end
71
43 -------------------------------------------------------------------------------- ------ 72 -------------------------------------------------------------------------------- ------
44 73
45 gTemplate = { 74 gTemplate = {
46 title = { x = 10, y = 64, textSize = 64 }, 75 title = { x = 10, y = 64, textSize = 64 },
47 child = { x = 40, y = 120, dy = 50, textSize = 40 }, 76 child = { x = 40, y = 120, dy = 50, textSize = 40 },
48 } 77 }
49 78
50 gPaints = {} 79 gPaints = {}
51 gPaints.title = make_paint(gTemplate.title.textSize, { a=1, r=0, g=0, b=0 } ) 80 gPaints.title = make_paint(gTemplate.title.textSize, { a=1, r=0, g=0, b=0 } )
52 gPaints.child = make_paint(gTemplate.child.textSize, { a=.75, r=0, g=0, b=0 } ) 81 gPaints.child = make_paint(gTemplate.child.textSize, { a=.75, r=0, g=0, b=0 } )
53 82
54 gRedPaint = Sk.newPaint() 83 gRedPaint = Sk.newPaint()
55 gRedPaint:setAntiAlias(true) 84 gRedPaint:setAntiAlias(true)
56 gRedPaint:setColor{a=1, r=1, g=0, b=0 } 85 gRedPaint:setColor{a=1, r=1, g=0, b=0 }
57 86
58 gSlides = { 87 gSlides = {
59 { text = "Title1", style="title", color = { a=1, r=1, g=0, b=0 }, 88 { text = "Title1", style="title", color = { a=1, r=1, g=0, b=0 },
60 children = { 89 children = {
61 { text = "bullet 1", style = "child" }, 90 { text = "bullet 1", style = "child" },
62 { text = "bullet 2", style = "child" }, 91 { text = "bullet 2", style = "child" },
63 { text = "bullet 3", style = "child" }, 92 { text = "bullet 3", style = "child" },
64 { draw = function (canvas) 93 { draw = function (canvas)
65 canvas:drawOval({left=300, top=300, right=400, bottom=400}, gRedPaint) 94 canvas:drawOval({left=300, top=300, right=400, bottom=400}, gRedPaint)
66 end }, 95 end },
67 }, 96 },
97 transition = slide_transition
68 }, 98 },
69 { text = "Title2", style="title", color = { a=1, r=0, g=1, b=0 }, 99 { text = "Title2", style="title", color = { a=1, r=0, g=1, b=0 },
70 children = { 100 children = {
71 { text = "bullet uno", style = "child" }, 101 { text = "bullet uno", style = "child" },
72 { text = "bullet 2", style = "child" }, 102 { text = "bullet 2", style = "child" },
73 { text = "bullet tres", style = "child" }, 103 { text = "bullet tres", style = "child" },
74 } 104 },
105 transition = fade_transition
75 }, 106 },
76 { text = "Title3", style="title", 107 { text = "Title3", style="title",
77 children = { 108 children = {
78 { text = "bullet 1", style = "child", }, 109 { text = "bullet 1", style = "child", },
79 { text = "bullet 2", style = "child", color = { r=0, g=0, b=1 } }, 110 { text = "bullet 2", style = "child", color = { r=0, g=0, b=1 } },
80 { text = "bullet 3", style = "child" }, 111 { text = "bullet 3", style = "child" },
81 } 112 }
82 } 113 }
83 } 114 }
84 115
85 -------------------------------------------------------------------------------- ------ 116 -------------------------------------------------------------------------------- ------
86 117 function tostr(t)
87 gSlideIndex = 1 118 local str = ""
88 119 for k, v in next, t do
89 function next_slide() 120 if #str > 0 then
90 gSlideIndex = gSlideIndex + 1 121 str = str .. ", "
91 if gSlideIndex > #gSlides then 122 end
92 gSlideIndex = 1 123 if type(k) == "number" then
124 str = str .. "[" .. k .. "] = "
125 else
126 str = str .. tostring(k) .. " = "
127 end
128 if type(v) == "table" then
129 str = str .. "{ " .. tostr(v) .. " }"
130 else
131 str = str .. tostring(v)
132 end
93 end 133 end
134 return str
94 end 135 end
95 136
96 function prev_slide()
97 gSlideIndex = gSlideIndex - 1
98 if gSlideIndex < 1 then
99 gSlideIndex = #gSlides
100 end
101 end
102
103 -------------------------------------------------------------------------------- ------
104
105 -- animation.proc is passed the canvas before drawing. 137 -- animation.proc is passed the canvas before drawing.
106 -- The animation.proc returns itself or another animation (which means keep anim ating) 138 -- The animation.proc returns itself or another animation (which means keep anim ating)
107 -- or it returns nil, which stops the animation. 139 -- or it returns nil, which stops the animation.
108 -- 140 --
109 local gCurrAnimation 141 local gCurrAnimation
110 142
143 gSlideIndex = 1
144
145 function next_slide()
146 local prev = gSlides[gSlideIndex]
147
148 gSlideIndex = gSlideIndex + 1
149 if gSlideIndex > #gSlides then
150 gSlideIndex = 1
151 end
152
153 spawn_transition(prev, gSlides[gSlideIndex], true)
154 end
155
156 function prev_slide()
157 local prev = gSlides[gSlideIndex]
158
159 gSlideIndex = gSlideIndex - 1
160 if gSlideIndex < 1 then
161 gSlideIndex = #gSlides
162 end
163
164 spawn_transition(prev, gSlides[gSlideIndex], false)
165 end
166
167 gSurfaceFactory = function (w, h) return Sk.newRasterSurface(w, h) end
168
169 function spawn_transition(prevSlide, nextSlide, is_forward)
170 local transition
171 if is_forward then
172 transition = prevSlide.transition
173 else
174 transition = nextSlide.transition
175 end
176
177 if not transition then
178 return
179 end
180
181 local surf = gSurfaceFactory(640, 480)
182 local canvas = surf:getCanvas()
183
184 canvas:clear()
185 drawSlide(canvas, prevSlide, gTemplate, gPaints)
186 local prevImage = surf:newImageSnapshot()
187
188 canvas:clear()
189 drawSlide(canvas, nextSlide, gTemplate, gPaints)
190 local nextImage = surf:newImageSnapshot()
191
192 gCurrAnimation = transition(prevImage, nextImage, is_forward)
193 end
194
195 -------------------------------------------------------------------------------- ------
196
111 function spawn_rotate_animation() 197 function spawn_rotate_animation()
112 gCurrAnimation = { 198 gCurrAnimation = {
113 angle = 0, 199 angle = 0,
114 angle_delta = 5, 200 angle_delta = 5,
115 pivot_x = 320, 201 pivot_x = 320,
116 pivot_y = 240, 202 pivot_y = 240,
117 proc = function (this, canvas) 203 proc = function (self, canvas, drawSlideProc)
118 if this.angle >= 360 then 204 if self.angle >= 360 then
205 drawSlideProc(canvas)
119 return nil 206 return nil
120 end 207 end
121 canvas:translate(this.pivot_x, this.pivot_y) 208 canvas:translate(self.pivot_x, self.pivot_y)
122 canvas:rotate(this.angle) 209 canvas:rotate(self.angle)
123 canvas:translate(-this.pivot_x, -this.pivot_y) 210 canvas:translate(-self.pivot_x, -self.pivot_y)
211 drawSlideProc(canvas)
124 212
125 this.angle = this.angle + this.angle_delta 213 self.angle = self.angle + self.angle_delta
126 return this 214 return self
127 end 215 end
128 } 216 }
129 end 217 end
130 218
131 function spawn_scale_animation() 219 function spawn_scale_animation()
132 gCurrAnimation = { 220 gCurrAnimation = {
133 scale = 1, 221 scale = 1,
134 scale_delta = .95, 222 scale_delta = .95,
135 scale_limit = 0.2, 223 scale_limit = 0.2,
136 pivot_x = 320, 224 pivot_x = 320,
137 pivot_y = 240, 225 pivot_y = 240,
138 proc = function (this, canvas) 226 proc = function (self, canvas, drawSlideProc)
139 if this.scale < this.scale_limit then 227 if self.scale < self.scale_limit then
140 this.scale = this.scale_limit 228 self.scale = self.scale_limit
141 this.scale_delta = 1 / this.scale_delta 229 self.scale_delta = 1 / self.scale_delta
142 end 230 end
143 if this.scale > 1 then 231 if self.scale > 1 then
232 drawSlideProc(canvas)
144 return nil 233 return nil
145 end 234 end
146 canvas:translate(this.pivot_x, this.pivot_y) 235 canvas:translate(self.pivot_x, self.pivot_y)
147 canvas:scale(this.scale, this.scale) 236 canvas:scale(self.scale, self.scale)
148 canvas:translate(-this.pivot_x, -this.pivot_y) 237 canvas:translate(-self.pivot_x, -self.pivot_y)
238 drawSlideProc(canvas)
149 239
150 this.scale = this.scale * this.scale_delta 240 self.scale = self.scale * self.scale_delta
151 return this 241 return self
152 end 242 end
153 } 243 }
154 end 244 end
155 245
156 function onDrawContent(canvas) 246 function onDrawContent(canvas)
157 if gCurrAnimation then 247 local drawSlideProc = function(canvas)
158 gCurrAnimation = gCurrAnimation:proc(canvas) 248 drawSlide(canvas, gSlides[gSlideIndex], gTemplate, gPaints)
159 end 249 end
160 250
161 drawSlide(canvas, gSlides[gSlideIndex], gTemplate, gPaints)
162
163 if gCurrAnimation then 251 if gCurrAnimation then
252 gCurrAnimation = gCurrAnimation:proc(canvas, drawSlideProc)
164 return true 253 return true
165 else 254 else
255 drawSlideProc(canvas)
166 return false 256 return false
167 end 257 end
168 end 258 end
169 259
170 function onClickHandler(x, y) 260 function onClickHandler(x, y)
171 return false 261 return false
172 end 262 end
173 263
174 local keyProcs = { 264 local keyProcs = {
175 n = next_slide, 265 n = next_slide,
176 p = prev_slide, 266 p = prev_slide,
177 r = spawn_rotate_animation, 267 r = spawn_rotate_animation,
178 s = spawn_scale_animation, 268 s = spawn_scale_animation,
179 } 269 }
180 270
181 function onCharHandler(uni) 271 function onCharHandler(uni)
182 local proc = keyProcs[uni] 272 local proc = keyProcs[uni]
183 if proc then 273 if proc then
184 proc() 274 proc()
185 return true 275 return true
186 end 276 end
187 return false 277 return false
188 end 278 end
OLDNEW
« no previous file with comments | « no previous file | src/utils/SkLua.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698