Skip to content

Commit

Permalink
Addition to #3131, consider border when defining shape limits.
Browse files Browse the repository at this point in the history
  • Loading branch information
TorsteinHonsi committed May 3, 2017
1 parent eaf1ac6 commit 67371c4
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions js/parts-3d/Column.js
Expand Up @@ -30,7 +30,15 @@ wrap(seriesTypes.column.prototype, 'translate', function (proceed) {
var series = this,
chart = series.chart,
seriesOptions = series.options,
depth = seriesOptions.depth || 25;
depth = seriesOptions.depth || 25,
borderCrisp = series.borderWidth % 2 ? 0.5 : 0;

if (
(chart.inverted && !series.yAxis.reversed) ||
(!chart.inverted && series.yAxis.reversed)
) {
borderCrisp *= -1;
}

var stack = seriesOptions.stacking ? (seriesOptions.stack || 0) : series.index; // #4743
var z = stack * (depth + (seriesOptions.groupZPadding || 1));
Expand All @@ -44,23 +52,27 @@ wrap(seriesTypes.column.prototype, 'translate', function (proceed) {
if (point.y !== null) {
var shapeArgs = point.shapeArgs,
tooltipPos = point.tooltipPos,
dimensions = [['x', 'width'], ['y', 'height']]; // Array for final shapeArgs calculation.
// Array for final shapeArgs calculation.
// We are checking two dimensions (x and y).
dimensions = [['x', 'width'], ['y', 'height']],
borderlessBase; // crisped rects can have +/- 0.5 pixels offset

// #3131 We need to check if column shape arguments are inside plotArea.

// #3131 We need to check if column shape arguments are inside plotArea.
each(dimensions, function (d) {
borderlessBase = shapeArgs[d[0]] - borderCrisp;
if (
shapeArgs[d[0]] + shapeArgs[d[1]] < 0 || // End column position is smaller than axis start.
shapeArgs[d[0]] > series[d[0] + 'Axis'].len // Start column position is bigger than axis end.
) {
borderlessBase + shapeArgs[d[1]] < 0 || // End column position is smaller than axis start.
borderlessBase > series[d[0] + 'Axis'].len // Start column position is bigger than axis end.
) {
for (var key in shapeArgs) { // Set args to 0 if column is outside the chart.
shapeArgs[key] = 0;
}
} if (shapeArgs[d[0]] < 0) {
}
if (borderlessBase < 0) {
shapeArgs[d[1]] += shapeArgs[d[0]];
shapeArgs[d[0]] = 0;
} if (shapeArgs[d[0]] + shapeArgs[d[1]] > series[d[0] + 'Axis'].len) {
}
if (borderlessBase + shapeArgs[d[1]] > series[d[0] + 'Axis'].len) {
shapeArgs[d[1]] = series[d[0] + 'Axis'].len - shapeArgs[d[0]];
}
});
Expand Down

0 comments on commit 67371c4

Please sign in to comment.