}\r
\r
function factory () return function ()\r
-\r
local names = {\r
"Kick",\r
"Snare",\r
end --foreach track\r
\r
end end -- function factory\r
+\r
+\r
+function icon (params) return function (ctx, width, height)\r
+ local x = width * .5\r
+ local y = height * .5\r
+ local r = math.min (x, y) * .7\r
+ ctx:save ()\r
+ ctx:translate (x, y)\r
+ ctx:scale (1, .5)\r
+ ctx:translate (-x, -y)\r
+ ctx:arc (x, y, r, 0, 2 * math.pi)\r
+ ctx:set_source_rgba (.9, .9, 1, 1)\r
+ ctx:fill ()\r
+ ctx:arc (x, y, r, 0, math.pi)\r
+ ctx:arc_negative (x, y * 1.6, r, math.pi, 0)\r
+ ctx:set_source_rgba (.7, .7, .7, 1)\r
+ ctx:fill ()\r
+ ctx:restore ()\r
+\r
+ ctx:set_source_rgba (.6, .4, .2, 1)\r
+ ctx:translate (x, y)\r
+ ctx:scale (.7, 1)\r
+ ctx:translate (-x, -y)\r
+ ctx:set_line_cap (Cairo.LineCap.Round)\r
+\r
+ function drumstick (xp, lr)\r
+ ctx:set_line_width (r * .3)\r
+ ctx:move_to (x * xp, y)\r
+ ctx:close_path ()\r
+ ctx:stroke ()\r
+ ctx:set_line_width (r * .2)\r
+ ctx:move_to (x * xp, y)\r
+ ctx:rel_line_to (lr * x, y)\r
+ ctx:stroke ()\r
+ end\r
+ drumstick (1.2, 1.2)\r
+ drumstick (0.7, -.5)\r
+end end\r