OLD | NEW |
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:setTextSize(size) | 6 paint:setTextSize(size) |
6 paint:setColor(color) | 7 paint:setColor(color) |
7 return paint | 8 return paint |
8 end | 9 end |
9 | 10 |
10 function find_paint(paints, style) | 11 function find_paint(paints, style) |
11 if not style then | 12 if not style then |
12 style = "child" | 13 style = "child" |
13 end | 14 end |
14 local paint = paints[style] | 15 local paint = paints[style] |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 }, | 75 }, |
75 { text = "Title3", style="title", | 76 { text = "Title3", style="title", |
76 children = { | 77 children = { |
77 { text = "bullet 1", style = "child", }, | 78 { text = "bullet 1", style = "child", }, |
78 { text = "bullet 2", style = "child", color = { r=0, g=0, b=1 } }, | 79 { text = "bullet 2", style = "child", color = { r=0, g=0, b=1 } }, |
79 { text = "bullet 3", style = "child" }, | 80 { text = "bullet 3", style = "child" }, |
80 } | 81 } |
81 } | 82 } |
82 } | 83 } |
83 | 84 |
| 85 --------------------------------------------------------------------------------
------ |
| 86 |
84 gSlideIndex = 1 | 87 gSlideIndex = 1 |
85 | 88 |
86 --------------------------------------------------------------------------------
------ | 89 function next_slide() |
87 | |
88 function onDrawContent(canvas) | |
89 drawSlide(canvas, gSlides[gSlideIndex], gTemplate, gPaints) | |
90 | |
91 return false -- we're not animating | |
92 end | |
93 | |
94 function onClickHandler(x, y) | |
95 if x < 100 and y < 100 then | |
96 onNextSlide() | |
97 return true | |
98 end | |
99 return false | |
100 end | |
101 | |
102 function onNextSlide() | |
103 gSlideIndex = gSlideIndex + 1 | 90 gSlideIndex = gSlideIndex + 1 |
104 if gSlideIndex > #gSlides then | 91 if gSlideIndex > #gSlides then |
105 gSlideIndex = 1 | 92 gSlideIndex = 1 |
106 end | 93 end |
107 end | 94 end |
108 | 95 |
| 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. |
| 106 -- The animation.proc returns itself or another animation (which means keep anim
ating) |
| 107 -- or it returns nil, which stops the animation. |
| 108 -- |
| 109 local gCurrAnimation |
| 110 |
| 111 function spawn_rotate_animation() |
| 112 gCurrAnimation = { |
| 113 angle = 0, |
| 114 angle_delta = 5, |
| 115 pivot_x = 320, |
| 116 pivot_y = 240, |
| 117 proc = function (this, canvas) |
| 118 if this.angle >= 360 then |
| 119 return nil |
| 120 end |
| 121 canvas:translate(this.pivot_x, this.pivot_y) |
| 122 canvas:rotate(this.angle) |
| 123 canvas:translate(-this.pivot_x, -this.pivot_y) |
| 124 |
| 125 this.angle = this.angle + this.angle_delta |
| 126 return this |
| 127 end |
| 128 } |
| 129 end |
| 130 |
| 131 function spawn_scale_animation() |
| 132 gCurrAnimation = { |
| 133 scale = 1, |
| 134 scale_delta = .95, |
| 135 scale_limit = 0.2, |
| 136 pivot_x = 320, |
| 137 pivot_y = 240, |
| 138 proc = function (this, canvas) |
| 139 if this.scale < this.scale_limit then |
| 140 this.scale = this.scale_limit |
| 141 this.scale_delta = 1 / this.scale_delta |
| 142 end |
| 143 if this.scale > 1 then |
| 144 return nil |
| 145 end |
| 146 canvas:translate(this.pivot_x, this.pivot_y) |
| 147 canvas:scale(this.scale, this.scale) |
| 148 canvas:translate(-this.pivot_x, -this.pivot_y) |
| 149 |
| 150 this.scale = this.scale * this.scale_delta |
| 151 return this |
| 152 end |
| 153 } |
| 154 end |
| 155 |
| 156 function onDrawContent(canvas) |
| 157 if gCurrAnimation then |
| 158 gCurrAnimation = gCurrAnimation:proc(canvas) |
| 159 end |
| 160 |
| 161 drawSlide(canvas, gSlides[gSlideIndex], gTemplate, gPaints) |
| 162 |
| 163 if gCurrAnimation then |
| 164 return true |
| 165 else |
| 166 return false |
| 167 end |
| 168 end |
| 169 |
| 170 function onClickHandler(x, y) |
| 171 return false |
| 172 end |
| 173 |
| 174 local keyProcs = { |
| 175 n = next_slide, |
| 176 p = prev_slide, |
| 177 r = spawn_rotate_animation, |
| 178 s = spawn_scale_animation, |
| 179 } |
| 180 |
| 181 function onCharHandler(uni) |
| 182 local proc = keyProcs[uni] |
| 183 if proc then |
| 184 proc() |
| 185 return true |
| 186 end |
| 187 return false |
| 188 end |
OLD | NEW |