diff --git a/src/traces/contour/close_boundaries.js b/src/traces/contour/close_boundaries.js index ad525edf4a7..60086f8966c 100644 --- a/src/traces/contour/close_boundaries.js +++ b/src/traces/contour/close_boundaries.js @@ -58,14 +58,16 @@ module.exports = function(pathinfo, contours) { } break; case '<': - if(contoursValue < boundaryMin) { + if(contoursValue < boundaryMin || + (!pi0.edgepaths.length && pi0.starts.length && contoursValue === boundaryMin)) { pi0.prefixBoundary = true; } break; case '[]': v1 = Math.min(contoursValue[0], contoursValue[1]); v2 = Math.max(contoursValue[0], contoursValue[1]); - if(v2 < boundaryMin || v1 > boundaryMax) { + if(v2 < boundaryMin || v1 > boundaryMax || + (!pi0.edgepaths.length && pi0.starts.length && v2 === boundaryMin)) { pi0.prefixBoundary = true; } break; diff --git a/src/traces/contour/convert_to_constraints.js b/src/traces/contour/convert_to_constraints.js index eecd7a1214e..418f10b5575 100644 --- a/src/traces/contour/convert_to_constraints.js +++ b/src/traces/contour/convert_to_constraints.js @@ -41,6 +41,9 @@ module.exports = function(pathinfo, operation) { for(i = 0; i < pi0.paths.length; i++) { pi0.paths[i] = op0(pi0.paths[i]); } + for(i = 0; i < pi0.starts.length; i++) { + pi0.starts[i] = op0(pi0.starts[i]); + } return pathinfo; case '][': @@ -65,10 +68,12 @@ module.exports = function(pathinfo, operation) { for(i = 0; i < pi0.edgepaths.length; i++) { pi0.edgepaths[i] = op0(pi0.edgepaths[i]); } - for(i = 0; i < pi0.paths.length; i++) { pi0.paths[i] = op0(pi0.paths[i]); } + for(i = 0; i < pi0.starts.length; i++) { + pi0.starts[i] = op0(pi0.starts[i]); + } while(pi1.edgepaths.length) { pi0.edgepaths.push(op1(pi1.edgepaths.shift())); @@ -76,6 +81,10 @@ module.exports = function(pathinfo, operation) { while(pi1.paths.length) { pi0.paths.push(op1(pi1.paths.shift())); } + while(pi1.starts.length) { + pi0.starts.push(op1(pi1.starts.shift())); + } + return [pi0]; } }; @@ -83,6 +92,7 @@ module.exports = function(pathinfo, operation) { function copyPathinfo(pi) { return Lib.extendFlat({}, pi, { edgepaths: Lib.extendDeep([], pi.edgepaths), - paths: Lib.extendDeep([], pi.paths) + paths: Lib.extendDeep([], pi.paths), + starts: Lib.extendDeep([], pi.starts) }); } diff --git a/test/image/baselines/carpet_rounded-off-edgepath-lt.png b/test/image/baselines/carpet_rounded-off-edgepath-lt.png index a1c690c8e5d..7be8495577e 100644 Binary files a/test/image/baselines/carpet_rounded-off-edgepath-lt.png and b/test/image/baselines/carpet_rounded-off-edgepath-lt.png differ diff --git a/test/image/baselines/carpet_rounded-off-edgepath.png b/test/image/baselines/carpet_rounded-off-edgepath.png index 9206ec7f4a5..14b0e71d137 100644 Binary files a/test/image/baselines/carpet_rounded-off-edgepath.png and b/test/image/baselines/carpet_rounded-off-edgepath.png differ diff --git a/test/image/baselines/contour_constraints_edge_cases.png b/test/image/baselines/contour_constraints_edge_cases.png index b9847467489..c85b29bba1f 100644 Binary files a/test/image/baselines/contour_constraints_edge_cases.png and b/test/image/baselines/contour_constraints_edge_cases.png differ