Skip to content

Commit 3a501ef

Browse files
authored
Merge pull request #5354 from almarklein/interp
Implement fast zsmooth option for image trace
2 parents 177842f + 15d157f commit 3a501ef

File tree

4 files changed

+28
-5
lines changed

4 files changed

+28
-5
lines changed

src/traces/image/attributes.js

+11
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,17 @@ module.exports = extendFlat({
5151
'otherwise it defaults to `rgb`.'
5252
].join(' ')
5353
},
54+
zsmooth: {
55+
valType: 'enumerated',
56+
values: ['fast', false],
57+
dflt: false,
58+
role: 'info',
59+
editType: 'plot',
60+
description: [
61+
'Picks a smoothing algorithm used to smooth `z` data.',
62+
'This only applies for image traces that use the `source` attribute.'
63+
].join(' ')
64+
},
5465
zmin: {
5566
valType: 'info_array',
5667
items: [

src/traces/image/constants.js

+14-1
Original file line numberDiff line numberDiff line change
@@ -55,5 +55,18 @@ module.exports = {
5555
},
5656
suffix: ['°', '%', '%', '']
5757
}
58-
}
58+
},
59+
// For pixelated image rendering
60+
// http://phrogz.net/tmp/canvas_image_zoom.html
61+
// https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering
62+
pixelatedStyle: [
63+
'image-rendering: optimizeSpeed',
64+
'image-rendering: -moz-crisp-edges',
65+
'image-rendering: -o-crisp-edges',
66+
'image-rendering: -webkit-optimize-contrast',
67+
'image-rendering: optimize-contrast',
68+
'image-rendering: crisp-edges',
69+
'image-rendering: pixelated',
70+
''
71+
].join('; ')
5972
};

src/traces/image/defaults.js

+1
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) {
4747
traceOut.zmax = cm.zmaxDflt;
4848
}
4949

50+
coerce('zsmooth');
5051
coerce('text');
5152
coerce('hovertext');
5253
coerce('hovertemplate');

src/traces/image/plot.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,8 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) {
136136

137137
image3.exit().remove();
138138

139-
// Pixelated image rendering
140-
// http://phrogz.net/tmp/canvas_image_zoom.html
141-
// https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering
142-
var style = 'image-rendering: optimizeSpeed; image-rendering: -moz-crisp-edges; image-rendering: -o-crisp-edges; image-rendering: -webkit-optimize-contrast; image-rendering: optimize-contrast; image-rendering: crisp-edges; image-rendering: pixelated;';
139+
var style = (trace.zsmooth === false) ? constants.pixelatedStyle : '';
140+
143141
if(fastImage) {
144142
var xRange = Lib.simpleMap(xa.range, xa.r2l);
145143
var yRange = Lib.simpleMap(ya.range, ya.r2l);

0 commit comments

Comments
 (0)