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 5 var spriteMap; 6 var ballRadius; 7 var spriteMapSize = 50; 8 9 function 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 28 function safeMod(a, b) { 29 var q = Math.floor(a / b); 30 return a - q*b; 31 } 32 33 function 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