| <html> |
| <head> |
| <style> |
| .hide {display:none} |
| .row {display:table-row} |
| .cell {display:table-cell; padding:10px} |
| #test-output {display:table} |
| label {display:row} |
| </style> |
| <body> |
| |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <canvas class="hide" id="source-up-canvas"></canvas> |
| <canvas class="hide" id="source-down-canvas"></canvas> |
| <div id="test-output"> |
| <label>Scale Up</label> |
| <div id="up" class="row"> |
| <div class="cell"> |
| <div id="low-up"></div> |
| <canvas id="low-up-canvas"></canvas> |
| </div> |
| <div class="cell"> |
| <div id="medium-up"></div> |
| <canvas id="medium-up-canvas"></canvas> |
| </div> |
| <div class="cell"> |
| <div id="high-up"></div> |
| <canvas id="high-up-canvas"></canvas> |
| </div> |
| </div> |
| |
| <label>Scale Down</label> |
| <div id="down" class="row"> |
| <div class="cell"> |
| <div id="low-down"></div> |
| <canvas id="low-down-canvas"></canvas> |
| </div> |
| <div class="cell"> |
| <div id="medium-down"></div> |
| <canvas id="medium-down-canvas"></canvas> |
| </div> |
| <div class="cell"> |
| <div id="high-down"></div> |
| <canvas id="high-down-canvas"></canvas> |
| </div> |
| </div> |
| </div> |
| |
| <script> |
| |
| function drawCanvas(quality, scale, drawFunc) { |
| var id = quality + "-" + scale; |
| var canvas = document.getElementById(id + "-canvas"); |
| var context = canvas.getContext("2d"); |
| var testCaseTitle = document.getElementById(id); |
| if (testCaseTitle) { |
| testCaseTitle.innerHTML = quality; |
| } |
| drawFunc(canvas, context, quality, scale); |
| } |
| |
| function copyPicture(canvas, context, quality, scale) { |
| var source = document.getElementById("source-" + scale + "-canvas"); |
| canvas.width = 100; |
| canvas.height = 100; |
| context.imageSmoothingQuality = quality; |
| context.drawImage(source, 0, 0, canvas.width, canvas.height); |
| } |
| |
| function drawWord(canvas, context) { |
| canvas.width = 1800; |
| canvas.height = 1800; |
| context.font = '250pt Calibri'; |
| context.textAlign = 'center'; |
| context.fillStyle = 'blue'; |
| context.fillText('Hello World!', canvas.width/2, canvas.height/2); |
| } |
| |
| function drawPicture(canvas, context) { |
| canvas.width = 5; |
| canvas.height = 5; |
| |
| var image = context.createImageData(canvas.width, canvas.height); |
| |
| function drawBlackDot(x, y, col) { |
| var offset = y * 4 * canvas.width + x * 4; |
| image.data[offset + 0] = col[0]; // R |
| image.data[offset + 1] = col[1] ; // G |
| image.data[offset + 2] = col[2] ; // B |
| image.data[offset + 3] = 225; // Alpha |
| } |
| |
| var imageData = [ |
| ['b', 'w', 'b', 'w', 'b',],['w', 'b', 'w', 'b', 'w',], |
| ['b', 'w', 'b', 'w', 'b',],['w', 'b', 'w', 'b', 'w',], |
| ['b', 'w', 'b', 'w', 'b',], |
| ] |
| var nameToColor = { |
| 'w' : [255,255,255], |
| 'b' : [0,0,0], |
| } |
| for (var x = 0 ; x < canvas.width; x++) { |
| for (var y = 0; y < canvas.height; y++) { |
| drawBlackDot(x, y, nameToColor[imageData[x][y]]); |
| } |
| } |
| context.putImageData(image, 0, 0); |
| } |
| |
| test(function(t) { |
| drawCanvas("source", "up", drawPicture); |
| drawCanvas("source", "down", drawWord); |
| |
| qualities = ["low", "medium", "high"]; |
| scales = ["up", "down"]; |
| for (var i = 0; i < scales.length; i++) { |
| for (var j = 0; j < qualities.length; j++) { |
| drawCanvas(qualities[j], scales[i], copyPicture); |
| } |
| } |
| }, 'Test that createImageBitmap from a bitmaprenderer canvas produces correct result'); |
| </script> |
| </body> |