Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement fast zsmooth option for image trace #5354

Merged
merged 14 commits into from
Jan 7, 2021
11 changes: 11 additions & 0 deletions src/traces/image/attributes.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,17 @@ module.exports = extendFlat({
'otherwise it defaults to `rgb`.'
].join(' ')
},
interpolate: {
valType: 'enumerated',
values: ['nearest', 'linear'],
role: 'info',
editType: 'plot',
description: [
'The type of interpolation for rendering the image.',
'Default `nearest` (nearest neighbor interpolation).',
'Can also be set to `linear` (bilinear interpolation).'
].join(' ')
},
zmin: {
valType: 'info_array',
items: [
Expand Down
1 change: 1 addition & 0 deletions src/traces/image/defaults.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ module.exports = function supplyDefaults(traceIn, traceOut) {
traceOut.zmax = cm.zmaxDflt;
}

coerce('interpolate', 'nearest');
coerce('text');
coerce('hovertext');
coerce('hovertemplate');
Expand Down
5 changes: 4 additions & 1 deletion src/traces/image/plot.js
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,10 @@ module.exports = function plot(gd, plotinfo, cdimage, imageLayer) {
// Pixelated image rendering
// http://phrogz.net/tmp/canvas_image_zoom.html
// https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering
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;';
var style = '';
if(trace.interpolate === 'nearest') {
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;';
}
if(fastImage) {
var xRange = Lib.simpleMap(xa.range, xa.r2l);
var yRange = Lib.simpleMap(ya.range, ya.r2l);
Expand Down