html/scripts/highchart/highcharts-more.src.js
function (segment) {
		
		var lowSegment,
			highSegment = [],
			i = segment.length,
			baseGetSegmentPath = Series.prototype.getSegmentPath,
			point,
			linePath,
			lowerPath,
			options = this.options,
			step = options.step,
			higherPath;
			
		// Remove nulls from low segment
		lowSegment = HighchartsAdapter.grep(segment, function (point) {
			return point.plotLow !== null;
		});
		
		// Make a segment with plotX and plotY for the top values
		while (i--) {
			point = segment[i];
			if (point.plotHigh !== null) {
				highSegment.push({
					plotX: point.plotHighX || point.plotX, // plotHighX is for polar charts
					plotY: point.plotHigh
				});
			}
		}
		
		// Get the paths
		lowerPath = baseGetSegmentPath.call(this, lowSegment);
		if (step) {
			if (step === true) {
				step = 'left';
			}
			options.step = { left: 'right', center: 'center', right: 'left' }[step]; // swap for reading in getSegmentPath
		}
		higherPath = baseGetSegmentPath.call(this, highSegment);
		options.step = step;
		
		// Create a line on both top and bottom of the range
		linePath = [].concat(lowerPath, higherPath);
		
		// For the area path, we need to change the 'move' statement into 'lineTo' or 'curveTo'
		if (!this.chart.polar) {
			higherPath[0] = 'L'; // this probably doesn't work for spline
		}
		this.areaPath = this.areaPath.concat(lowerPath, higherPath);
		
		return linePath;
	}
function (segment) {
		
		var lowSegment,
			highSegment = [],
			i = segment.length,
			baseGetSegmentPath = Series.prototype.getSegmentPath,
			point,
			linePath,
			lowerPath,
			options = this.options,
			step = options.step,
			higherPath;
			
		// Remove nulls from low segment
		lowSegment = HighchartsAdapter.grep(segment, function (point) {
			return point.plotLow !== null;
		});
		
		// Make a segment with plotX and plotY for the top values
		while (i--) {
			point = segment[i];
			if (point.plotHigh !== null) {
				highSegment.push({
					plotX: point.plotHighX || point.plotX, // plotHighX is for polar charts
					plotY: point.plotHigh
				});
			}
		}
		
		// Get the paths
		lowerPath = baseGetSegmentPath.call(this, lowSegment);
		if (step) {
			if (step === true) {
				step = 'left';
			}
			options.step = { left: 'right', center: 'center', right: 'left' }[step]; // swap for reading in getSegmentPath
		}
		higherPath = baseGetSegmentPath.call(this, highSegment);
		options.step = step;
		
		// Create a line on both top and bottom of the range
		linePath = [].concat(lowerPath, higherPath);
		
		// For the area path, we need to change the 'move' statement into 'lineTo' or 'curveTo'
		if (!this.chart.polar) {
			higherPath[0] = 'L'; // this probably doesn't work for spline
		}
		this.areaPath = this.areaPath.concat(lowerPath, higherPath);
		
		return linePath;
	}
function ( segment ) { var lowSegment , highSegment = [ ] , i = segment . length , baseGetSegmentPath = Series . prototype . getSegmentPath , point , linePath , lowerPath , options = this . options , step = options . step , higherPath ; // Remove nulls from low segment lowSegment = HighchartsAdapter . grep ( segment , function ( point ) { return point . plotLow !== null ; } ) ; // Make a segment with plotX and plotY for the top values while ( i -- ) { point = segment [ i ] ; if ( point . plotHigh !== null ) { highSegment . push ( { plotX : point . plotHighX || point . plotX , // plotHighX is for polar charts plotY : point . plotHigh } ) ; } } // Get the paths lowerPath = baseGetSegmentPath . call ( this , lowSegment ) ; if ( step ) { if ( step === true ) { step = 'left' ; } options . step = { left : 'right' , center : 'center' , right : 'left' } [ step ] ; // swap for reading in getSegmentPath } higherPath = baseGetSegmentPath . call ( this , highSegment ) ; options . step = step ; // Create a line on both top and bottom of the range linePath = [ ] . concat ( lowerPath , higherPath ) ; // For the area path, we need to change the 'move' statement into 'lineTo' or 'curveTo' if ( ! this . chart . polar ) { higherPath [ 0 ] = 'L' ; // this probably doesn't work for spline } this . areaPath = this . areaPath . concat ( lowerPath , higherPath ) ; return linePath ; }
Extend the line series' getSegmentPath method by applying the segment
path to both lower and higher values of the range
Extend the line series getSegmentPath method by applying the segment path to both lower and higher values of the range