common.js (1324B)
1 // Helper to access the element, its associated loading promise, and also to 2 // resolve the promise. 3 class ElementLoadPromise { 4 constructor(element_id) { 5 this.element_id = element_id; 6 this.promise = new Promise((resolve, reject) => { 7 this.resolve = resolve 8 this.reject = reject 9 }); 10 } 11 element() { 12 return document.getElementById(this.element_id); 13 } 14 } 15 16 // Returns if the image is complete and the lazily loaded image matches the expected image. 17 function is_image_fully_loaded(image, expected_image) { 18 if (!image.complete || !expected_image.complete) { 19 return false; 20 } 21 22 if (image.width != expected_image.width || 23 image.height != expected_image.height) { 24 return false; 25 } 26 27 let canvas = document.createElement('canvas'); 28 canvas.width = image.width; 29 canvas.height = image.height; 30 let canvasContext = canvas.getContext("2d"); 31 canvasContext.save(); 32 canvasContext.drawImage(image, 0, 0); 33 let data = canvasContext.getImageData(0, 0, canvas.width, canvas.height).data; 34 35 canvasContext.restore(); 36 canvasContext.drawImage(expected_image, 0, 0); 37 let expected_data = canvasContext.getImageData(0, 0, canvas.width, canvas.height).data; 38 39 for (var i = 0; i < data.length; i++) { 40 if (data[i] != expected_data[i]) { 41 return false; 42 } 43 } 44 return true; 45 }