corrade-nucleus-nucleons – Diff between revs 1 and 11

Subversion Repositories:
Rev:
Show entire fileIgnore whitespace
Rev 1 Rev 11
Line 1... Line 1...
1 /** 1 /**
2 * @license Highcharts JS v5.0.10 (2017-03-31) 2 * @license Highcharts JS v5.0.12 (2017-05-24)
3 * Boost module 3 * Boost module
4 * 4 *
5 * (c) 2010-2017 Highsoft AS 5 * (c) 2010-2017 Highsoft AS
6 * Author: Torstein Honsi 6 * Author: Torstein Honsi
7 * 7 *
Line 59... Line 59...
59 * it may cause rendering issues due to floating point rounding errors, 59 * it may cause rendering issues due to floating point rounding errors,
60 * so your millage may vary. 60 * so your millage may vary.
61 * 61 *
62 * Settings 62 * Settings
63 * There are two ways of setting the boost threshold: 63 * There are two ways of setting the boost threshold:
64 * - Per. series: boost based on number of points in individual series 64 * - Per. series: boost based on number of points in individual series
65 * - Per. chart: boost based on the number of series 65 * - Per. chart: boost based on the number of series
66 * 66 *
67 * To set the series boost threshold, set seriesBoostThreshold on the chart object. 67 * To set the series boost threshold, set seriesBoostThreshold on the chart object.
68 * To set the series-specific threshold, set boostThreshold on the series object. 68 * To set the series-specific threshold, set boostThreshold on the series object.
69 * 69 *
70 * In addition, the following can be set in the boost object: 70 * In addition, the following can be set in the boost object:
Line 113... Line 113...
113 * 113 *
114 * @default 5000 114 * @default 5000
115 * @apioption series.boostThreshold 115 * @apioption series.boostThreshold
116 */ 116 */
Line 117... Line 117...
117   117  
Line 118... Line 118...
118 /* global Float32Array, Image */ 118 /* global Float32Array */
119   119  
120   120  
Line 282... Line 282...
282 whitesmoke: '#f5f5f5', 282 whitesmoke: '#f5f5f5',
283 yellow: '#ffff00', 283 yellow: '#ffff00',
284 yellowgreen: '#9acd32' 284 yellowgreen: '#9acd32'
285 }; 285 };
Line -... Line 286...
-   286  
-   287 /**
-   288 * Tolerant max() funciton
-   289 * @return {number} max value
-   290 */
-   291 function patientMax() {
-   292 var args = Array.prototype.slice.call(arguments),
-   293 r = -Number.MAX_VALUE;
-   294  
-   295 each(args, function(t) {
-   296 if (typeof t !== 'undefined' && typeof t.length !== 'undefined') {
-   297 //r = r < t.length ? t.length : r;
-   298 if (t.length > 0) {
-   299 r = t.length;
-   300 return true;
-   301 }
-   302 }
-   303 });
-   304  
-   305 return r;
-   306 }
-   307  
-   308 /*
-   309 * Returns true if we should force chart series boosting
-   310 */
-   311 function shouldForceChartSeriesBoosting(chart) {
-   312 // If there are more than five series currently boosting,
-   313 // we should boost the whole chart to avoid running out of webgl contexts.
-   314 var sboostCount = 0,
-   315 series;
-   316  
-   317 if (chart.series.length > 1) {
-   318 for (var i = 0; i < chart.series.length; i++) {
-   319 series = chart.series[i];
-   320 if (patientMax(
-   321 series.processedXData,
-   322 series.options.data,
-   323 series.points
-   324 ) >= (series.options.boostThreshold || Number.MAX_VALUE)) {
-   325 sboostCount++;
-   326 }
-   327 }
-   328 }
-   329  
-   330 return sboostCount > 5;
Line 286... Line 331...
286   331 }
287   332  
288 /* 333 /*
289 * Returns true if the chart is in series boost mode 334 * Returns true if the chart is in series boost mode
290 * @param chart {Highchart.Chart} - the chart to check 335 * @param chart {Highchart.Chart} - the chart to check
291 * @returns {Boolean} - true if the chart is in series boost mode 336 * @returns {Boolean} - true if the chart is in series boost mode
292 */ 337 */
293 function isChartSeriesBoosting(chart) { 338 function isChartSeriesBoosting(chart) {
294 return chart.series.length >= pick( 339 return shouldForceChartSeriesBoosting(chart) || chart.series.length >= pick(
295 chart.options.boost && chart.options.boost.seriesThreshold, // docs 340 chart.options.boost && chart.options.boost.seriesThreshold,
296 10 341 50
Line 297... Line 342...
297 ); 342 );
298 } 343 }
299   344  
300 /* 345 /*
301 * Returns true if the series is in boost mode 346 * Returns true if the series is in boost mode
302 * @param series {Highchart.Series} - the series to check 347 * @param series {Highchart.Series} - the series to check
303 * @returns {boolean} - true if the series is in boost mode -  
304 */ -  
305 function isSeriesBoosting(series) { -  
306 function patientMax() { -  
307 var args = Array.prototype.slice.call(arguments), -  
308 r = -Number.MAX_VALUE; -  
309   -  
310 each(args, function(t) { -  
311 if (typeof t !== 'undefined' && typeof t.length !== 'undefined') { -  
312 //r = r < t.length ? t.length : r; -  
313 if (t.length > 0) { -  
314 r = t.length; -  
315 return true; -  
316 } -  
317 } -  
318 }); -  
319   -  
320 return r; 348 * @returns {boolean} - true if the series is in boost mode
321 } 349 */
322   350 function isSeriesBoosting(series) {
323 return isChartSeriesBoosting(series.chart) || 351 return isChartSeriesBoosting(series.chart) ||
324 patientMax( 352 patientMax(
Line 1095... Line 1123...
1095 < 0) {<= preAllocated.length - 4) { points = series.points || false, 1123 < 0) {<= preAllocated.length - 4) { points = series.points || false,
1096 < 0) {<= preAllocated.length - 4) { lastX = false, 1124 < 0) {<= preAllocated.length - 4) { lastX = false,
1097 < 0) {<= preAllocated.length - 4) { minVal, 1125 < 0) {<= preAllocated.length - 4) { minVal,
1098 < 0) {<= preAllocated.length - 4) { color, 1126 < 0) {<= preAllocated.length - 4) { color,
1099 < 0) {<= preAllocated.length - 4) { scolor, 1127 < 0) {<= preAllocated.length - 4) { scolor,
1100 < 0) {<= preAllocated.length - 4) { sdata = isStacked ? series.data : (xData || rawData); 1128 < 0) {<= preAllocated.length - 4) { sdata = isStacked ? series.data : (xData || rawData),
-   1129 < 0) {<= preAllocated.length - 4) { closestLeft = {
-   1130 < 0) {<= preAllocated.length - 4) { x: Number.MIN_VALUE,
-   1131 < 0) {<= preAllocated.length - 4) { y: 0
-   1132 < 0) {<= preAllocated.length - 4) { },
-   1133 < 0) {<= preAllocated.length - 4) { closestRight = {
-   1134 < 0) {<= preAllocated.length - 4) { x: Number.MIN_VALUE,
-   1135 < 0) {<= preAllocated.length - 4) { y: 0
-   1136 < 0) {<= preAllocated.length - 4) { };
Line 1101... Line 1137...
1101 < 0) {<= preAllocated.length - 4) { 1137 < 0) {<= preAllocated.length - 4) {
1102 < 0) {<= preAllocated.length - 4) { if (options.boostData && options.boostData.length > 0) { 1138 < 0) {<= preAllocated.length - 4) { if (options.boostData && options.boostData.length > 0) {
1103 < 0) {<= preAllocated.length - 4) { return; 1139 < 0) {<= preAllocated.length - 4) { return;
Line 1174... Line 1210...
1174 < 0) {<= preAllocated.length - 4) { swidth, 1210 < 0) {<= preAllocated.length - 4) { swidth,
1175 < 0) {<= preAllocated.length - 4) { pointAttr; 1211 < 0) {<= preAllocated.length - 4) { pointAttr;
Line 1176... Line 1212...
1176 < 0) {<= preAllocated.length - 4) { 1212 < 0) {<= preAllocated.length - 4) {
1177 < 0) {<= preAllocated.length - 4) { if (plotY !== undefined && !isNaN(plotY) && point.y !== null) { 1213 < 0) {<= preAllocated.length - 4) { if (plotY !== undefined && !isNaN(plotY) && point.y !== null) {
1178 < 0) {<= preAllocated.length - 4) { shapeArgs = point.shapeArgs; -  
-   1214 < 0) {<= preAllocated.length - 4) { shapeArgs = point.shapeArgs;
-   1215 < 0) {<= preAllocated.length - 4) {
1179 < 0) {<= preAllocated.length - 4) { pointAttr = (point.pointAttr && point.pointAttr['']) || 1216 < 0) {<= preAllocated.length - 4) {
-   1217 < 0) {<= preAllocated.length - 4) { pointAttr = point.series.colorAttribs(point);
1180 < 0) {<= preAllocated.length - 4) { point.series.pointAttribs(point); 1218 < 0) {<= preAllocated.length - 4) {
Line 1181... Line 1219...
1181 < 0) {<= preAllocated.length - 4) { swidth = pointAttr['stroke-width']; 1219 < 0) {<= preAllocated.length - 4) { swidth = pointAttr['stroke-width'] || 0;
1182 < 0) {<= preAllocated.length - 4) { 1220 < 0) {<= preAllocated.length - 4) {
1183 < 0) {<= preAllocated.length - 4) { // Handle point colors 1221 < 0) {<= preAllocated.length - 4) { // Handle point colors
1184 < 0) {<= preAllocated.length - 4) { color = H.color(pointAttr.fill).rgba; 1222 < 0) {<= preAllocated.length - 4) { color = H.color(pointAttr.fill).rgba;
Line 1342... Line 1380...
1342 < 0) {<= preAllocated.length - 4) { 1380 < 0) {<= preAllocated.length - 4) {
1343 < 0) {<= preAllocated.length - 4) { if (!series.requireSorting) { 1381 < 0) {<= preAllocated.length - 4) { if (!series.requireSorting) {
1344 < 0) {<= preAllocated.length - 4) { isYInside = y >= yMin && y <= yMax; 1382 < 0) {<= preAllocated.length - 4) { isYInside = y >= yMin && y <= yMax;
Line -... Line 1383...
-   1383 < 0) {<= preAllocated.length - 4) { }
-   1384 < 0) {<= preAllocated.length - 4) {
-   1385 < 0) {<= preAllocated.length - 4) { if (x > xMax && closestRight.x < xMax) {
-   1386 < 0) {<= preAllocated.length - 4) { closestRight.x = x;
-   1387 < 0) {<= preAllocated.length - 4) { closestRight.y = y;
-   1388 < 0) {<= preAllocated.length - 4) { }
-   1389 < 0) {<= preAllocated.length - 4) {
-   1390 < 0) {<= preAllocated.length - 4) { if (x < xMin && closestLeft.x < xMin) {
-   1391 < 0) {<= preAllocated.length - 4) { closestLeft.x = x;
-   1392 < 0) {<= preAllocated.length - 4) { closestLeft.y = y;
1345 < 0) {<= preAllocated.length - 4) { } 1393 < 0) {<= preAllocated.length - 4) { }
1346 < 0) {<= preAllocated.length - 4) { 1394 < 0) {<= preAllocated.length - 4) {
1347 < 0) {<= preAllocated.length - 4) { if ((!y || !isYInside)) { 1395 < 0) {<= preAllocated.length - 4) { if (y !== 0 && (!y || !isYInside)) {
Line 1348... Line 1396...
1348 < 0) {<= preAllocated.length - 4) { return; 1396 < 0) {<= preAllocated.length - 4) { return;
1349 < 0) {<= preAllocated.length - 4) { } 1397 < 0) {<= preAllocated.length - 4) { }
Line 1425... Line 1473...
1425 < 0) {<= preAllocated.length - 4) { 1473 < 0) {<= preAllocated.length - 4) {
Line 1426... Line 1474...
1426 < 0) {<= preAllocated.length - 4) { lastX = x; 1474 < 0) {<= preAllocated.length - 4) { lastX = x;
1427 < 0) {<= preAllocated.length - 4) { 1475 < 0) {<= preAllocated.length - 4) {
-   1476 < 0) {<= preAllocated.length - 4) { //return true;
-   1477 < 0) {<= preAllocated.length - 4) { });
-   1478 < 0) {<= preAllocated.length - 4) {
-   1479 < 0) {<= preAllocated.length - 4) { function pushSupplementPoint(point) {
-   1480 < 0) {<= preAllocated.length - 4) { if (!settings.useGPUTranslations) {
-   1481 < 0) {<= preAllocated.length - 4) { inst.skipTranslation = true;
-   1482 < 0) {<= preAllocated.length - 4) { point.x = xAxis.toPixels(point.x, true);
-   1483 < 0) {<= preAllocated.length - 4) { point.y = yAxis.toPixels(point.y, true);
-   1484 < 0) {<= preAllocated.length - 4) { }
-   1485 < 0) {<= preAllocated.length - 4) {
-   1486 < 0) {<= preAllocated.length - 4) { // We should only do this for lines, and we should ignore markers
-   1487 < 0) {<= preAllocated.length - 4) { // since there's no point here that would have a marker.
-   1488 < 0) {<= preAllocated.length - 4) {
-   1489 < 0) {<= preAllocated.length - 4) { vertice(
-   1490 < 0) {<= preAllocated.length - 4) { point.x,
-   1491 < 0) {<= preAllocated.length - 4) { point.y,
-   1492 < 0) {<= preAllocated.length - 4) { 0,
-   1493 < 0) {<= preAllocated.length - 4) { 2
-   1494 < 0) {<= preAllocated.length - 4) { );
-   1495 < 0) {<= preAllocated.length - 4) { }
-   1496 < 0) {<= preAllocated.length - 4) {
-   1497 < 0) {<= preAllocated.length - 4) { if (!lastX) {
-   1498 < 0) {<= preAllocated.length - 4) { // There are no points within the selected range
-   1499 < 0) {<= preAllocated.length - 4) { pushSupplementPoint(closestLeft);
1428 < 0) {<= preAllocated.length - 4) { //return true; 1500 < 0) {<= preAllocated.length - 4) { pushSupplementPoint(closestRight);
Line 1429... Line 1501...
1429 < 0) {<= preAllocated.length - 4) { }); 1501 < 0) {<= preAllocated.length - 4) { }
1430 < 0) {<= preAllocated.length - 4) { } 1502 < 0) {<= preAllocated.length - 4) { }
1431 < 0) {<= preAllocated.length - 4) { 1503 < 0) {<= preAllocated.length - 4) {
Line 1564... Line 1636...
1564 < 0) {<= preAllocated.length - 4) { shader.bind(); 1636 < 0) {<= preAllocated.length - 4) { shader.bind();
Line 1565... Line 1637...
1565 < 0) {<= preAllocated.length - 4) { 1637 < 0) {<= preAllocated.length - 4) {
1566 < 0) {<= preAllocated.length - 4) { gl.viewport(0, 0, width, height); 1638 < 0) {<= preAllocated.length - 4) { gl.viewport(0, 0, width, height);
Line -... Line 1639...
-   1639 < 0) {<= preAllocated.length - 4) { shader.setPMatrix(orthoMatrix(width, height));
1567 < 0) {<= preAllocated.length - 4) { shader.setPMatrix(orthoMatrix(width, height)); 1640 < 0) {<= preAllocated.length - 4) {
-   1641 < 0) {<= preAllocated.length - 4) { if (settings.lineWidth > 1 && !H.isMS) {
Line 1568... Line 1642...
1568 < 0) {<= preAllocated.length - 4) { 1642 < 0) {<= preAllocated.length - 4) { gl.lineWidth(settings.lineWidth);
1569 < 0) {<= preAllocated.length - 4) { gl.lineWidth(settings.lineWidth); 1643 < 0) {<= preAllocated.length - 4) { }
Line 1570... Line 1644...
1570 < 0) {<= preAllocated.length - 4) { 1644 < 0) {<= preAllocated.length - 4) {
Line 1614... Line 1688...
1614 < 0) {<= preAllocated.length - 4) { if (!settings.useAlpha) { 1688 < 0) {<= preAllocated.length - 4) { if (!settings.useAlpha) {
1615 < 0) {<= preAllocated.length - 4) { color[3] = 1.0; 1689 < 0) {<= preAllocated.length - 4) { color[3] = 1.0;
1616 < 0) {<= preAllocated.length - 4) { } 1690 < 0) {<= preAllocated.length - 4) { }
Line 1617... Line 1691...
1617 < 0) {<= preAllocated.length - 4) { 1691 < 0) {<= preAllocated.length - 4) {
1618 < 0) {<= preAllocated.length - 4) { //Blending 1692 < 0) {<= preAllocated.length - 4) { //Blending
1619 < 0) {<= preAllocated.length - 4) { if (options.boostBlending === 'add') { // docs 1693 < 0) {<= preAllocated.length - 4) { if (options.boostBlending === 'add') {
1620 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.SRC_ALPHA, gl.ONE); 1694 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
Line 1621... Line 1695...
1621 < 0) {<= preAllocated.length - 4) { gl.blendEquation(gl.FUNC_ADD); 1695 < 0) {<= preAllocated.length - 4) { gl.blendEquation(gl.FUNC_ADD);
1622 < 0) {<= preAllocated.length - 4) { 1696 < 0) {<= preAllocated.length - 4) {
Line 1626... Line 1700...
1626 < 0) {<= preAllocated.length - 4) { } else if (options.boostBlending === 'darken') { 1700 < 0) {<= preAllocated.length - 4) { } else if (options.boostBlending === 'darken') {
1627 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.ONE, gl.ONE); 1701 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.ONE, gl.ONE);
1628 < 0) {<= preAllocated.length - 4) { gl.blendEquation(gl.FUNC_MIN); 1702 < 0) {<= preAllocated.length - 4) { gl.blendEquation(gl.FUNC_MIN);
Line 1629... Line 1703...
1629 < 0) {<= preAllocated.length - 4) { 1703 < 0) {<= preAllocated.length - 4) {
1630 < 0) {<= preAllocated.length - 4) { } else { 1704 < 0) {<= preAllocated.length - 4) { } else {
1631 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); //, gl.ONE, gl.ZERO); 1705 < 0) {<= preAllocated.length - 4) { //gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);//, gl.ONE, gl.ZERO);
-   1706 < 0) {<= preAllocated.length - 4) { //gl.blendEquation(gl.FUNC_ADD);
1632 < 0) {<= preAllocated.length - 4) { gl.blendEquation(gl.FUNC_ADD); 1707 < 0) {<= preAllocated.length - 4) { gl.blendFuncSeparate(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA, gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
Line 1633... Line 1708...
1633 < 0) {<= preAllocated.length - 4) { } 1708 < 0) {<= preAllocated.length - 4) { }
Line 1634... Line 1709...
1634 < 0) {<= preAllocated.length - 4) { 1709 < 0) {<= preAllocated.length - 4) {
Line 1735... Line 1810...
1735 < 0) {<= preAllocated.length - 4) { * Init OpenGL 1810 < 0) {<= preAllocated.length - 4) { * Init OpenGL
1736 < 0) {<= preAllocated.length - 4) { * @param canvas {HTMLCanvas} - the canvas to render to 1811 < 0) {<= preAllocated.length - 4) { * @param canvas {HTMLCanvas} - the canvas to render to
1737 < 0) {<= preAllocated.length - 4) { */ 1812 < 0) {<= preAllocated.length - 4) { */
1738 < 0) {<= preAllocated.length - 4) { function init(canvas, noFlush) { 1813 < 0) {<= preAllocated.length - 4) { function init(canvas, noFlush) {
1739 < 0) {<= preAllocated.length - 4) { var i = 0, 1814 < 0) {<= preAllocated.length - 4) { var i = 0,
1740 < 0) {<= preAllocated.length - 4) { activeContext, -  
1741 < 0) {<= preAllocated.length - 4) { contexts = [ 1815 < 0) {<= preAllocated.length - 4) { contexts = [
1742 < 0) {<= preAllocated.length - 4) { 'webgl', 1816 < 0) {<= preAllocated.length - 4) { 'webgl',
1743 < 0) {<= preAllocated.length - 4) { 'experimental-webgl', 1817 < 0) {<= preAllocated.length - 4) { 'experimental-webgl',
1744 < 0) {<= preAllocated.length - 4) { 'moz-webgl', 1818 < 0) {<= preAllocated.length - 4) { 'moz-webgl',
1745 < 0) {<= preAllocated.length - 4) { 'webkit-3d' 1819 < 0) {<= preAllocated.length - 4) { 'webkit-3d'
Line 1756... Line 1830...
1756 < 0) {<= preAllocated.length - 4) { } 1830 < 0) {<= preAllocated.length - 4) { }
Line 1757... Line 1831...
1757 < 0) {<= preAllocated.length - 4) { 1831 < 0) {<= preAllocated.length - 4) {
1758 < 0) {<= preAllocated.length - 4) { for (; i < contexts.length; i++) { 1832 < 0) {<= preAllocated.length - 4) { for (; i < contexts.length; i++) {
1759 < 0) {<= preAllocated.length - 4) { gl = canvas.getContext(contexts[i]); 1833 < 0) {<= preAllocated.length - 4) { gl = canvas.getContext(contexts[i]);
1760 < 0) {<= preAllocated.length - 4) { if (gl) { -  
1761 < 0) {<= preAllocated.length - 4) { activeContext = contexts[i]; 1834 < 0) {<= preAllocated.length - 4) { if (gl) {
1762 < 0) {<= preAllocated.length - 4) { break; 1835 < 0) {<= preAllocated.length - 4) { break;
1763 < 0) {<= preAllocated.length - 4) { } 1836 < 0) {<= preAllocated.length - 4) { }
Line 1764... Line 1837...
1764 < 0) {<= preAllocated.length - 4) { } 1837 < 0) {<= preAllocated.length - 4) { }
Line 2228... Line 2301...
2228 < 0) {<= preAllocated.length - 4) { } 2301 < 0) {<= preAllocated.length - 4) { }
Line 2229... Line 2302...
2229 < 0) {<= preAllocated.length - 4) { 2302 < 0) {<= preAllocated.length - 4) {
2230 < 0) {<= preAllocated.length - 4) { return false; 2303 < 0) {<= preAllocated.length - 4) { return false;
Line -... Line 2304...
-   2304 < 0) {<= preAllocated.length - 4) { }
-   2305 < 0) {<= preAllocated.length - 4) {
-   2306 < 0) {<= preAllocated.length - 4) { /* Used for treemap|heatmap.drawPoints */
-   2307 < 0) {<= preAllocated.length - 4) { function pointDrawHandler(proceed) {
-   2308 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this)) {
-   2309 < 0) {<= preAllocated.length - 4) { return proceed.call(this);
-   2310 < 0) {<= preAllocated.length - 4) { }
-   2311 < 0) {<= preAllocated.length - 4) {
-   2312 < 0) {<= preAllocated.length - 4) { //Make sure we have a valid OGL context
-   2313 < 0) {<= preAllocated.length - 4) { var renderer = createAndAttachRenderer(this.chart, this);
-   2314 < 0) {<= preAllocated.length - 4) {
-   2315 < 0) {<= preAllocated.length - 4) { if (renderer) {
-   2316 < 0) {<= preAllocated.length - 4) { allocateIfNotSeriesBoosting(renderer, this);
-   2317 < 0) {<= preAllocated.length - 4) { renderer.pushSeries(this);
-   2318 < 0) {<= preAllocated.length - 4) { }
-   2319 < 0) {<= preAllocated.length - 4) {
-   2320 < 0) {<= preAllocated.length - 4) { renderIfNotSeriesBoosting(renderer, this);
-   2321 < 0) {<= preAllocated.length - 4) { }
-   2322 < 0) {<= preAllocated.length - 4) {
2231 < 0) {<= preAllocated.length - 4) { } 2323 < 0) {<= preAllocated.length - 4) {
2232 < 0) {<= preAllocated.length - 4) { 2324 < 0) {<= preAllocated.length - 4) {
Line 2233... Line 2325...
2233 < 0) {<= preAllocated.length - 4) { //////////////////////////////////////////////////////////////////////////////// 2325 < 0) {<= preAllocated.length - 4) { ////////////////////////////////////////////////////////////////////////////////
2234 < 0) {<= preAllocated.length - 4) { // We're wrapped in a closure, so just return if there's no webgl support 2326 < 0) {<= preAllocated.length - 4) { // We're wrapped in a closure, so just return if there's no webgl support
2235 < 0) {<= preAllocated.length - 4) { 2327 < 0) {<= preAllocated.length - 4) {
2236 < 0) {<= preAllocated.length - 4) { if (!hasWebGLSupport()) { 2328 < 0) {<= preAllocated.length - 4) { if (!hasWebGLSupport()) {
2237 < 0) {<= preAllocated.length - 4) { if (typeof H.initCanvasBoost !== 'undefined') { 2329 < 0) {<= preAllocated.length - 4) { if (typeof H.initCanvasBoost !== 'undefined') {
2238 < 0) {<= preAllocated.length - 4) { // Fallback to canvas boost 2330 < 0) {<= preAllocated.length - 4) { // Fallback to canvas boost
2239 < 0) {<= preAllocated.length - 4) { H.initCanvasBoost(); 2331 < 0) {<= preAllocated.length - 4) { H.initCanvasBoost();
2240 < 0) {<= preAllocated.length - 4) { } else { -  
2241 < 0) {<= preAllocated.length - 4) { H.error(26); 2332 < 0) {<= preAllocated.length - 4) { } else {
2242 < 0) {<= preAllocated.length - 4) { } -  
2243 < 0) {<= preAllocated.length - 4) { //eslint-disable -  
Line 2244... Line 2333...
2244 < 0) {<= preAllocated.length - 4) { return; 2333 < 0) {<= preAllocated.length - 4) { H.error(26);
2245 < 0) {<= preAllocated.length - 4) { //eslint-enable 2334 < 0) {<= preAllocated.length - 4) { }
Line 2246... Line 2335...
2246 < 0) {<= preAllocated.length - 4) { } 2335 < 0) {<= preAllocated.length - 4) { } else {
2247 < 0) {<= preAllocated.length - 4) { 2336 < 0) {<= preAllocated.length - 4) {
2248 < 0) {<= preAllocated.length - 4) { //////////////////////////////////////////////////////////////////////////////// 2337 < 0) {<= preAllocated.length - 4) { ////////////////////////////////////////////////////////////////////////////
2249 < 0) {<= preAllocated.length - 4) { // GL-SPECIFIC WRAPPINGS FOLLOWS 2338 < 0) {<= preAllocated.length - 4) { // GL-SPECIFIC WRAPPINGS FOLLOWS
2250 < 0) {<= preAllocated.length - 4) { 2339 < 0) {<= preAllocated.length - 4) {
2251 < 0) {<= preAllocated.length - 4) { /** If the series is a heatmap or treemap, or if the series is not boosting 2340 < 0) {<= preAllocated.length - 4) { /** If the series is a heatmap or treemap, or if the series is not boosting
2252 < 0) {<= preAllocated.length - 4) { * do the default behaviour. Otherwise, process if the series has no 2341 < 0) {<= preAllocated.length - 4) { * do the default behaviour. Otherwise, process if the series has no
2253 < 0) {<= preAllocated.length - 4) { * extremes. 2342 < 0) {<= preAllocated.length - 4) { * extremes.
2254 < 0) {<= preAllocated.length - 4) { */ 2343 < 0) {<= preAllocated.length - 4) { */
2255 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'processData', function(proceed) { 2344 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'processData', function(proceed) {
2256 < 0) {<= preAllocated.length - 4) { // If this is a heatmap, do default behaviour 2345 < 0) {<= preAllocated.length - 4) { // If this is a heatmap, do default behaviour
Line 2257... Line 2346...
2257 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this) || 2346 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this) ||
2258 < 0) {<= preAllocated.length - 4) { this.type === 'heatmap' || 2347 < 0) {<= preAllocated.length - 4) { this.type === 'heatmap' ||
2259 < 0) {<= preAllocated.length - 4) { this.type === 'treemap') { 2348 < 0) {<= preAllocated.length - 4) { this.type === 'treemap') {
2260 < 0) {<= preAllocated.length - 4) { proceed.apply(this, Array.prototype.slice.call(arguments, 1)); 2349 < 0) {<= preAllocated.length - 4) { proceed.apply(this, Array.prototype.slice.call(arguments, 1));
Line 2261... Line 2350...
2261 < 0) {<= preAllocated.length - 4) { } 2350 < 0) {<= preAllocated.length - 4) { }
2262 < 0) {<= preAllocated.length - 4) { 2351 < 0) {<= preAllocated.length - 4) {
2263 < 0) {<= preAllocated.length - 4) { if (!this.hasExtremes || !this.hasExtremes(true)) { 2352 < 0) {<= preAllocated.length - 4) { if (!this.hasExtremes || !this.hasExtremes(true)) {
2264 < 0) {<= preAllocated.length - 4) { proceed.apply(this, Array.prototype.slice.call(arguments, 1)); 2353 < 0) {<= preAllocated.length - 4) { proceed.apply(this, Array.prototype.slice.call(arguments, 1));
2265 < 0) {<= preAllocated.length - 4) { } 2354 < 0) {<= preAllocated.length - 4) { }
2266 < 0) {<= preAllocated.length - 4) { }); 2355 < 0) {<= preAllocated.length - 4) { });
2267 < 0) {<= preAllocated.length - 4) { 2356 < 0) {<= preAllocated.length - 4) {
2268 < 0) {<= preAllocated.length - 4) { H.extend(Series.prototype, { 2357 < 0) {<= preAllocated.length - 4) { H.extend(Series.prototype, {
2269 < 0) {<= preAllocated.length - 4) { pointRange: 0, 2358 < 0) {<= preAllocated.length - 4) { pointRange: 0,
2270 < 0) {<= preAllocated.length - 4) { directTouch: false, 2359 < 0) {<= preAllocated.length - 4) { directTouch: false,
2271 < 0) {<= preAllocated.length - 4) { allowDG: false, // No data grouping, let boost handle large data 2360 < 0) {<= preAllocated.length - 4) { allowDG: false, // No data grouping, let boost handle large data
2272 < 0) {<= preAllocated.length - 4) { hasExtremes: function(checkX) { 2361 < 0) {<= preAllocated.length - 4) { hasExtremes: function(checkX) {
2273 < 0) {<= preAllocated.length - 4) { var options = this.options, 2362 < 0) {<= preAllocated.length - 4) { var options = this.options,
2274 < 0) {<= preAllocated.length - 4) { data = options.data, 2363 < 0) {<= preAllocated.length - 4) { data = options.data,
Line 2275... Line 2364...
2275 < 0) {<= preAllocated.length - 4) { xAxis = this.xAxis && this.xAxis.options, 2364 < 0) {<= preAllocated.length - 4) { xAxis = this.xAxis && this.xAxis.options,
2276 < 0) {<= preAllocated.length - 4) { yAxis = this.yAxis && this.yAxis.options; 2365 < 0) {<= preAllocated.length - 4) { yAxis = this.yAxis && this.yAxis.options;
2277 < 0) {<= preAllocated.length - 4) { 2366 < 0) {<= preAllocated.length - 4) {
2278 < 0) {<= preAllocated.length - 4) { return data.length > (options.boostThreshold || Number.MAX_VALUE) && 2367 < 0) {<= preAllocated.length - 4) { return data.length > (options.boostThreshold || Number.MAX_VALUE) &&
2279 < 0) {<= preAllocated.length - 4) { isNumber(yAxis.min) && isNumber(yAxis.max) && 2368 < 0) {<= preAllocated.length - 4) { isNumber(yAxis.min) && isNumber(yAxis.max) &&
2280 < 0) {<= preAllocated.length - 4) { (!checkX || (isNumber(xAxis.min) && isNumber(xAxis.max))); 2369 < 0) {<= preAllocated.length - 4) { (!checkX || (isNumber(xAxis.min) && isNumber(xAxis.max)));
2281 < 0) {<= preAllocated.length - 4) { }, 2370 < 0) {<= preAllocated.length - 4) { },
2282 < 0) {<= preAllocated.length - 4) { 2371 < 0) {<= preAllocated.length - 4) {
2283 < 0) {<= preAllocated.length - 4) { /** 2372 < 0) {<= preAllocated.length - 4) { /**
2284 < 0) {<= preAllocated.length - 4) { * If implemented in the core, parts of this can probably be 2373 < 0) {<= preAllocated.length - 4) { * If implemented in the core, parts of this can probably be
2285 < 0) {<= preAllocated.length - 4) { * shared with other similar methods in Highcharts. 2374 < 0) {<= preAllocated.length - 4) { * shared with other similar methods in Highcharts.
2286 < 0) {<= preAllocated.length - 4) { */ 2375 < 0) {<= preAllocated.length - 4) { */
2287 < 0) {<= preAllocated.length - 4) { destroyGraphics: function() { 2376 < 0) {<= preAllocated.length - 4) { destroyGraphics: function() {
2288 < 0) {<= preAllocated.length - 4) { var series = this, 2377 < 0) {<= preAllocated.length - 4) { var series = this,
2289 < 0) {<= preAllocated.length - 4) { points = this.points, 2378 < 0) {<= preAllocated.length - 4) { points = this.points,
-   2379 < 0) {<= preAllocated.length - 4) { point,
2290 < 0) {<= preAllocated.length - 4) { point, 2380 < 0) {<= preAllocated.length - 4) { i;
2291 < 0) {<= preAllocated.length - 4) { i; 2381 < 0) {<= preAllocated.length - 4) {
2292 < 0) {<= preAllocated.length - 4) { -  
Line 2293... Line 2382...
2293 < 0) {<= preAllocated.length - 4) { if (points) { 2382 < 0) {<= preAllocated.length - 4) { if (points) {
2294 < 0) {<= preAllocated.length - 4) { for (i = 0; i < points.length; i = i + 1) { 2383 < 0) {<= preAllocated.length - 4) { for (i = 0; i < points.length; i = i + 1) {
2295 < 0) {<= preAllocated.length - 4) { point = points[i]; 2384 < 0) {<= preAllocated.length - 4) { point = points[i];
2296 < 0) {<= preAllocated.length - 4) { if (point && point.graphic) { 2385 < 0) {<= preAllocated.length - 4) { if (point && point.graphic) {
2297 < 0) {<= preAllocated.length - 4) { point.graphic = point.graphic.destroy(); 2386 < 0) {<= preAllocated.length - 4) { point.graphic = point.graphic.destroy();
2298 < 0) {<= preAllocated.length - 4) { } 2387 < 0) {<= preAllocated.length - 4) { }
Line 2299... Line 2388...
2299 < 0) {<= preAllocated.length - 4) { } 2388 < 0) {<= preAllocated.length - 4) { }
2300 < 0) {<= preAllocated.length - 4) { } 2389 < 0) {<= preAllocated.length - 4) { }
2301 < 0) {<= preAllocated.length - 4) { 2390 < 0) {<= preAllocated.length - 4) {
2302 < 0) {<= preAllocated.length - 4) { each(['graph', 'area', 'tracker'], function(prop) { 2391 < 0) {<= preAllocated.length - 4) { each(['graph', 'area', 'tracker'], function(prop) {
2303 < 0) {<= preAllocated.length - 4) { if (series[prop]) { 2392 < 0) {<= preAllocated.length - 4) { if (series[prop]) {
2304 < 0) {<= preAllocated.length - 4) { series[prop] = series[prop].destroy(); 2393 < 0) {<= preAllocated.length - 4) { series[prop] = series[prop].destroy();
2305 < 0) {<= preAllocated.length - 4) { } 2394 < 0) {<= preAllocated.length - 4) { }
2306 < 0) {<= preAllocated.length - 4) { }); 2395 < 0) {<= preAllocated.length - 4) { });
2307 < 0) {<= preAllocated.length - 4) { }, 2396 < 0) {<= preAllocated.length - 4) { },
2308 < 0) {<= preAllocated.length - 4) { 2397 < 0) {<= preAllocated.length - 4) {
2309 < 0) {<= preAllocated.length - 4) { renderCanvas: function() { 2398 < 0) {<= preAllocated.length - 4) { renderCanvas: function() {
-   2399 < 0) {<= preAllocated.length - 4) { var series = this,
-   2400 < 0) {<= preAllocated.length - 4) { options = series.options || {},
-   2401 < 0) {<= preAllocated.length - 4) { renderer = false,
-   2402 < 0) {<= preAllocated.length - 4) { chart = series.chart,
-   2403 < 0) {<= preAllocated.length - 4) { xAxis = this.xAxis,
-   2404 < 0) {<= preAllocated.length - 4) { yAxis = this.yAxis,
-   2405 < 0) {<= preAllocated.length - 4) { //ctx,
-   2406 < 0) {<= preAllocated.length - 4) { //c = 0,
-   2407 < 0) {<= preAllocated.length - 4) { xData = options.xData || series.processedXData,
-   2408 < 0) {<= preAllocated.length - 4) { yData = options.yData || series.processedYData,
-   2409 < 0) {<= preAllocated.length - 4) {
-   2410 < 0) {<= preAllocated.length - 4) { rawData = options.data,
-   2411 < 0) {<= preAllocated.length - 4) { xExtremes = xAxis.getExtremes(),
-   2412 < 0) {<= preAllocated.length - 4) { xMin = xExtremes.min,
-   2413 < 0) {<= preAllocated.length - 4) { xMax = xExtremes.max,
-   2414 < 0) {<= preAllocated.length - 4) { yExtremes = yAxis.getExtremes(),
-   2415 < 0) {<= preAllocated.length - 4) { yMin = yExtremes.min,
-   2416 < 0) {<= preAllocated.length - 4) { yMax = yExtremes.max,
-   2417 < 0) {<= preAllocated.length - 4) { pointTaken = {},
-   2418 < 0) {<= preAllocated.length - 4) { lastClientX,
-   2419 < 0) {<= preAllocated.length - 4) { sampling = !!series.sampling,
-   2420 < 0) {<= preAllocated.length - 4) { points,
-   2421 < 0) {<= preAllocated.length - 4) { enableMouseTracking = options.enableMouseTracking !== false,
-   2422 < 0) {<= preAllocated.length - 4) { threshold = options.threshold,
-   2423 < 0) {<= preAllocated.length - 4) { yBottom = yAxis.getThreshold(threshold),
-   2424 < 0) {<= preAllocated.length - 4) { isRange = series.pointArrayMap &&
-   2425 < 0) {<= preAllocated.length - 4) { series.pointArrayMap.join(',') === 'low,high',
-   2426 < 0) {<= preAllocated.length - 4) { isStacked = !!options.stacking,
-   2427 < 0) {<= preAllocated.length - 4) { cropStart = series.cropStart || 0,
-   2428 < 0) {<= preAllocated.length - 4) { requireSorting = series.requireSorting,
-   2429 < 0) {<= preAllocated.length - 4) { useRaw = !xData,
-   2430 < 0) {<= preAllocated.length - 4) { minVal,
-   2431 < 0) {<= preAllocated.length - 4) { maxVal,
-   2432 < 0) {<= preAllocated.length - 4) { minI,
-   2433 < 0) {<= preAllocated.length - 4) { maxI,
-   2434 < 0) {<= preAllocated.length - 4) {
-   2435 < 0) {<= preAllocated.length - 4) { addKDPoint = function(clientX, plotY, i) {
-   2436 < 0) {<= preAllocated.length - 4) { //Shaves off about 60ms compared to repeated concatination
-   2437 < 0) {<= preAllocated.length - 4) { index = clientX + ',' + plotY;
-   2438 < 0) {<= preAllocated.length - 4) {
Line 2310... Line 2439...
2310 < 0) {<= preAllocated.length - 4) { var series = this, 2439 < 0) {<= preAllocated.length - 4) { // The k-d tree requires series points.
2311 < 0) {<= preAllocated.length - 4) { options = series.options || {}, -  
2312 < 0) {<= preAllocated.length - 4) { renderer = false, -  
2313 < 0) {<= preAllocated.length - 4) { chart = series.chart, -  
2314 < 0) {<= preAllocated.length - 4) { xAxis = this.xAxis, -  
2315 < 0) {<= preAllocated.length - 4) { yAxis = this.yAxis, -  
2316 < 0) {<= preAllocated.length - 4) { //ctx, -  
2317 < 0) {<= preAllocated.length - 4) { //c = 0, -  
2318 < 0) {<= preAllocated.length - 4) { xData = options.xData || series.processedXData, -  
2319 < 0) {<= preAllocated.length - 4) { yData = options.yData || series.processedYData, -  
2320 < 0) {<= preAllocated.length - 4) { -  
2321 < 0) {<= preAllocated.length - 4) { rawData = options.data, -  
2322 < 0) {<= preAllocated.length - 4) { xExtremes = xAxis.getExtremes(), -  
2323 < 0) {<= preAllocated.length - 4) { xMin = xExtremes.min, -  
2324 < 0) {<= preAllocated.length - 4) { xMax = xExtremes.max, -  
2325 < 0) {<= preAllocated.length - 4) { yExtremes = yAxis.getExtremes(), -  
2326 < 0) {<= preAllocated.length - 4) { yMin = yExtremes.min, -  
2327 < 0) {<= preAllocated.length - 4) { yMax = yExtremes.max, -  
2328 < 0) {<= preAllocated.length - 4) { pointTaken = {}, -  
2329 < 0) {<= preAllocated.length - 4) { lastClientX, -  
2330 < 0) {<= preAllocated.length - 4) { sampling = !!series.sampling, -  
2331 < 0) {<= preAllocated.length - 4) { points, -  
2332 < 0) {<= preAllocated.length - 4) { // r = options.marker && options.marker.radius, -  
2333 < 0) {<= preAllocated.length - 4) { // cvsDrawPoint = this.cvsDrawPoint, -  
2334 < 0) {<= preAllocated.length - 4) { // cvsLineTo = options.lineWidth ? this.cvsLineTo : false, -  
2335 < 0) {<= preAllocated.length - 4) { // cvsMarker = r <= 1 ? this.cvsMarkerSquare : this.cvsMarkerCircle, -  
2336 < 0) {<= preAllocated.length - 4) { enableMouseTracking = options.enableMouseTracking !== false, -  
2337 < 0) {<= preAllocated.length - 4) { // lastPoint, -  
2338 < 0) {<= preAllocated.length - 4) { threshold = options.threshold, -  
2339 < 0) {<= preAllocated.length - 4) { yBottom = yAxis.getThreshold(threshold), -  
2340 < 0) {<= preAllocated.length - 4) { hasThreshold = isNumber(threshold), -  
2341 < 0) {<= preAllocated.length - 4) { // translatedThreshold = yBottom, -  
2342 < 0) {<= preAllocated.length - 4) { // doFill = this.fill, -  
2343 < 0) {<= preAllocated.length - 4) { isRange = series.pointArrayMap && -  
2344 < 0) {<= preAllocated.length - 4) { series.pointArrayMap.join(',') === 'low,high', -  
2345 < 0) {<= preAllocated.length - 4) { isStacked = !!options.stacking, -  
2346 < 0) {<= preAllocated.length - 4) { cropStart = series.cropStart || 0, -  
2347 < 0) {<= preAllocated.length - 4) { requireSorting = series.requireSorting, -  
2348 < 0) {<= preAllocated.length - 4) { wasNull, -  
2349 < 0) {<= preAllocated.length - 4) { connectNulls = options.connectNulls, -  
2350 < 0) {<= preAllocated.length - 4) { useRaw = !xData, -  
2351 < 0) {<= preAllocated.length - 4) { minVal, 2440 < 0) {<= preAllocated.length - 4) { // Reduce the amount of points, since the time to build the
2352 < 0) {<= preAllocated.length - 4) { maxVal, -  
2353 < 0) {<= preAllocated.length - 4) { minI, -  
2354 < 0) {<= preAllocated.length - 4) { maxI, -  
2355 < 0) {<= preAllocated.length - 4) { // fillColor = series.fillOpacity ? -  
2356 < 0) {<= preAllocated.length - 4) { // new Color(series.color).setOpacity( -  
2357 < 0) {<= preAllocated.length - 4) { // pick(options.fillOpacity, 0.75) 2441 < 0) {<= preAllocated.length - 4) { // tree increases exponentially.
2358 < 0) {<= preAllocated.length - 4) { // ).get() : series.color, -  
2359 < 0) {<= preAllocated.length - 4) { 2442 < 0) {<= preAllocated.length - 4) { if (enableMouseTracking && !pointTaken[index]) {
2360 < 0) {<= preAllocated.length - 4) { addKDPoint = function(clientX, plotY, i) { 2443 < 0) {<= preAllocated.length - 4) { pointTaken[index] = true;
2361 < 0) {<= preAllocated.length - 4) { //Shaves off about 60ms compared to repeated concatination 2444 < 0) {<= preAllocated.length - 4) {
2362 < 0) {<= preAllocated.length - 4) { index = clientX + ',' + plotY; 2445 < 0) {<= preAllocated.length - 4) { if (chart.inverted) {
-   2446 < 0) {<= preAllocated.length - 4) { clientX = xAxis.len - clientX;
-   2447 < 0) {<= preAllocated.length - 4) { plotY = yAxis.len - plotY;
-   2448 < 0) {<= preAllocated.length - 4) { }
-   2449 < 0) {<= preAllocated.length - 4) {
Line 2363... Line 2450...
2363 < 0) {<= preAllocated.length - 4) { 2450 < 0) {<= preAllocated.length - 4) { points.push({
2364 < 0) {<= preAllocated.length - 4) { // The k-d tree requires series points. 2451 < 0) {<= preAllocated.length - 4) { clientX: clientX,
2365 < 0) {<= preAllocated.length - 4) { // Reduce the amount of points, since the time to build the 2452 < 0) {<= preAllocated.length - 4) { plotX: clientX,
2366 < 0) {<= preAllocated.length - 4) { // tree increases exponentially. 2453 < 0) {<= preAllocated.length - 4) { plotY: plotY,
2367 < 0) {<= preAllocated.length - 4) { if (enableMouseTracking && !pointTaken[index]) { 2454 < 0) {<= preAllocated.length - 4) { i: cropStart + i
2368 < 0) {<= preAllocated.length - 4) { pointTaken[index] = true; 2455 < 0) {<= preAllocated.length - 4) { });
2369 < 0) {<= preAllocated.length - 4) { 2456 < 0) {<= preAllocated.length - 4) { }
2370 < 0) {<= preAllocated.length - 4) { if (chart.inverted) { -  
2371 < 0) {<= preAllocated.length - 4) { clientX = xAxis.len - clientX; -  
2372 < 0) {<= preAllocated.length - 4) { plotY = yAxis.len - plotY; -  
2373 < 0) {<= preAllocated.length - 4) { } -  
2374 < 0) {<= preAllocated.length - 4) { -  
2375 < 0) {<= preAllocated.length - 4) { points.push({ -  
2376 < 0) {<= preAllocated.length - 4) { clientX: clientX, -  
2377 < 0) {<= preAllocated.length - 4) { plotX: clientX, -  
2378 < 0) {<= preAllocated.length - 4) { plotY: plotY, -  
2379 < 0) {<= preAllocated.length - 4) { i: cropStart + i -  
2380 < 0) {<= preAllocated.length - 4) { }); 2457 < 0) {<= preAllocated.length - 4) { };
2381 < 0) {<= preAllocated.length - 4) { } 2458 < 0) {<= preAllocated.length - 4) {
2382 < 0) {<= preAllocated.length - 4) { }; -  
2383 < 0) {<= preAllocated.length - 4) { -  
Line 2384... Line 2459...
2384 < 0) {<= preAllocated.length - 4) { // Get or create the renderer 2459 < 0) {<= preAllocated.length - 4) { // Get or create the renderer
2385 < 0) {<= preAllocated.length - 4) { renderer = createAndAttachRenderer(chart, series); 2460 < 0) {<= preAllocated.length - 4) { renderer = createAndAttachRenderer(chart, series);
2386 < 0) {<= preAllocated.length - 4) { 2461 < 0) {<= preAllocated.length - 4) {
2387 < 0) {<= preAllocated.length - 4) { if (!this.visible) { -  
2388 < 0) {<= preAllocated.length - 4) { if (!isChartSeriesBoosting(chart) && renderer) { -  
2389 < 0) {<= preAllocated.length - 4) { renderer.clear(); -  
2390 < 0) {<= preAllocated.length - 4) { this.image.attr({ -  
2391 < 0) {<= preAllocated.length - 4) { href: '' -  
2392 < 0) {<= preAllocated.length - 4) { }); -  
2393 < 0) {<= preAllocated.length - 4) { } -  
2394 < 0) {<= preAllocated.length - 4) { return; -  
2395 < 0) {<= preAllocated.length - 4) { } -  
2396 < 0) {<= preAllocated.length - 4) { -  
2397 < 0) {<= preAllocated.length - 4) { // If we are zooming out from SVG mode, destroy the graphics -  
2398 < 0) {<= preAllocated.length - 4) { if (this.points || this.graph) { 2462 < 0) {<= preAllocated.length - 4) { if (!this.visible) {
2399 < 0) {<= preAllocated.length - 4) { this.destroyGraphics(); -  
2400 < 0) {<= preAllocated.length - 4) { } -  
2401 < 0) {<= preAllocated.length - 4) { -  
2402 < 0) {<= preAllocated.length - 4) { // If we're rendering per. series we should create the marker groups -  
2403 < 0) {<= preAllocated.length - 4) { // as usual. -  
2404 < 0) {<= preAllocated.length - 4) { if (!isChartSeriesBoosting(chart)) { -  
Line -... Line 2463...
-   2463 < 0) {<= preAllocated.length - 4) { if (!isChartSeriesBoosting(chart) && renderer) {
-   2464 < 0) {<= preAllocated.length - 4) { renderer.clear();
2405 < 0) {<= preAllocated.length - 4) { this.markerGroup = series.plotGroup( 2465 < 0) {<= preAllocated.length - 4) { this.image.attr({
-   2466 < 0) {<= preAllocated.length - 4) { href: ''
2406 < 0) {<= preAllocated.length - 4) { 'markerGroup', 2467 < 0) {<= preAllocated.length - 4) { });
-   2468 < 0) {<= preAllocated.length - 4) { }
-   2469 < 0) {<= preAllocated.length - 4) { return;
-   2470 < 0) {<= preAllocated.length - 4) { }
-   2471 < 0) {<= preAllocated.length - 4) {
-   2472 < 0) {<= preAllocated.length - 4) { // If we are zooming out from SVG mode, destroy the graphics
-   2473 < 0) {<= preAllocated.length - 4) { if (this.points || this.graph) {
-   2474 < 0) {<= preAllocated.length - 4) { this.destroyGraphics();
-   2475 < 0) {<= preAllocated.length - 4) { }
-   2476 < 0) {<= preAllocated.length - 4) {
Line 2407... Line -...
2407 < 0) {<= preAllocated.length - 4) { 'markers', -  
2408 < 0) {<= preAllocated.length - 4) { true, -  
2409 < 0) {<= preAllocated.length - 4) { 1, 2477 < 0) {<= preAllocated.length - 4) { // If we're rendering per. series we should create the marker groups
2410 < 0) {<= preAllocated.length - 4) { chart.seriesGroup -  
2411 < 0) {<= preAllocated.length - 4) { ); -  
2412 < 0) {<= preAllocated.length - 4) { } else { -  
2413 < 0) {<= preAllocated.length - 4) { //Use a single group for the markers -  
Line 2414... Line 2478...
2414 < 0) {<= preAllocated.length - 4) { this.markerGroup = chart.markerGroup; 2478 < 0) {<= preAllocated.length - 4) { // as usual.
2415 < 0) {<= preAllocated.length - 4) { } -  
2416 < 0) {<= preAllocated.length - 4) { -  
2417 < 0) {<= preAllocated.length - 4) { points = this.points = []; -  
2418 < 0) {<= preAllocated.length - 4) { -  
2419 < 0) {<= preAllocated.length - 4) { // Do not start building while drawing -  
2420 < 0) {<= preAllocated.length - 4) { series.buildKDTree = noop; -  
2421 < 0) {<= preAllocated.length - 4) { -  
2422 < 0) {<= preAllocated.length - 4) { if (renderer) { -  
2423 < 0) {<= preAllocated.length - 4) { allocateIfNotSeriesBoosting(renderer, this); 2479 < 0) {<= preAllocated.length - 4) { if (!isChartSeriesBoosting(chart)) {
Line 2424... Line 2480...
2424 < 0) {<= preAllocated.length - 4) { renderer.pushSeries(series); 2480 < 0) {<= preAllocated.length - 4) { this.markerGroup = series.plotGroup(
-   2481 < 0) {<= preAllocated.length - 4) { 'markerGroup',
-   2482 < 0) {<= preAllocated.length - 4) { 'markers',
-   2483 < 0) {<= preAllocated.length - 4) { true,
-   2484 < 0) {<= preAllocated.length - 4) { 1,
-   2485 < 0) {<= preAllocated.length - 4) { chart.seriesGroup
-   2486 < 0) {<= preAllocated.length - 4) { );
-   2487 < 0) {<= preAllocated.length - 4) { } else {
2425 < 0) {<= preAllocated.length - 4) { // Perform the actual renderer if we're on series level 2488 < 0) {<= preAllocated.length - 4) { //Use a single group for the markers
-   2489 < 0) {<= preAllocated.length - 4) { this.markerGroup = chart.markerGroup;
2426 < 0) {<= preAllocated.length - 4) { renderIfNotSeriesBoosting(renderer, this, chart); 2490 < 0) {<= preAllocated.length - 4) { }
2427 < 0) {<= preAllocated.length - 4) { //console.log(series, chart); 2491 < 0) {<= preAllocated.length - 4) {
2428 < 0) {<= preAllocated.length - 4) { } 2492 < 0) {<= preAllocated.length - 4) { points = this.points = [];
2429 < 0) {<= preAllocated.length - 4) { 2493 < 0) {<= preAllocated.length - 4) {
2430 < 0) {<= preAllocated.length - 4) { /* This builds the KD-tree */ 2494 < 0) {<= preAllocated.length - 4) { // Do not start building while drawing
2431 < 0) {<= preAllocated.length - 4) { function processPoint(d, i) { 2495 < 0) {<= preAllocated.length - 4) { series.buildKDTree = noop;
-   2496 < 0) {<= preAllocated.length - 4) {
-   2497 < 0) {<= preAllocated.length - 4) { if (renderer) {
Line 2432... Line -...
2432 < 0) {<= preAllocated.length - 4) { var x, -  
2433 < 0) {<= preAllocated.length - 4) { y, 2498 < 0) {<= preAllocated.length - 4) { allocateIfNotSeriesBoosting(renderer, this);
2434 < 0) {<= preAllocated.length - 4) { clientX, 2499 < 0) {<= preAllocated.length - 4) { renderer.pushSeries(series);
-   2500 < 0) {<= preAllocated.length - 4) { // Perform the actual renderer if we're on series level
2435 < 0) {<= preAllocated.length - 4) { plotY, 2501 < 0) {<= preAllocated.length - 4) { renderIfNotSeriesBoosting(renderer, this, chart);
-   2502 < 0) {<= preAllocated.length - 4) { //console.log(series, chart);
-   2503 < 0) {<= preAllocated.length - 4) { }
-   2504 < 0) {<= preAllocated.length - 4) {
2436 < 0) {<= preAllocated.length - 4) { isNull, 2505 < 0) {<= preAllocated.length - 4) { /* This builds the KD-tree */
2437 < 0) {<= preAllocated.length - 4) { low, -  
2438 < 0) {<= preAllocated.length - 4) { chartDestroyed = typeof chart.index === 'undefined', -  
2439 < 0) {<= preAllocated.length - 4) { isYInside = true; -  
2440 < 0) {<= preAllocated.length - 4) { -  
2441 < 0) {<= preAllocated.length - 4) { if (!chartDestroyed) { -  
2442 < 0) {<= preAllocated.length - 4) { if (useRaw) { -  
2443 < 0) {<= preAllocated.length - 4) { x = d[0]; -  
Line -... Line 2506...
-   2506 < 0) {<= preAllocated.length - 4) { function processPoint(d, i) {
-   2507 < 0) {<= preAllocated.length - 4) { var x,
-   2508 < 0) {<= preAllocated.length - 4) { y,
-   2509 < 0) {<= preAllocated.length - 4) { clientX,
-   2510 < 0) {<= preAllocated.length - 4) { plotY,
-   2511 < 0) {<= preAllocated.length - 4) { isNull,
2444 < 0) {<= preAllocated.length - 4) { y = d[1]; 2512 < 0) {<= preAllocated.length - 4) { low,
-   2513 < 0) {<= preAllocated.length - 4) { chartDestroyed = typeof chart.index === 'undefined',
-   2514 < 0) {<= preAllocated.length - 4) { isYInside = true;
-   2515 < 0) {<= preAllocated.length - 4) {
-   2516 < 0) {<= preAllocated.length - 4) { if (!chartDestroyed) {
-   2517 < 0) {<= preAllocated.length - 4) { if (useRaw) {
Line 2445... Line -...
2445 < 0) {<= preAllocated.length - 4) { } else { -  
2446 < 0) {<= preAllocated.length - 4) { x = d; -  
2447 < 0) {<= preAllocated.length - 4) { y = yData[i]; 2518 < 0) {<= preAllocated.length - 4) { x = d[0];
2448 < 0) {<= preAllocated.length - 4) { } -  
Line -... Line 2519...
-   2519 < 0) {<= preAllocated.length - 4) { y = d[1];
-   2520 < 0) {<= preAllocated.length - 4) { } else {
2449 < 0) {<= preAllocated.length - 4) { 2521 < 0) {<= preAllocated.length - 4) { x = d;
-   2522 < 0) {<= preAllocated.length - 4) { y = yData[i];
Line 2450... Line -...
2450 < 0) {<= preAllocated.length - 4) { // Resolve low and high for range series -  
2451 < 0) {<= preAllocated.length - 4) { if (isRange) { -  
2452 < 0) {<= preAllocated.length - 4) { if (useRaw) { -  
2453 < 0) {<= preAllocated.length - 4) { y = d.slice(1, 3); -  
2454 < 0) {<= preAllocated.length - 4) { } -  
2455 < 0) {<= preAllocated.length - 4) { low = y[0]; -  
2456 < 0) {<= preAllocated.length - 4) { y = y[1]; -  
2457 < 0) {<= preAllocated.length - 4) { } else if (isStacked) { -  
2458 < 0) {<= preAllocated.length - 4) { x = d.x; -  
2459 < 0) {<= preAllocated.length - 4) { y = d.stackY; -  
2460 < 0) {<= preAllocated.length - 4) { low = y - d.y; -  
2461 < 0) {<= preAllocated.length - 4) { } -  
2462 < 0) {<= preAllocated.length - 4) { -  
2463 < 0) {<= preAllocated.length - 4) { isNull = y === null; 2523 < 0) {<= preAllocated.length - 4) { }
2464 < 0) {<= preAllocated.length - 4) { -  
2465 < 0) {<= preAllocated.length - 4) { // Optimize for scatter zooming -  
2466 < 0) {<= preAllocated.length - 4) { if (!requireSorting) { -  
Line 2467... Line -...
2467 < 0) {<= preAllocated.length - 4) { isYInside = y >= yMin && y <= yMax; -  
2468 < 0) {<= preAllocated.length - 4) { } 2524 < 0) {<= preAllocated.length - 4) {
2469 < 0) {<= preAllocated.length - 4) { 2525 < 0) {<= preAllocated.length - 4) { // Resolve low and high for range series
2470 < 0) {<= preAllocated.length - 4) { if (!isNull && x >= xMin && x <= xMax && isYInside) { 2526 < 0) {<= preAllocated.length - 4) { if (isRange) {
2471 < 0) {<= preAllocated.length - 4) { -  
2472 < 0) {<= preAllocated.length - 4) { // We use ceil to allow the KD tree to work with sub pixels, 2527 < 0) {<= preAllocated.length - 4) { if (useRaw) {
-   2528 < 0) {<= preAllocated.length - 4) { y = d.slice(1, 3);
2473 < 0) {<= preAllocated.length - 4) { // which can be used in boost to space pixels 2529 < 0) {<= preAllocated.length - 4) { }
2474 < 0) {<= preAllocated.length - 4) { clientX = Math.ceil(xAxis.toPixels(x, true)); 2530 < 0) {<= preAllocated.length - 4) { low = y[0];
2475 < 0) {<= preAllocated.length - 4) { 2531 < 0) {<= preAllocated.length - 4) { y = y[1];
2476 < 0) {<= preAllocated.length - 4) { if (sampling) { 2532 < 0) {<= preAllocated.length - 4) { } else if (isStacked) {
-   2533 < 0) {<= preAllocated.length - 4) { x = d.x;
-   2534 < 0) {<= preAllocated.length - 4) { y = d.stackY;
-   2535 < 0) {<= preAllocated.length - 4) { low = y - d.y;
-   2536 < 0) {<= preAllocated.length - 4) { }
-   2537 < 0) {<= preAllocated.length - 4) {
-   2538 < 0) {<= preAllocated.length - 4) { isNull = y === null;
-   2539 < 0) {<= preAllocated.length - 4) {
-   2540 < 0) {<= preAllocated.length - 4) { // Optimize for scatter zooming
-   2541 < 0) {<= preAllocated.length - 4) { if (!requireSorting) {
2477 < 0) {<= preAllocated.length - 4) { if (minI === undefined || clientX === lastClientX) { 2542 < 0) {<= preAllocated.length - 4) { isYInside = y >= yMin && y <= yMax;
-   2543 < 0) {<= preAllocated.length - 4) { }
-   2544 < 0) {<= preAllocated.length - 4) {
-   2545 < 0) {<= preAllocated.length - 4) { if (!isNull && x >= xMin && x <= xMax && isYInside) {
-   2546 < 0) {<= preAllocated.length - 4) {
-   2547 < 0) {<= preAllocated.length - 4) { // We use ceil to allow the KD tree to work with sub
-   2548 < 0) {<= preAllocated.length - 4) { // pixels, which can be used in boost to space pixels
-   2549 < 0) {<= preAllocated.length - 4) { clientX = Math.ceil(xAxis.toPixels(x, true));
-   2550 < 0) {<= preAllocated.length - 4) {
-   2551 < 0) {<= preAllocated.length - 4) { if (sampling) {
-   2552 < 0) {<= preAllocated.length - 4) { if (minI === undefined || clientX === lastClientX) {
Line 2478... Line 2553...
2478 < 0) {<= preAllocated.length - 4) { if (!isRange) { 2553 < 0) {<= preAllocated.length - 4) { if (!isRange) {
2479 < 0) {<= preAllocated.length - 4) { low = y; 2554 < 0) {<= preAllocated.length - 4) { low = y;
-   2555 < 0) {<= preAllocated.length - 4) { }
-   2556 < 0) {<= preAllocated.length - 4) { if (maxI === undefined || y > maxVal) {
-   2557 < 0) {<= preAllocated.length - 4) { maxVal = y;
-   2558 < 0) {<= preAllocated.length - 4) { maxI = i;
2480 < 0) {<= preAllocated.length - 4) { } 2559 < 0) {<= preAllocated.length - 4) { }
2481 < 0) {<= preAllocated.length - 4) { if (maxI === undefined || y > maxVal) { -  
2482 < 0) {<= preAllocated.length - 4) { maxVal = y; -  
2483 < 0) {<= preAllocated.length - 4) { maxI = i; -  
2484 < 0) {<= preAllocated.length - 4) { } 2560 < 0) {<= preAllocated.length - 4) { if (minI === undefined || low < minVal) {
2485 < 0) {<= preAllocated.length - 4) { if (minI === undefined || low < minVal) { 2561 < 0) {<= preAllocated.length - 4) { minVal = low;
-   2562 < 0) {<= preAllocated.length - 4) { minI = i;
2486 < 0) {<= preAllocated.length - 4) { minVal = low; 2563 < 0) {<= preAllocated.length - 4) { }
2487 < 0) {<= preAllocated.length - 4) { minI = i; 2564 < 0) {<= preAllocated.length - 4) {
Line -... Line 2565...
-   2565 < 0) {<= preAllocated.length - 4) { }
-   2566 < 0) {<= preAllocated.length - 4) { if (clientX !== lastClientX) { // Add points and reset
-   2567 < 0) {<= preAllocated.length - 4) { if (minI !== undefined) { // then maxI is also a number
-   2568 < 0) {<= preAllocated.length - 4) { plotY = yAxis.toPixels(maxVal, true);
-   2569 < 0) {<= preAllocated.length - 4) { yBottom = yAxis.toPixels(minVal, true);
-   2570 < 0) {<= preAllocated.length - 4) {
-   2571 < 0) {<= preAllocated.length - 4) { addKDPoint(clientX, plotY, maxI);
-   2572 < 0) {<= preAllocated.length - 4) { if (yBottom !== plotY) {
-   2573 < 0) {<= preAllocated.length - 4) { addKDPoint(clientX, yBottom, minI);
-   2574 < 0) {<= preAllocated.length - 4) { }
-   2575 < 0) {<= preAllocated.length - 4) { }
-   2576 < 0) {<= preAllocated.length - 4) {
-   2577 < 0) {<= preAllocated.length - 4) { minI = maxI = undefined;
-   2578 < 0) {<= preAllocated.length - 4) { lastClientX = clientX;
-   2579 < 0) {<= preAllocated.length - 4) { }
-   2580 < 0) {<= preAllocated.length - 4) { } else {
2488 < 0) {<= preAllocated.length - 4) { } 2581 < 0) {<= preAllocated.length - 4) { plotY = Math.ceil(yAxis.toPixels(y, true));
-   2582 < 0) {<= preAllocated.length - 4) { addKDPoint(clientX, plotY, i);
-   2583 < 0) {<= preAllocated.length - 4) { }
-   2584 < 0) {<= preAllocated.length - 4) { }
2489 < 0) {<= preAllocated.length - 4) { 2585 < 0) {<= preAllocated.length - 4) { }
-   2586 < 0) {<= preAllocated.length - 4) {
Line -... Line 2587...
-   2587 < 0) {<= preAllocated.length - 4) { return !chartDestroyed;
2490 < 0) {<= preAllocated.length - 4) { } 2588 < 0) {<= preAllocated.length - 4) { }
2491 < 0) {<= preAllocated.length - 4) { if (clientX !== lastClientX) { // Add points and reset 2589 < 0) {<= preAllocated.length - 4) {
-   2590 < 0) {<= preAllocated.length - 4) { function doneProcessing() {
2492 < 0) {<= preAllocated.length - 4) { if (minI !== undefined) { // then maxI is also a number 2591 < 0) {<= preAllocated.length - 4) { fireEvent(series, 'renderedCanvas');
-   2592 < 0) {<= preAllocated.length - 4) { // Pass tests in Pointer.
-   2593 < 0) {<= preAllocated.length - 4) { // Replace this with a single property, and replace when zooming
2493 < 0) {<= preAllocated.length - 4) { plotY = yAxis.toPixels(maxVal, true); 2594 < 0) {<= preAllocated.length - 4) { // in below boostThreshold.
2494 < 0) {<= preAllocated.length - 4) { yBottom = yAxis.toPixels(minVal, true); 2595 < 0) {<= preAllocated.length - 4) { series.directTouch = false;
2495 < 0) {<= preAllocated.length - 4) { 2596 < 0) {<= preAllocated.length - 4) { series.options.stickyTracking = true;
2496 < 0) {<= preAllocated.length - 4) { addKDPoint(clientX, plotY, maxI); 2597 < 0) {<= preAllocated.length - 4) {
2497 < 0) {<= preAllocated.length - 4) { if (yBottom !== plotY) { -  
2498 < 0) {<= preAllocated.length - 4) { addKDPoint(clientX, yBottom, minI); 2598 < 0) {<= preAllocated.length - 4) { // Go back to prototype, ready to build
2499 < 0) {<= preAllocated.length - 4) { } 2599 < 0) {<= preAllocated.length - 4) { delete series.buildKDTree;
2500 < 0) {<= preAllocated.length - 4) { } 2600 < 0) {<= preAllocated.length - 4) { series.buildKDTree();
-   2601 < 0) {<= preAllocated.length - 4) { }
Line -... Line 2602...
-   2602 < 0) {<= preAllocated.length - 4) {
-   2603 < 0) {<= preAllocated.length - 4) { // Loop over the points to build the k-d tree
-   2604 < 0) {<= preAllocated.length - 4) { eachAsync(
-   2605 < 0) {<= preAllocated.length - 4) { isStacked ? series.data : (xData || rawData),
-   2606 < 0) {<= preAllocated.length - 4) { processPoint,
-   2607 < 0) {<= preAllocated.length - 4) { doneProcessing,
2501 < 0) {<= preAllocated.length - 4) { 2608 < 0) {<= preAllocated.length - 4) { chart.renderer.forExport ? Number.MAX_VALUE : undefined
2502 < 0) {<= preAllocated.length - 4) { minI = maxI = undefined; 2609 < 0) {<= preAllocated.length - 4) { );
2503 < 0) {<= preAllocated.length - 4) { lastClientX = clientX; 2610 < 0) {<= preAllocated.length - 4) { }
2504 < 0) {<= preAllocated.length - 4) { } 2611 < 0) {<= preAllocated.length - 4) { });
2505 < 0) {<= preAllocated.length - 4) { } else { 2612 < 0) {<= preAllocated.length - 4) {
-   2613 < 0) {<= preAllocated.length - 4) { /*
-   2614 < 0) {<= preAllocated.length - 4) { * We need to handle heatmaps separatly, since we can't perform the
-   2615 < 0) {<= preAllocated.length - 4) { * size/color calculations in the shader easily.
2506 < 0) {<= preAllocated.length - 4) { plotY = Math.ceil(yAxis.toPixels(y, true)); 2616 < 0) {<= preAllocated.length - 4) { *
-   2617 < 0) {<= preAllocated.length - 4) { * This likely needs future optimization.
2507 < 0) {<= preAllocated.length - 4) { addKDPoint(clientX, plotY, i); 2618 < 0) {<= preAllocated.length - 4) { *
2508 < 0) {<= preAllocated.length - 4) { } 2619 < 0) {<= preAllocated.length - 4) { */
2509 < 0) {<= preAllocated.length - 4) { } -  
Line 2510... Line -...
2510 < 0) {<= preAllocated.length - 4) { wasNull = isNull && !connectNulls; -  
2511 < 0) {<= preAllocated.length - 4) { } -  
2512 < 0) {<= preAllocated.length - 4) { -  
2513 < 0) {<= preAllocated.length - 4) { return !chartDestroyed; 2620 < 0) {<= preAllocated.length - 4) { each(['heatmap', 'treemap'],
2514 < 0) {<= preAllocated.length - 4) { } -  
Line 2515... Line 2621...
2515 < 0) {<= preAllocated.length - 4) { 2621 < 0) {<= preAllocated.length - 4) { function(t) {
2516 < 0) {<= preAllocated.length - 4) { function doneProcessing() { -  
2517 < 0) {<= preAllocated.length - 4) { fireEvent(series, 'renderedCanvas'); -  
2518 < 0) {<= preAllocated.length - 4) { // Pass tests in Pointer. 2622 < 0) {<= preAllocated.length - 4) { if (seriesTypes[t]) {
2519 < 0) {<= preAllocated.length - 4) { // Replace this with a single property, and replace when zooming in 2623 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes[t].prototype, 'drawPoints', pointDrawHandler);
2520 < 0) {<= preAllocated.length - 4) { // below boostThreshold. 2624 < 0) {<= preAllocated.length - 4) { seriesTypes[t].prototype.directTouch = false; // Use k-d-tree
2521 < 0) {<= preAllocated.length - 4) { series.directTouch = false; 2625 < 0) {<= preAllocated.length - 4) { }
2522 < 0) {<= preAllocated.length - 4) { series.options.stickyTracking = true; -  
2523 < 0) {<= preAllocated.length - 4) { -  
2524 < 0) {<= preAllocated.length - 4) { delete series.buildKDTree; // Go back to prototype, ready to build -  
Line 2525... Line -...
2525 < 0) {<= preAllocated.length - 4) { series.buildKDTree(); -  
2526 < 0) {<= preAllocated.length - 4) { } -  
2527 < 0) {<= preAllocated.length - 4) { -  
2528 < 0) {<= preAllocated.length - 4) { // Loop over the points to build the k-d tree -  
2529 < 0) {<= preAllocated.length - 4) { eachAsync( 2626 < 0) {<= preAllocated.length - 4) { }
2530 < 0) {<= preAllocated.length - 4) { isStacked ? series.data : (xData || rawData), -  
2531 < 0) {<= preAllocated.length - 4) { processPoint, -  
2532 < 0) {<= preAllocated.length - 4) { doneProcessing, -  
2533 < 0) {<= preAllocated.length - 4) { chart.renderer.forExport ? Number.MAX_VALUE : undefined 2627 < 0) {<= preAllocated.length - 4) { );
2534 < 0) {<= preAllocated.length - 4) { ); 2628 < 0) {<= preAllocated.length - 4) {
2535 < 0) {<= preAllocated.length - 4) { } -  
2536 < 0) {<= preAllocated.length - 4) { }); -  
2537 < 0) {<= preAllocated.length - 4) { -  
2538 < 0) {<= preAllocated.length - 4) { /* Used for treemap|heatmap.drawPoints */ 2629 < 0) {<= preAllocated.length - 4) { if (seriesTypes.bubble) {
2539 < 0) {<= preAllocated.length - 4) { function pointDrawHandler(proceed) { -  
Line -... Line 2630...
-   2630 < 0) {<= preAllocated.length - 4) { // By default, the bubble series does not use the KD-tree, so force it
2540 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this)) { 2631 < 0) {<= preAllocated.length - 4) { // to.
2541 < 0) {<= preAllocated.length - 4) { return proceed.call(this); 2632 < 0) {<= preAllocated.length - 4) { delete seriesTypes.bubble.prototype.buildKDTree;
2542 < 0) {<= preAllocated.length - 4) { } 2633 < 0) {<= preAllocated.length - 4) { seriesTypes.bubble.prototype.directTouch = false;
2543 < 0) {<= preAllocated.length - 4) { 2634 < 0) {<= preAllocated.length - 4) {
2544 < 0) {<= preAllocated.length - 4) { //Make sure we have a valid OGL context -  
2545 < 0) {<= preAllocated.length - 4) { var renderer = createAndAttachRenderer(this.chart, this); 2635 < 0) {<= preAllocated.length - 4) { // Needed for markers to work correctly
2546 < 0) {<= preAllocated.length - 4) { 2636 < 0) {<= preAllocated.length - 4) { wrap(
2547 < 0) {<= preAllocated.length - 4) { if (renderer) { 2637 < 0) {<= preAllocated.length - 4) { seriesTypes.bubble.prototype,
2548 < 0) {<= preAllocated.length - 4) { allocateIfNotSeriesBoosting(renderer, this); 2638 < 0) {<= preAllocated.length - 4) { 'markerAttribs',
2549 < 0) {<= preAllocated.length - 4) { renderer.pushSeries(this); 2639 < 0) {<= preAllocated.length - 4) { function(proceed) {
2550 < 0) {<= preAllocated.length - 4) { } -  
2551 < 0) {<= preAllocated.length - 4) { 2640 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(this)) {
2552 < 0) {<= preAllocated.length - 4) { renderIfNotSeriesBoosting(renderer, this); -  
Line -... Line 2641...
-   2641 < 0) {<= preAllocated.length - 4) { return false;
2553 < 0) {<= preAllocated.length - 4) { } 2642 < 0) {<= preAllocated.length - 4) { }
-   2643 < 0) {<= preAllocated.length - 4) { return proceed.apply(this, [].slice.call(arguments, 1));
-   2644 < 0) {<= preAllocated.length - 4) { }
Line 2554... Line 2645...
2554 < 0) {<= preAllocated.length - 4) { 2645 < 0) {<= preAllocated.length - 4) { );
2555 < 0) {<= preAllocated.length - 4) { /* 2646 < 0) {<= preAllocated.length - 4) { }
-   2647 < 0) {<= preAllocated.length - 4) {
2556 < 0) {<= preAllocated.length - 4) { * We need to handle heatmaps separatly, since we can't perform the size/color 2648 < 0) {<= preAllocated.length - 4) { seriesTypes.scatter.prototype.fill = true;
2557 < 0) {<= preAllocated.length - 4) { * calculations in the shader easily. 2649 < 0) {<= preAllocated.length - 4) {
2558 < 0) {<= preAllocated.length - 4) { * 2650 < 0) {<= preAllocated.length - 4) { extend(seriesTypes.area.prototype, {
Line 2559... Line 2651...
2559 < 0) {<= preAllocated.length - 4) { * This likely needs future optimization. 2651 < 0) {<= preAllocated.length - 4) { fill: true,
2560 < 0) {<= preAllocated.length - 4) { * -  
2561 < 0) {<= preAllocated.length - 4) { */ 2652 < 0) {<= preAllocated.length - 4) { fillOpacity: true,
2562 < 0) {<= preAllocated.length - 4) { each(['heatmap', 'treemap'], -  
Line 2563... Line 2653...
2563 < 0) {<= preAllocated.length - 4) { function(t) { 2653 < 0) {<= preAllocated.length - 4) { sampling: true
2564 < 0) {<= preAllocated.length - 4) { if (seriesTypes[t]) { 2654 < 0) {<= preAllocated.length - 4) { });
2565 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes[t].prototype, 'drawPoints', pointDrawHandler); 2655 < 0) {<= preAllocated.length - 4) {
2566 < 0) {<= preAllocated.length - 4) { seriesTypes[t].prototype.directTouch = false; // Use k-d-tree 2656 < 0) {<= preAllocated.length - 4) { extend(seriesTypes.column.prototype, {
2567 < 0) {<= preAllocated.length - 4) { } 2657 < 0) {<= preAllocated.length - 4) { fill: true,
2568 < 0) {<= preAllocated.length - 4) { } 2658 < 0) {<= preAllocated.length - 4) { sampling: true
2569 < 0) {<= preAllocated.length - 4) { ); 2659 < 0) {<= preAllocated.length - 4) { });
2570 < 0) {<= preAllocated.length - 4) { 2660 < 0) {<= preAllocated.length - 4) {
2571 < 0) {<= preAllocated.length - 4) { if (seriesTypes.bubble) { -  
2572 < 0) {<= preAllocated.length - 4) { // By default, the bubble series does not use the KD-tree, so force it to. 2661 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'setVisible', function(proceed, vis) {
2573 < 0) {<= preAllocated.length - 4) { delete seriesTypes.bubble.prototype.buildKDTree; -  
Line 2574... Line -...
2574 < 0) {<= preAllocated.length - 4) { seriesTypes.bubble.prototype.directTouch = false; -  
2575 < 0) {<= preAllocated.length - 4) { 2662 < 0) {<= preAllocated.length - 4) { proceed.call(this, vis, false);
2576 < 0) {<= preAllocated.length - 4) { // Needed for markers to work correctly -  
2577 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes.bubble.prototype, 'markerAttribs', function(proceed) { 2663 < 0) {<= preAllocated.length - 4) { if (this.visible === false && this.ogl && this.canvas && this.image) {
Line 2578... Line -...
2578 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(this)) { -  
2579 < 0) {<= preAllocated.length - 4) { return false; 2664 < 0) {<= preAllocated.length - 4) { this.ogl.clear();
2580 < 0) {<= preAllocated.length - 4) { } -  
2581 < 0) {<= preAllocated.length - 4) { return proceed.apply(this, [].slice.call(arguments, 1)); 2665 < 0) {<= preAllocated.length - 4) { this.image.attr({
2582 < 0) {<= preAllocated.length - 4) { }); 2666 < 0) {<= preAllocated.length - 4) { href: ''
2583 < 0) {<= preAllocated.length - 4) { } -  
Line 2584... Line 2667...
2584 < 0) {<= preAllocated.length - 4) { 2667 < 0) {<= preAllocated.length - 4) { });
-   2668 < 0) {<= preAllocated.length - 4) { } else {
2585 < 0) {<= preAllocated.length - 4) { seriesTypes.scatter.prototype.fill = true; 2669 < 0) {<= preAllocated.length - 4) { this.chart.redraw();
2586 < 0) {<= preAllocated.length - 4) { 2670 < 0) {<= preAllocated.length - 4) { }
2587 < 0) {<= preAllocated.length - 4) { extend(seriesTypes.area.prototype, { 2671 < 0) {<= preAllocated.length - 4) { });
2588 < 0) {<= preAllocated.length - 4) { fill: true, 2672 < 0) {<= preAllocated.length - 4) {
2589 < 0) {<= preAllocated.length - 4) { fillOpacity: true, 2673 < 0) {<= preAllocated.length - 4) { /**
Line 2590... Line -...
2590 < 0) {<= preAllocated.length - 4) { sampling: true -  
2591 < 0) {<= preAllocated.length - 4) { }); -  
2592 < 0) {<= preAllocated.length - 4) { -  
2593 < 0) {<= preAllocated.length - 4) { extend(seriesTypes.column.prototype, { -  
2594 < 0) {<= preAllocated.length - 4) { fill: true, -  
2595 < 0) {<= preAllocated.length - 4) { sampling: true -  
2596 < 0) {<= preAllocated.length - 4) { }); 2674 < 0) {<= preAllocated.length - 4) { * Take care of the canvas blitting
2597 < 0) {<= preAllocated.length - 4) { -  
Line 2598... Line 2675...
2598 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'setVisible', function(proceed, vis) { 2675 < 0) {<= preAllocated.length - 4) { */
2599 < 0) {<= preAllocated.length - 4) { proceed.call(this, vis, false); 2676 < 0) {<= preAllocated.length - 4) { H.Chart.prototype.callbacks.push(function(chart) {
2600 < 0) {<= preAllocated.length - 4) { if (this.visible === false && this.ogl && this.canvas && this.image) { 2677 < 0) {<= preAllocated.length - 4) {
-   2678 < 0) {<= preAllocated.length - 4) { /* Convert chart-level canvas to image */
Line 2601... Line 2679...
2601 < 0) {<= preAllocated.length - 4) { this.ogl.clear(); 2679 < 0) {<= preAllocated.length - 4) { function canvasToSVG() {
2602 < 0) {<= preAllocated.length - 4) { this.image.attr({ 2680 < 0) {<= preAllocated.length - 4) { if (chart.ogl && isChartSeriesBoosting(chart)) {