<!DOCTYPE html>
<title>Canvas test: toDataURL.jpeg.quality.basic</title>
<meta name="author" content="Philip Taylor">
<script src="../common/canvas-tests.js"></script>
<link rel="stylesheet" href="../common/canvas-tests.css">
<body class="show_output">

<h1><a href="index.toDataURL.html">toDataURL</a>.<a href="index.toDataURL.jpeg.html">jpeg</a>.<a href="index.toDataURL.jpeg.quality.html">quality</a>.basic</h1>
<p class="desc">toDataURL with JPEG uses the quality parameter</p>

<div class="refs">Spec references:
<ul>
<li><a href="../annotated-spec/canvas.html#testrefs.toDataURL.jpeg.quality">toDataURL.jpeg.quality</a>
</ul>
</div>

<p class="output">Actual output:</p>
<canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas>
<p class="output expectedtext">Expected output:<p><img src="resources/toDataURL.jpeg.quality.basic.png" class="output expected" id="expected" alt="">
<ul id="d"></ul>
<script>
_addTest(function(canvas, ctx) {

ctx.fillStyle = '#00f';
ctx.fillRect(0, 0, 100, 50);
ctx.fillStyle = '#0ff';
ctx.fillRect(0, 3, 100, 1);
// Check for JPEG support first
var data = canvas.toDataURL('image/jpeg');
if (!data.match(/^data:image\/jpeg[;,]/)) {
  _assert(true, "true");
} else {
  var data_hi = canvas.toDataURL('image/jpeg', 0.99);
  var data_lo = canvas.toDataURL('image/jpeg', 0.01);
  ctx.fillStyle = '#f00';
  ctx.fillRect(0, 0, 100, 50);
  deferTest();
  var img_hi = new Image();
  img_hi.onload = function ()
  {
      var img_lo = new Image();
      img_lo.onload = wrapFunction(function ()
      {
          ctx.drawImage(img_hi, 0, 0, 50, 50, 0, 0, 50, 50);
          ctx.drawImage(img_lo, 0, 0, 50, 50, 50, 0, 50, 50);
          
          _assert(data_hi.length > data_lo.length, "data_hi.length > data_lo.length");
          _assertPixelApprox(canvas, 25,25, 0,0,255,255, "25,25", "0,0,255,255", 8);
          _assertPixelApprox(canvas, 75,25, 0,0,255,255, "75,25", "0,0,255,255", 32);
      });
      img_lo.src = data_lo;
  };
  img_hi.src = data_hi;
}


});
</script>

