1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5var spriteMap;
6var ballRadius;
7var spriteMapSize = 50;
8
9function drawBallInit(diameter) {
10  ballRadius = diameter / 2;
11  var ballImage = document.getElementById('ballImage');
12  spriteMap = document.createElement("canvas");
13  spriteMap.setAttribute('width', ballDiameter*spriteMapSize + 2);
14  spriteMap.setAttribute('height', ballDiameter + 2);
15  ctx = spriteMap.getContext("2d");
16  ctx.clearRect(0,0, ballDiameter*spriteMapSize + 2, ballDiameter + 2);
17  ctx.translate(ballRadius + 1, ballRadius + 1);
18  for (var i = 0; i < spriteMapSize; i++) {
19    ctx.save();
20    ctx.rotate(i * 2 * Math.PI / spriteMapSize );
21    ctx.drawImage(ballImage, -ballRadius, -ballRadius, ballDiameter,
22        ballDiameter);
23    ctx.restore();
24    ctx.translate(ballDiameter, 0);
25  }
26}
27
28function safeMod(a, b) {
29  var q = Math.floor(a / b);
30  return a - q*b;
31}
32
33function drawBall(x, y, angle) {
34  canvasContext.save();
35  canvasContext.translate(x, y);
36  var idx = safeMod(Math.floor(angle * spriteMapSize / (2 * Math.PI)),
37      spriteMapSize);
38  canvasContext.drawImage(spriteMap, idx*ballDiameter + 1, 1, ballDiameter,
39      ballDiameter, -ballRadius, -ballRadius, ballDiameter, ballDiameter);
40  canvasContext.restore();
41}
42