<!DOCTYPE html>
<!--
     Any copyright is dedicated to the Public Domain.
     http://creativecommons.org/publicdomain/zero/1.0/
-->
<html class="reftest-wait">
  <head>
    <meta charset="utf-8">
    <title>CSS Test: 'object-fit: none' on canvas element, with a PNG image and with various 'object-position' values</title>
    <link rel="author" title="Daniel Holbert" href="mailto:dholbert@mozilla.com">
    <link rel="help" href="http://www.w3.org/TR/css3-images/#sizing">
    <link rel="help" href="http://www.w3.org/TR/css3-images/#the-object-fit">
    <link rel="help" href="http://www.w3.org/TR/css3-images/#the-object-position">
    <link rel="match" href="object-fit-none-png-001-ref.html">
    <style type="text/css">
      canvas {
        border: 1px dashed gray;
        padding: 1px;
        object-fit: none;
        image-rendering: crisp-edges;
        float: left;
      }

      .bigWide {
        width: 48px;
        height: 32px;
      }
      .bigTall {
        width: 32px;
        height: 48px;
      }
      .small {
        width: 8px;
        height: 8px;
      }

      br { clear: both; }

      .tr { object-position: top right }
      .bl { object-position: bottom left }
      .tl { object-position: top 25% left 25% }
      .br { object-position: bottom 1px right 2px }

      .tc { object-position: top 3px left 50% }
      .cr { object-position: top 50% right 25% }
    </style>
    <script>
      function drawImageToCanvases(imageURI) {
        var image = new Image();
        image.onload = function() {
          var canvasElems = document.getElementsByTagName("canvas");
          for (var i = 0; i < canvasElems.length; i++) {
            var ctx = canvasElems[i].getContext("2d");
            ctx.drawImage(image, 0, 0);
          }
          document.documentElement.removeAttribute("class");
        }
        image.src = imageURI;
      }
    </script>
  </head>
  <body onload="drawImageToCanvases('support/colors-16x8.png')">
    <!-- big/wide: -->
    <canvas width="16" height="8" class="bigWide tr"></canvas>
    <canvas width="16" height="8" class="bigWide bl"></canvas>
    <canvas width="16" height="8" class="bigWide tl"></canvas>
    <canvas width="16" height="8" class="bigWide br"></canvas>
    <canvas width="16" height="8" class="bigWide tc"></canvas>
    <canvas width="16" height="8" class="bigWide cr"></canvas>
    <canvas width="16" height="8" class="bigWide"></canvas>
    <br>
    <!-- big/tall: -->
    <canvas width="16" height="8" class="bigTall tr"></canvas>
    <canvas width="16" height="8" class="bigTall bl"></canvas>
    <canvas width="16" height="8" class="bigTall tl"></canvas>
    <canvas width="16" height="8" class="bigTall br"></canvas>
    <canvas width="16" height="8" class="bigTall tc"></canvas>
    <canvas width="16" height="8" class="bigTall cr"></canvas>
    <canvas width="16" height="8" class="bigTall"></canvas>
    <br>
    <!-- small: -->
    <canvas width="16" height="8" class="small tr"></canvas>
    <canvas width="16" height="8" class="small bl"></canvas>
    <canvas width="16" height="8" class="small tl"></canvas>
    <canvas width="16" height="8" class="small br"></canvas>
    <canvas width="16" height="8" class="small tc"></canvas>
    <canvas width="16" height="8" class="small cr"></canvas>
    <canvas width="16" height="8" class="small"></canvas>
    <br>
  </body>
</html>
