commit 2aba6db27fa1d27f1d76f9fc646fc553e69e9e24
parent 49c7ca4ca8beba4831524797409d35dd7d57aeae
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Sun, 5 Mar 2017 20:02:56 +0300
Revert "[print] use less memory when blending tracks"
This reverts commit 9e6ffbdf5a7b6fd17a0df42a40c62348a012d4c2.
Processing canvases line by line is very slow in Firefox
Diffstat:
1 file changed, 26 insertions(+), 35 deletions(-)
diff --git a/src/lib/leaflet.control.printPages/map-render.js b/src/lib/leaflet.control.printPages/map-render.js
@@ -59,44 +59,35 @@ function getLayersForPrint(map, xhrQueue) {
}
function blendMultiplyCanvas(src, dest) {
- if (src.width !== dest.width || src.height !== dest.height) {
- throw new Error('Canvas size mismatch');
- }
- const height = src.height;
- let srcContext = src.getContext('2d');
- let destContext = dest.getContext('2d');
- for (let y = 0; y < height; y++) {
- let s_data = srcContext.getImageData(0, y, src.width, 1).data;
- let d_image_data = destContext.getImageData(0, y, src.width, 1);
- let d_data = d_image_data.data;
- let data_length = s_data.length,
- sr, sg, sb, sa,
- dr, dg, db,
- l;
- for (let i = 0; i < data_length; i += 4) {
- sa = s_data[i + 3];
- if (sa) {
- sr = s_data[i];
- sg = s_data[i + 1];
- sb = s_data[i + 2];
- dr = d_data[i];
- dg = d_data[i + 1];
- db = d_data[i + 2];
-
- l = (dr + dg + db) / 3;
- l = l / 255 * 192 + 63;
- dr = sr / 255 * l;
- dg = sg / 255 * l;
- db = sb / 255 * l;
+ var s_data = src.getContext('2d').getImageData(0, 0, src.width, src.height).data;
+ var d_image_data = dest.getContext('2d').getImageData(0, 0, src.width, src.height);
+ var d_data = d_image_data.data;
+ var data_length = s_data.length,
+ sr, sg, sb, sa,
+ dr, dg, db,
+ l;
+ for (var i = 0; i < data_length; i += 4) {
+ sa = s_data[i + 3];
+ if (sa) {
+ sr = s_data[i];
+ sg = s_data[i + 1];
+ sb = s_data[i + 2];
+ dr = d_data[i];
+ dg = d_data[i + 1];
+ db = d_data[i + 2];
- d_data[i] = dr;
- d_data[i + 1] = dg;
- d_data[i + 2] = db;
- }
- }
- dest.getContext('2d').putImageData(d_image_data, 0, y);
+ l = (dr + dg + db) / 3;
+ l = l / 255 * 192 + 63;
+ dr = sr / 255 * l;
+ dg = sg / 255 * l;
+ db = sb / 255 * l;
+ d_data[i] = dr;
+ d_data[i + 1] = dg;
+ d_data[i + 2] = db;
+ }
}
+ dest.getContext('2d').putImageData(d_image_data, 0, 0);
}
class PageComposer {