From 3bc0a6e6f008f09127d96686e4d0dc0a152ed0a9 Mon Sep 17 00:00:00 2001 From: Frederic Junod Date: Thu, 6 Mar 2014 13:28:18 +0100 Subject: [PATCH] Don't use Uint32Array for IE compatibility --- src/ol/layer/heatmaplayer.js | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/ol/layer/heatmaplayer.js b/src/ol/layer/heatmaplayer.js index babd45c0f5..c0a567c1bd 100644 --- a/src/ol/layer/heatmaplayer.js +++ b/src/ol/layer/heatmaplayer.js @@ -34,7 +34,7 @@ ol.layer.Heatmap = function(opt_options) { /** * @private - * @type {Uint32Array} + * @type {Uint8ClampedArray} */ this.gradient_ = null; @@ -89,7 +89,7 @@ ol.layer.Heatmap.DEFAULT_GRADIENT = ['#00f', '#0ff', '#0f0', '#ff0', '#f00']; /** * @param {Array.} colors - * @return {Uint32Array} + * @return {Uint8ClampedArray} * @private */ ol.layer.Heatmap.createGradient_ = function(colors) { @@ -108,11 +108,8 @@ ol.layer.Heatmap.createGradient_ = function(colors) { context.fillStyle = gradient; context.fillRect(0, 0, width, height); - var imageData = context.getImageData(0, 0, width, height).data; - for (var i = 0, ii = imageData.length; i < ii; i += 4) { - imageData[i + 3] = i / 4; - } - return new Uint32Array(imageData.buffer); + + return context.getImageData(0, 0, width, height).data; }; @@ -172,13 +169,14 @@ ol.layer.Heatmap.prototype.handleRender_ = function(event) { var context = event.context; var canvas = context.canvas; var image = context.getImageData(0, 0, canvas.width, canvas.height); - var view32 = new Uint32Array(image.data.buffer); var view8 = image.data; - var i, ii, alpha; - for (i = 0, ii = view32.length; i < ii; ++i) { - alpha = view8[4 * i + 3]; + var i, ii, alpha, offset; + for (i = 0, ii = view8.length; i < ii; i += 4) { + alpha = view8[i + 3] * 4; if (alpha) { - view32[i] = this.gradient_[alpha]; + view8[i] = this.gradient_[alpha]; + view8[i + 1] = this.gradient_[alpha + 1]; + view8[i + 2] = this.gradient_[alpha + 2]; } } context.putImageData(image, 0, 0);