tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

image.smoothing.worker.js (4460B)


      1 // spec link: https://html.spec.whatwg.org/#the-offscreen-2d-rendering-context
      2 
      3 importScripts("/resources/testharness.js");
      4 
      5 function createTestImage() {
      6  var image = new OffscreenCanvas(100, 50);
      7  var imgctx = image.getContext('2d');
      8  imgctx.fillStyle = "#F00";
      9  imgctx.fillRect(0, 0, 2, 2);
     10  imgctx.fillStyle = "#0F0";
     11  imgctx.fillRect(0, 0, 1, 1);
     12  return image;
     13 }
     14 
     15 test(function() {
     16  var offscreenCanvas = new OffscreenCanvas(100, 50);
     17  var ctx = offscreenCanvas.getContext('2d');
     18  assert_true(ctx.imageSmoothingEnabled);
     19 }, "When the context is created, imageSmoothingEnabled must be set to true.");
     20 
     21 test(function() {
     22  var offscreenCanvas = new OffscreenCanvas(100, 50);
     23  var ctx = offscreenCanvas.getContext('2d');
     24  ctx.imageSmoothingEnabled = false;
     25  assert_false(ctx.imageSmoothingEnabled);
     26 }, "On getting imageSmoothingEnabled, the user agent must return the last value it was set to.");
     27 
     28 test(function() {
     29  var offscreenCanvas = new OffscreenCanvas(100, 50);
     30  var ctx = offscreenCanvas.getContext('2d');
     31  var image = createTestImage();
     32  ctx.scale(10, 10);
     33  ctx.drawImage(image, 0, 0);
     34  var pixels = ctx.getImageData(9, 9, 1, 1).data;
     35  assert_not_equals(pixels[0], 0);
     36  assert_not_equals(pixels[1], 255);
     37 }, "Test that image smoothing is actually on by default.");
     38 
     39 test(function() {
     40  var offscreenCanvas = new OffscreenCanvas(100, 50);
     41  var ctx = offscreenCanvas.getContext('2d');
     42  ctx.imageSmoothingEnabled = true;
     43  var image = createTestImage();
     44  ctx.scale(10, 10);
     45  ctx.drawImage(image, 0, 0);
     46  var pixels = ctx.getImageData(9, 9, 1, 1).data;
     47  assert_not_equals(pixels[0], 0);
     48  assert_not_equals(pixels[1], 255);
     49 }, "Test that image smoothing works when imageSmoothingEnabled is set to true");
     50 
     51 test(function() {
     52  var offscreenCanvas = new OffscreenCanvas(100, 50);
     53  var ctx = offscreenCanvas.getContext('2d');
     54  var image = createTestImage();
     55  ctx.imageSmoothingEnabled = false;
     56  ctx.scale(10, 10);
     57  ctx.drawImage(image, 0, 0);
     58  var pixels = ctx.getImageData(9, 9, 1, 1).data;
     59  assert_array_equals(pixels, [0, 255, 0, 255]);
     60 }, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with drawImage().");
     61 
     62 test(function() {
     63  var offscreenCanvas = new OffscreenCanvas(100, 50);
     64  var ctx = offscreenCanvas.getContext('2d');
     65  var image = createTestImage();
     66  ctx.imageSmoothingEnabled = false;
     67  ctx.scale(10, 10);
     68  ctx.fillStyle = ctx.createPattern(image, 'repeat');
     69  ctx.fillRect(0, 0, 10, 10);
     70  var pixels = ctx.getImageData(9, 9, 1, 1).data;
     71  assert_array_equals(pixels, [0, 255, 0, 255]);
     72 }, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fillRect and createPattern().");
     73 
     74 test(function() {
     75  var offscreenCanvas = new OffscreenCanvas(100, 50);
     76  var ctx = offscreenCanvas.getContext('2d');
     77  var image = createTestImage();
     78  ctx.imageSmoothingEnabled = false;
     79  ctx.fillStyle = ctx.createPattern(image, 'repeat');
     80  ctx.scale(10, 10);
     81  ctx.rect(0, 0, 10, 10);
     82  ctx.fill();
     83  var pixels = ctx.getImageData(9, 9, 1, 1).data;
     84  assert_array_equals(pixels, [0, 255, 0, 255]);
     85 }, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with fill() and createPattern().");
     86 
     87 test(function() {
     88  var offscreenCanvas = new OffscreenCanvas(100, 50);
     89  var ctx = offscreenCanvas.getContext('2d');
     90  var image = createTestImage();
     91  ctx.strokeStyle = ctx.createPattern(image, 'repeat');
     92  ctx.lineWidth = 5;
     93  ctx.imageSmoothingEnabled = false;
     94  ctx.scale(10, 10);
     95  ctx.beginPath();
     96  ctx.moveTo(0, 0);
     97  ctx.lineTo(10, 10);
     98  ctx.stroke();
     99  var pixels = ctx.getImageData(9, 9, 1, 1).data;
    100  assert_array_equals(pixels, [0, 255, 0, 255]);
    101 }, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) works with stroke() and createPattern().");
    102 
    103 test(function() {
    104  var repaints = 5;
    105  var offscreenCanvas = new OffscreenCanvas(100, 50);
    106  var ctx = offscreenCanvas.getContext('2d');
    107 
    108  function draw() {
    109    ctx.clearRect(0, 0, 10, 10);
    110    ctx.setTransform(1, 0, 0, 1, 0, 0);
    111    var image = createTestImage();
    112    ctx.imageSmoothingEnabled = false;
    113    ctx.scale(10, 10);
    114    ctx.drawImage(image, 0, 0);
    115    var pixels = ctx.getImageData(9, 9, 1, 1).data;
    116    assert_array_equals(pixels, [0, 255, 0, 255]);
    117  }
    118 
    119  while (repaints > 0) {
    120    draw();
    121    repaints = repaints - 1;
    122  }
    123 
    124 }, "Test that imageSmoothingEnabled = false (nearest-neighbor interpolation) still works after repaints.");
    125 
    126 done();