Home | History | Annotate | Download | only in canvas2d_balls_common
      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