<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<canvas width="600" height="300" style="border: solid 1px gray"></canvas>
<script>
description('Tests that (vertical) shadow offsets are applied correctly when using fillText() regardless of blur amount.');
var ctx = document.getElementsByTagName('canvas')[0].getContext('2d');
ctx.font = 'bold 128px sans-serif';
ctx.shadowColor = 'red'
ctx.shadowOffsetY = 100;

function testWithBlur(blur, belowOffset) {
  ctx.clearRect(0, 0, 600, 300);
  ctx.shadowBlur = blur;
  
  // Center the I around the Y axis.
  ctx.fillText('I', -ctx.measureText('I').width/2, 128);
  
  debug('Testing with blur of ' + blur + ' pixels');

  // Make sure that the shadow doesn't end up above the text...
  var imageData = ctx.getImageData(0, 0, 1, 1);
  imgdata = imageData.data;

  shouldBe('imgdata[0]', '0');
  shouldBe('imgdata[1]', '0');
  shouldBe('imgdata[2]', '0');
  shouldBe('imgdata[3]', '0');
  
  // ...but below.
  var imageData = ctx.getImageData(0, belowOffset, 1, 1);
  imgdata = imageData.data;  
  shouldBe('imgdata[0]', '255');
  shouldBe('imgdata[1]', '0');
  shouldBe('imgdata[2]', '0');
  shouldBe('imgdata[3]', '255');
}

debug('Testing with no transform');
testWithBlur(0, 150);
testWithBlur(1, 150);
testWithBlur(5, 150);

debug('Testing with scale transform');
ctx.scale(1, 2);
testWithBlur(0, 299);
testWithBlur(1, 299);
testWithBlur(5, 299);

</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
