commit c3ba18f3ce89983aaeb3f22c6961a0de4759c808
parent a823f6e017cbf6bd58c6371b28c43521bb5629e8
Author: Sergej Orlov <wladimirych@gmail.com>
Date: Tue, 28 Mar 2017 11:43:18 +0300
[print] use source level alpha when blending overlays; adjust luminoscity for blending (c * 0.5 + 0.5)
Diffstat:
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/lib/leaflet.control.printPages/map-render.js b/src/lib/leaflet.control.printPages/map-render.js
@@ -66,11 +66,11 @@ function blendMultiplyCanvas(src, dest) {
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,
+ sr, sg, sb, sa, sa1,
dr, dg, db,
l;
for (var i = 0; i < data_length; i += 4) {
- sa = s_data[i + 3];
+ sa = s_data[i + 3] / 255;
if (sa) {
sr = s_data[i];
sg = s_data[i + 1];
@@ -80,10 +80,11 @@ function blendMultiplyCanvas(src, dest) {
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;
+ l = l / 255 * 0.5 + 0.5;
+ sa1 = 1 - sa;
+ dr = sr * l * sa + sa1 * dr;
+ dg = sg * l * sa + sa1 * dg;
+ db = sb * l * sa + sa1 * db;
d_data[i] = dr;
d_data[i + 1] = dg;