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

Subversion Repositories:
Rev:
Only display areas with differencesIgnore whitespace
Rev 1 Rev 11
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 *
8 * License: www.highcharts.com/license 8 * License: www.highcharts.com/license
9 */ 9 */
10 'use strict'; 10 'use strict';
11 (function(factory) { 11 (function(factory) {
12 if (typeof module === 'object' && module.exports) { 12 if (typeof module === 'object' && module.exports) {
13 module.exports = factory; 13 module.exports = factory;
14 } else { 14 } else {
15 factory(Highcharts); 15 factory(Highcharts);
16 } 16 }
17 }(function(Highcharts) { 17 }(function(Highcharts) {
18 (function(H) { 18 (function(H) {
19 /** 19 /**
20 * License: www.highcharts.com/license 20 * License: www.highcharts.com/license
21 * Author: Christer Vasseng, Torstein Honsi 21 * Author: Christer Vasseng, Torstein Honsi
22 * 22 *
23 * This is an experimental Highcharts module that draws long data series on a canvas 23 * This is an experimental Highcharts module that draws long data series on a canvas
24 * in order to increase performance of the initial load time and tooltip responsiveness. 24 * in order to increase performance of the initial load time and tooltip responsiveness.
25 * 25 *
26 * Compatible with WebGL compatible browsers (not IE < 11). 26 * Compatible with WebGL compatible browsers (not IE < 11).
27 * 27 *
28 * Development plan 28 * Development plan
29 * - Column range. 29 * - Column range.
30 * - Check how it works with Highstock and data grouping. Currently it only works when navigator.adaptToUpdatedData 30 * - Check how it works with Highstock and data grouping. Currently it only works when navigator.adaptToUpdatedData
31 * is false. It is also recommended to set scrollbar.liveRedraw to false. 31 * is false. It is also recommended to set scrollbar.liveRedraw to false.
32 * - Check inverted charts. 32 * - Check inverted charts.
33 * - Chart callback should be async after last series is drawn. (But not necessarily, we don't do 33 * - Chart callback should be async after last series is drawn. (But not necessarily, we don't do
34 that with initial series animation). 34 that with initial series animation).
35 * 35 *
36 * If this module is taken in as part of the core 36 * If this module is taken in as part of the core
37 * - All the loading logic should be merged with core. Update styles in the core. 37 * - All the loading logic should be merged with core. Update styles in the core.
38 * - Most of the method wraps should probably be added directly in parent methods. 38 * - Most of the method wraps should probably be added directly in parent methods.
39 * 39 *
40 * Notes for boost mode 40 * Notes for boost mode
41 * - Area lines are not drawn 41 * - Area lines are not drawn
42 * - Lines are not drawn on scatter charts 42 * - Lines are not drawn on scatter charts
43 * - Zones and negativeColor don't work 43 * - Zones and negativeColor don't work
44 * - Columns are always one pixel wide. Don't set the threshold too low. 44 * - Columns are always one pixel wide. Don't set the threshold too low.
45 * - Disable animations 45 * - Disable animations
46 * - Marker shapes are not supported: markers will always be circles 46 * - Marker shapes are not supported: markers will always be circles
47 * 47 *
48 * Optimizing tips for users 48 * Optimizing tips for users
49 * - Set extremes (min, max) explicitly on the axes in order for Highcharts to avoid computing extremes. 49 * - Set extremes (min, max) explicitly on the axes in order for Highcharts to avoid computing extremes.
50 * - Set enableMouseTracking to false on the series to improve total rendering time. 50 * - Set enableMouseTracking to false on the series to improve total rendering time.
51 * - The default threshold is set based on one series. If you have multiple, dense series, the combined 51 * - The default threshold is set based on one series. If you have multiple, dense series, the combined
52 * number of points drawn gets higher, and you may want to set the threshold lower in order to 52 * number of points drawn gets higher, and you may want to set the threshold lower in order to
53 * use optimizations. 53 * use optimizations.
54 * - If drawing large scatter charts, it's beneficial to set the marker radius to a value 54 * - If drawing large scatter charts, it's beneficial to set the marker radius to a value
55 * less than 1. This is to add additional spacing to make the chart more readable. 55 * less than 1. This is to add additional spacing to make the chart more readable.
56 * - If the value increments on both the X and Y axis aren't small, consider setting 56 * - If the value increments on both the X and Y axis aren't small, consider setting
57 * useGPUTranslations to true on the boost settings object. If you do this and 57 * useGPUTranslations to true on the boost settings object. If you do this and
58 * the increments are small (e.g. datetime axis with small time increments) 58 * the increments are small (e.g. datetime axis with small time increments)
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:
71 * { 71 * {
72 * //Wether or not to use alpha blending 72 * //Wether or not to use alpha blending
73 * useAlpha: boolean - default: true 73 * useAlpha: boolean - default: true
74 * //Set to true to perform translations on the GPU. 74 * //Set to true to perform translations on the GPU.
75 * //Much faster, but may cause rendering issues 75 * //Much faster, but may cause rendering issues
76 * //when using values far from 0 due to floating point 76 * //when using values far from 0 due to floating point
77 * //rounding issues 77 * //rounding issues
78 * useGPUTranslations: boolean - default: false 78 * useGPUTranslations: boolean - default: false
79 * //Use pre-allocated buffers, much faster, 79 * //Use pre-allocated buffers, much faster,
80 * //but may cause rendering issues with some data sets 80 * //but may cause rendering issues with some data sets
81 * usePreallocated: boolean - default: false 81 * usePreallocated: boolean - default: false
82 * //Output rendering time in console 82 * //Output rendering time in console
83 * timeRendering: boolean - default: false 83 * timeRendering: boolean - default: false
84 * //Output processing time in console 84 * //Output processing time in console
85 * timeSeriesProcessing: boolean - default: false 85 * timeSeriesProcessing: boolean - default: false
86 * //Output setup time in console 86 * //Output setup time in console
87 * timeSetup: boolean - default: false 87 * timeSetup: boolean - default: false
88 * } 88 * }
89 */ 89 */
90   90  
91 /** 91 /**
92 * Set the series threshold for when the boost should kick in globally. 92 * Set the series threshold for when the boost should kick in globally.
93 * 93 *
94 * Setting to e.g. 20 will cause the whole chart to enter boost mode 94 * Setting to e.g. 20 will cause the whole chart to enter boost mode
95 * if there are 20 or more series active. When the chart is in boost mode, 95 * if there are 20 or more series active. When the chart is in boost mode,
96 * every series in it will be rendered to a common canvas. This offers 96 * every series in it will be rendered to a common canvas. This offers
97 * a significant speed improvment in charts with a very high 97 * a significant speed improvment in charts with a very high
98 * amount of series. 98 * amount of series.
99 * 99 *
100 * Note: only available when including the boost module. 100 * Note: only available when including the boost module.
101 * 101 *
102 * @default null 102 * @default null
103 * @apioption boost.seriesThreshold 103 * @apioption boost.seriesThreshold
104 */ 104 */
105   105  
106 /** 106 /**
107 * Set the point threshold for when a series should enter boost mode. 107 * Set the point threshold for when a series should enter boost mode.
108 * 108 *
109 * Setting it to e.g. 2000 will cause the series to enter boost mode 109 * Setting it to e.g. 2000 will cause the series to enter boost mode
110 * when there are 2000 or more points in the series. 110 * when there are 2000 or more points in the series.
111 * 111 *
112 * Note: only available when including the boost module. 112 * Note: only available when including the boost module.
113 * 113 *
114 * @default 5000 114 * @default 5000
115 * @apioption series.boostThreshold 115 * @apioption series.boostThreshold
116 */ 116 */
117   117  
118 /* global Float32Array, Image */ 118 /* global Float32Array */
119   119  
120   120  
121 var win = H.win, 121 var win = H.win,
122 doc = win.document, 122 doc = win.document,
123 noop = function() {}, 123 noop = function() {},
124 Color = H.Color, 124 Color = H.Color,
125 Series = H.Series, 125 Series = H.Series,
126 seriesTypes = H.seriesTypes, 126 seriesTypes = H.seriesTypes,
127 each = H.each, 127 each = H.each,
128 extend = H.extend, 128 extend = H.extend,
129 addEvent = H.addEvent, 129 addEvent = H.addEvent,
130 fireEvent = H.fireEvent, 130 fireEvent = H.fireEvent,
131 grep = H.grep, 131 grep = H.grep,
132 isNumber = H.isNumber, 132 isNumber = H.isNumber,
133 merge = H.merge, 133 merge = H.merge,
134 pick = H.pick, 134 pick = H.pick,
135 wrap = H.wrap, 135 wrap = H.wrap,
136 plotOptions = H.getOptions().plotOptions, 136 plotOptions = H.getOptions().plotOptions,
137 CHUNK_SIZE = 50000, 137 CHUNK_SIZE = 50000,
138 index; 138 index;
139   139  
140 // Register color names since GL can't render those directly. 140 // Register color names since GL can't render those directly.
141 Color.prototype.names = { 141 Color.prototype.names = {
142 aliceblue: '#f0f8ff', 142 aliceblue: '#f0f8ff',
143 antiquewhite: '#faebd7', 143 antiquewhite: '#faebd7',
144 aqua: '#00ffff', 144 aqua: '#00ffff',
145 aquamarine: '#7fffd4', 145 aquamarine: '#7fffd4',
146 azure: '#f0ffff', 146 azure: '#f0ffff',
147 beige: '#f5f5dc', 147 beige: '#f5f5dc',
148 bisque: '#ffe4c4', 148 bisque: '#ffe4c4',
149 black: '#000000', 149 black: '#000000',
150 blanchedalmond: '#ffebcd', 150 blanchedalmond: '#ffebcd',
151 blue: '#0000ff', 151 blue: '#0000ff',
152 blueviolet: '#8a2be2', 152 blueviolet: '#8a2be2',
153 brown: '#a52a2a', 153 brown: '#a52a2a',
154 burlywood: '#deb887', 154 burlywood: '#deb887',
155 cadetblue: '#5f9ea0', 155 cadetblue: '#5f9ea0',
156 chartreuse: '#7fff00', 156 chartreuse: '#7fff00',
157 chocolate: '#d2691e', 157 chocolate: '#d2691e',
158 coral: '#ff7f50', 158 coral: '#ff7f50',
159 cornflowerblue: '#6495ed', 159 cornflowerblue: '#6495ed',
160 cornsilk: '#fff8dc', 160 cornsilk: '#fff8dc',
161 crimson: '#dc143c', 161 crimson: '#dc143c',
162 cyan: '#00ffff', 162 cyan: '#00ffff',
163 darkblue: '#00008b', 163 darkblue: '#00008b',
164 darkcyan: '#008b8b', 164 darkcyan: '#008b8b',
165 darkgoldenrod: '#b8860b', 165 darkgoldenrod: '#b8860b',
166 darkgray: '#a9a9a9', 166 darkgray: '#a9a9a9',
167 darkgreen: '#006400', 167 darkgreen: '#006400',
168 darkkhaki: '#bdb76b', 168 darkkhaki: '#bdb76b',
169 darkmagenta: '#8b008b', 169 darkmagenta: '#8b008b',
170 darkolivegreen: '#556b2f', 170 darkolivegreen: '#556b2f',
171 darkorange: '#ff8c00', 171 darkorange: '#ff8c00',
172 darkorchid: '#9932cc', 172 darkorchid: '#9932cc',
173 darkred: '#8b0000', 173 darkred: '#8b0000',
174 darksalmon: '#e9967a', 174 darksalmon: '#e9967a',
175 darkseagreen: '#8fbc8f', 175 darkseagreen: '#8fbc8f',
176 darkslateblue: '#483d8b', 176 darkslateblue: '#483d8b',
177 darkslategray: '#2f4f4f', 177 darkslategray: '#2f4f4f',
178 darkturquoise: '#00ced1', 178 darkturquoise: '#00ced1',
179 darkviolet: '#9400d3', 179 darkviolet: '#9400d3',
180 deeppink: '#ff1493', 180 deeppink: '#ff1493',
181 deepskyblue: '#00bfff', 181 deepskyblue: '#00bfff',
182 dimgray: '#696969', 182 dimgray: '#696969',
183 dodgerblue: '#1e90ff', 183 dodgerblue: '#1e90ff',
184 feldspar: '#d19275', 184 feldspar: '#d19275',
185 firebrick: '#b22222', 185 firebrick: '#b22222',
186 floralwhite: '#fffaf0', 186 floralwhite: '#fffaf0',
187 forestgreen: '#228b22', 187 forestgreen: '#228b22',
188 fuchsia: '#ff00ff', 188 fuchsia: '#ff00ff',
189 gainsboro: '#dcdcdc', 189 gainsboro: '#dcdcdc',
190 ghostwhite: '#f8f8ff', 190 ghostwhite: '#f8f8ff',
191 gold: '#ffd700', 191 gold: '#ffd700',
192 goldenrod: '#daa520', 192 goldenrod: '#daa520',
193 gray: '#808080', 193 gray: '#808080',
194 green: '#008000', 194 green: '#008000',
195 greenyellow: '#adff2f', 195 greenyellow: '#adff2f',
196 honeydew: '#f0fff0', 196 honeydew: '#f0fff0',
197 hotpink: '#ff69b4', 197 hotpink: '#ff69b4',
198 indianred: '#cd5c5c', 198 indianred: '#cd5c5c',
199 indigo: '#4b0082', 199 indigo: '#4b0082',
200 ivory: '#fffff0', 200 ivory: '#fffff0',
201 khaki: '#f0e68c', 201 khaki: '#f0e68c',
202 lavender: '#e6e6fa', 202 lavender: '#e6e6fa',
203 lavenderblush: '#fff0f5', 203 lavenderblush: '#fff0f5',
204 lawngreen: '#7cfc00', 204 lawngreen: '#7cfc00',
205 lemonchiffon: '#fffacd', 205 lemonchiffon: '#fffacd',
206 lightblue: '#add8e6', 206 lightblue: '#add8e6',
207 lightcoral: '#f08080', 207 lightcoral: '#f08080',
208 lightcyan: '#e0ffff', 208 lightcyan: '#e0ffff',
209 lightgoldenrodyellow: '#fafad2', 209 lightgoldenrodyellow: '#fafad2',
210 lightgrey: '#d3d3d3', 210 lightgrey: '#d3d3d3',
211 lightgreen: '#90ee90', 211 lightgreen: '#90ee90',
212 lightpink: '#ffb6c1', 212 lightpink: '#ffb6c1',
213 lightsalmon: '#ffa07a', 213 lightsalmon: '#ffa07a',
214 lightseagreen: '#20b2aa', 214 lightseagreen: '#20b2aa',
215 lightskyblue: '#87cefa', 215 lightskyblue: '#87cefa',
216 lightslateblue: '#8470ff', 216 lightslateblue: '#8470ff',
217 lightslategray: '#778899', 217 lightslategray: '#778899',
218 lightsteelblue: '#b0c4de', 218 lightsteelblue: '#b0c4de',
219 lightyellow: '#ffffe0', 219 lightyellow: '#ffffe0',
220 lime: '#00ff00', 220 lime: '#00ff00',
221 limegreen: '#32cd32', 221 limegreen: '#32cd32',
222 linen: '#faf0e6', 222 linen: '#faf0e6',
223 magenta: '#ff00ff', 223 magenta: '#ff00ff',
224 maroon: '#800000', 224 maroon: '#800000',
225 mediumaquamarine: '#66cdaa', 225 mediumaquamarine: '#66cdaa',
226 mediumblue: '#0000cd', 226 mediumblue: '#0000cd',
227 mediumorchid: '#ba55d3', 227 mediumorchid: '#ba55d3',
228 mediumpurple: '#9370d8', 228 mediumpurple: '#9370d8',
229 mediumseagreen: '#3cb371', 229 mediumseagreen: '#3cb371',
230 mediumslateblue: '#7b68ee', 230 mediumslateblue: '#7b68ee',
231 mediumspringgreen: '#00fa9a', 231 mediumspringgreen: '#00fa9a',
232 mediumturquoise: '#48d1cc', 232 mediumturquoise: '#48d1cc',
233 mediumvioletred: '#c71585', 233 mediumvioletred: '#c71585',
234 midnightblue: '#191970', 234 midnightblue: '#191970',
235 mintcream: '#f5fffa', 235 mintcream: '#f5fffa',
236 mistyrose: '#ffe4e1', 236 mistyrose: '#ffe4e1',
237 moccasin: '#ffe4b5', 237 moccasin: '#ffe4b5',
238 navajowhite: '#ffdead', 238 navajowhite: '#ffdead',
239 navy: '#000080', 239 navy: '#000080',
240 oldlace: '#fdf5e6', 240 oldlace: '#fdf5e6',
241 olive: '#808000', 241 olive: '#808000',
242 olivedrab: '#6b8e23', 242 olivedrab: '#6b8e23',
243 orange: '#ffa500', 243 orange: '#ffa500',
244 orangered: '#ff4500', 244 orangered: '#ff4500',
245 orchid: '#da70d6', 245 orchid: '#da70d6',
246 palegoldenrod: '#eee8aa', 246 palegoldenrod: '#eee8aa',
247 palegreen: '#98fb98', 247 palegreen: '#98fb98',
248 paleturquoise: '#afeeee', 248 paleturquoise: '#afeeee',
249 palevioletred: '#d87093', 249 palevioletred: '#d87093',
250 papayawhip: '#ffefd5', 250 papayawhip: '#ffefd5',
251 peachpuff: '#ffdab9', 251 peachpuff: '#ffdab9',
252 peru: '#cd853f', 252 peru: '#cd853f',
253 pink: '#ffc0cb', 253 pink: '#ffc0cb',
254 plum: '#dda0dd', 254 plum: '#dda0dd',
255 powderblue: '#b0e0e6', 255 powderblue: '#b0e0e6',
256 purple: '#800080', 256 purple: '#800080',
257 red: '#ff0000', 257 red: '#ff0000',
258 rosybrown: '#bc8f8f', 258 rosybrown: '#bc8f8f',
259 royalblue: '#4169e1', 259 royalblue: '#4169e1',
260 saddlebrown: '#8b4513', 260 saddlebrown: '#8b4513',
261 salmon: '#fa8072', 261 salmon: '#fa8072',
262 sandybrown: '#f4a460', 262 sandybrown: '#f4a460',
263 seagreen: '#2e8b57', 263 seagreen: '#2e8b57',
264 seashell: '#fff5ee', 264 seashell: '#fff5ee',
265 sienna: '#a0522d', 265 sienna: '#a0522d',
266 silver: '#c0c0c0', 266 silver: '#c0c0c0',
267 skyblue: '#87ceeb', 267 skyblue: '#87ceeb',
268 slateblue: '#6a5acd', 268 slateblue: '#6a5acd',
269 slategray: '#708090', 269 slategray: '#708090',
270 snow: '#fffafa', 270 snow: '#fffafa',
271 springgreen: '#00ff7f', 271 springgreen: '#00ff7f',
272 steelblue: '#4682b4', 272 steelblue: '#4682b4',
273 tan: '#d2b48c', 273 tan: '#d2b48c',
274 teal: '#008080', 274 teal: '#008080',
275 thistle: '#d8bfd8', 275 thistle: '#d8bfd8',
276 tomato: '#ff6347', 276 tomato: '#ff6347',
277 turquoise: '#40e0d0', 277 turquoise: '#40e0d0',
278 violet: '#ee82ee', 278 violet: '#ee82ee',
279 violetred: '#d02090', 279 violetred: '#d02090',
280 wheat: '#f5deb3', 280 wheat: '#f5deb3',
281 white: '#ffffff', 281 white: '#ffffff',
282 whitesmoke: '#f5f5f5', 282 whitesmoke: '#f5f5f5',
283 yellow: '#ffff00', 283 yellow: '#ffff00',
284 yellowgreen: '#9acd32' 284 yellowgreen: '#9acd32'
285 }; 285 };
-   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;
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
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 348 * @returns {boolean} - true if the series is in boost mode
304 */ 349 */
305 function isSeriesBoosting(series) { 350 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; -  
321 } -  
322   -  
323 return isChartSeriesBoosting(series.chart) || 351 return isChartSeriesBoosting(series.chart) ||
324 patientMax( 352 patientMax(
325 series.processedXData, 353 series.processedXData,
326 series.options.data, 354 series.options.data,
327 series.points 355 series.points
328 ) >= (series.options.boostThreshold || Number.MAX_VALUE); 356 ) >= (series.options.boostThreshold || Number.MAX_VALUE);
329 } 357 }
330   358  
331 //////////////////////////////////////////////////////////////////////////////// 359 ////////////////////////////////////////////////////////////////////////////////
332 // START OF WEBGL ABSTRACTIONS 360 // START OF WEBGL ABSTRACTIONS
333   361  
334 /* 362 /*
335 * A static shader mimicing axis translation functions found in parts/Axis 363 * A static shader mimicing axis translation functions found in parts/Axis
336 * @param gl {WebGLContext} - the context in which the shader is active 364 * @param gl {WebGLContext} - the context in which the shader is active
337 */ 365 */
338 function GLShader(gl) { 366 function GLShader(gl) {
339 var vertShade = [ 367 var vertShade = [
340 /* eslint-disable */ 368 /* eslint-disable */
341 '#version 100', 369 '#version 100',
342 'precision highp float;', 370 'precision highp float;',
343   371  
344 'attribute vec4 aVertexPosition;', 372 'attribute vec4 aVertexPosition;',
345 'attribute vec4 aColor;', 373 'attribute vec4 aColor;',
346   374  
347 'varying highp vec2 position;', 375 'varying highp vec2 position;',
348 'varying highp vec4 vColor;', 376 'varying highp vec4 vColor;',
349   377  
350 'uniform mat4 uPMatrix;', 378 'uniform mat4 uPMatrix;',
351 'uniform float pSize;', 379 'uniform float pSize;',
352   380  
353 'uniform float translatedThreshold;', 381 'uniform float translatedThreshold;',
354 'uniform bool hasThreshold;', 382 'uniform bool hasThreshold;',
355   383  
356 'uniform bool skipTranslation;', 384 'uniform bool skipTranslation;',
357   385  
358 'uniform float xAxisTrans;', 386 'uniform float xAxisTrans;',
359 'uniform float xAxisMin;', 387 'uniform float xAxisMin;',
360 'uniform float xAxisMinPad;', 388 'uniform float xAxisMinPad;',
361 'uniform float xAxisPointRange;', 389 'uniform float xAxisPointRange;',
362 'uniform float xAxisLen;', 390 'uniform float xAxisLen;',
363 'uniform bool xAxisPostTranslate;', 391 'uniform bool xAxisPostTranslate;',
364 'uniform float xAxisOrdinalSlope;', 392 'uniform float xAxisOrdinalSlope;',
365 'uniform float xAxisOrdinalOffset;', 393 'uniform float xAxisOrdinalOffset;',
366 'uniform float xAxisPos;', 394 'uniform float xAxisPos;',
367 'uniform bool xAxisCVSCoord;', 395 'uniform bool xAxisCVSCoord;',
368   396  
369 'uniform float yAxisTrans;', 397 'uniform float yAxisTrans;',
370 'uniform float yAxisMin;', 398 'uniform float yAxisMin;',
371 'uniform float yAxisMinPad;', 399 'uniform float yAxisMinPad;',
372 'uniform float yAxisPointRange;', 400 'uniform float yAxisPointRange;',
373 'uniform float yAxisLen;', 401 'uniform float yAxisLen;',
374 'uniform bool yAxisPostTranslate;', 402 'uniform bool yAxisPostTranslate;',
375 'uniform float yAxisOrdinalSlope;', 403 'uniform float yAxisOrdinalSlope;',
376 'uniform float yAxisOrdinalOffset;', 404 'uniform float yAxisOrdinalOffset;',
377 'uniform float yAxisPos;', 405 'uniform float yAxisPos;',
378 'uniform bool yAxisCVSCoord;', 406 'uniform bool yAxisCVSCoord;',
379   407  
380 'uniform bool isBubble;', 408 'uniform bool isBubble;',
381 'uniform bool bubbleSizeByArea;', 409 'uniform bool bubbleSizeByArea;',
382 'uniform float bubbleZMin;', 410 'uniform float bubbleZMin;',
383 'uniform float bubbleZMax;', 411 'uniform float bubbleZMax;',
384 'uniform float bubbleZThreshold;', 412 'uniform float bubbleZThreshold;',
385 'uniform float bubbleMinSize;', 413 'uniform float bubbleMinSize;',
386 'uniform float bubbleMaxSize;', 414 'uniform float bubbleMaxSize;',
387 'uniform bool bubbleSizeAbs;', 415 'uniform bool bubbleSizeAbs;',
388 'uniform bool isInverted;', 416 'uniform bool isInverted;',
389   417  
390 'float bubbleRadius(){', 418 'float bubbleRadius(){',
391 'float value = aVertexPosition.w;', 419 'float value = aVertexPosition.w;',
392 'float zMax = bubbleZMax;', 420 'float zMax = bubbleZMax;',
393 'float zMin = bubbleZMin;', 421 'float zMin = bubbleZMin;',
394 'float radius = 0.0;', 422 'float radius = 0.0;',
395 'float pos = 0.0;', 423 'float pos = 0.0;',
396 'float zRange = zMax - zMin;', 424 'float zRange = zMax - zMin;',
397   425  
398 'if (bubbleSizeAbs){', 426 'if (bubbleSizeAbs){',
399 'value = value - bubbleZThreshold;', 427 'value = value - bubbleZThreshold;',
400 'zMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);', 428 'zMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);',
401 'zMin = 0.0;', 429 'zMin = 0.0;',
402 '}', 430 '}',
403   431  
404 'if (value < zMin){', 432 'if (value < zMin){',
405 'radius = bubbleZMin / 2.0 - 1.0;', 433 'radius = bubbleZMin / 2.0 - 1.0;',
406 '} else {', 434 '} else {',
407 'pos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;', 435 'pos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;',
408 'if (bubbleSizeByArea && pos > 0.0){', 436 'if (bubbleSizeByArea && pos > 0.0){',
409 'pos = sqrt(pos);', 437 'pos = sqrt(pos);',
410 '}', 438 '}',
411 'radius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;', 439 'radius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;',
412 '}', 440 '}',
413   441  
414 'return radius * 2.0;', 442 'return radius * 2.0;',
415 '}', 443 '}',
416   444  
417 'float translate(float val,', 445 'float translate(float val,',
418 'float pointPlacement,', 446 'float pointPlacement,',
419 'float localA,', 447 'float localA,',
420 'float localMin,', 448 'float localMin,',
421 'float minPixelPadding,', 449 'float minPixelPadding,',
422 'float pointRange,', 450 'float pointRange,',
423 'float len,', 451 'float len,',
424 'bool cvsCoord', 452 'bool cvsCoord',
425 '){', 453 '){',
426   454  
427 'float sign = 1.0;', 455 'float sign = 1.0;',
428 'float cvsOffset = 0.0;', 456 'float cvsOffset = 0.0;',
429   457  
430 'if (cvsCoord) {', 458 'if (cvsCoord) {',
431 'sign *= -1.0;', 459 'sign *= -1.0;',
432 'cvsOffset = len;', 460 'cvsOffset = len;',
433 '}', 461 '}',
434   462  
435 'return sign * (val - localMin) * localA + cvsOffset + ', 463 'return sign * (val - localMin) * localA + cvsOffset + ',
436 '(sign * minPixelPadding);', //' + localA * pointPlacement * pointRange;', 464 '(sign * minPixelPadding);', //' + localA * pointPlacement * pointRange;',
437 '}', 465 '}',
438   466  
439 'float xToPixels(float value){', 467 'float xToPixels(float value){',
440 'if (skipTranslation){', 468 'if (skipTranslation){',
441 'return value;// + xAxisPos;', 469 'return value;// + xAxisPos;',
442 '}', 470 '}',
443   471  
444 'return translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord);// + xAxisPos;', 472 'return translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord);// + xAxisPos;',
445 '}', 473 '}',
446   474  
447 'float yToPixels(float value, float checkTreshold){', 475 'float yToPixels(float value, float checkTreshold){',
448 'float v;', 476 'float v;',
449 'if (skipTranslation){', 477 'if (skipTranslation){',
450 'v = value;// + yAxisPos;', 478 'v = value;// + yAxisPos;',
451 '} else {', 479 '} else {',
452 'v = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord);// + yAxisPos;', 480 'v = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord);// + yAxisPos;',
453 '}', 481 '}',
454 'if (checkTreshold > 0.0 && hasThreshold) {', 482 'if (checkTreshold > 0.0 && hasThreshold) {',
455 'v = min(v, translatedThreshold);', 483 'v = min(v, translatedThreshold);',
456 '}', 484 '}',
457 'return v;', 485 'return v;',
458 '}', 486 '}',
459   487  
460 'void main(void) {', 488 'void main(void) {',
461 'if (isBubble){', 489 'if (isBubble){',
462 'gl_PointSize = bubbleRadius();', 490 'gl_PointSize = bubbleRadius();',
463 '} else {', 491 '} else {',
464 'gl_PointSize = pSize;', 492 'gl_PointSize = pSize;',
465 '}', 493 '}',
466 //'gl_PointSize = 10.0;', 494 //'gl_PointSize = 10.0;',
467 'vColor = aColor;', 495 'vColor = aColor;',
468   496  
469 'if (isInverted) {', 497 'if (isInverted) {',
470 'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.y) + yAxisPos, yToPixels(aVertexPosition.x, aVertexPosition.z) + xAxisPos, 0.0, 1.0);', 498 'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.y) + yAxisPos, yToPixels(aVertexPosition.x, aVertexPosition.z) + xAxisPos, 0.0, 1.0);',
471 '} else {', 499 '} else {',
472 'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);', 500 'gl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);',
473 '}', 501 '}',
474 //'gl_Position = uPMatrix * vec4(aVertexPosition.x, aVertexPosition.y, 0.0, 1.0);', 502 //'gl_Position = uPMatrix * vec4(aVertexPosition.x, aVertexPosition.y, 0.0, 1.0);',
475 '}' 503 '}'
476 /* eslint-enable */ 504 /* eslint-enable */
477 ].join('\n'), 505 ].join('\n'),
478 //Fragment shader source 506 //Fragment shader source
479 fragShade = [ 507 fragShade = [
480 /* eslint-disable */ 508 /* eslint-disable */
481 'precision highp float;', 509 'precision highp float;',
482 'uniform vec4 fillColor;', 510 'uniform vec4 fillColor;',
483 'varying highp vec2 position;', 511 'varying highp vec2 position;',
484 'varying highp vec4 vColor;', 512 'varying highp vec4 vColor;',
485 'uniform sampler2D uSampler;', 513 'uniform sampler2D uSampler;',
486 'uniform bool isCircle;', 514 'uniform bool isCircle;',
487 'uniform bool hasColor;', 515 'uniform bool hasColor;',
488   516  
489 // 'vec4 toColor(float value, vec2 point) {', 517 // 'vec4 toColor(float value, vec2 point) {',
490 // 'return vec4(0.0, 0.0, 0.0, 0.0);', 518 // 'return vec4(0.0, 0.0, 0.0, 0.0);',
491 // '}', 519 // '}',
492   520  
493 'void main(void) {', 521 'void main(void) {',
494 'vec4 col = fillColor;', 522 'vec4 col = fillColor;',
495   523  
496 'if (hasColor) {', 524 'if (hasColor) {',
497 'col = vColor;', 525 'col = vColor;',
498 '}', 526 '}',
499   527  
500 'if (isCircle) {', 528 'if (isCircle) {',
501 'gl_FragColor = col * texture2D(uSampler, gl_PointCoord.st);', 529 'gl_FragColor = col * texture2D(uSampler, gl_PointCoord.st);',
502 '} else {', 530 '} else {',
503 'gl_FragColor = col;', 531 'gl_FragColor = col;',
504 '}', 532 '}',
505 '}' 533 '}'
506 /* eslint-enable */ 534 /* eslint-enable */
507 ].join('\n'), 535 ].join('\n'),
508 uLocations = {}, 536 uLocations = {},
509 //The shader program 537 //The shader program
510 shaderProgram, 538 shaderProgram,
511 //Uniform handle to the perspective matrix 539 //Uniform handle to the perspective matrix
512 pUniform, 540 pUniform,
513 //Uniform for point size 541 //Uniform for point size
514 psUniform, 542 psUniform,
515 //Uniform for fill color 543 //Uniform for fill color
516 fillColorUniform, 544 fillColorUniform,
517 //Uniform for isBubble 545 //Uniform for isBubble
518 isBubbleUniform, 546 isBubbleUniform,
519 //Uniform for bubble abs sizing 547 //Uniform for bubble abs sizing
520 bubbleSizeAbsUniform, 548 bubbleSizeAbsUniform,
521 bubbleSizeAreaUniform, 549 bubbleSizeAreaUniform,
522 //Skip translation uniform 550 //Skip translation uniform
523 skipTranslationUniform, 551 skipTranslationUniform,
524 //Set to 1 if circle 552 //Set to 1 if circle
525 isCircleUniform, 553 isCircleUniform,
526 //Uniform for invertion 554 //Uniform for invertion
527 isInverted, 555 isInverted,
528 //Texture uniform 556 //Texture uniform
529 uSamplerUniform; 557 uSamplerUniform;
530   558  
531 /* String to shader program 559 /* String to shader program
532 * @param {string} str - the program source 560 * @param {string} str - the program source
533 * @param {string} type - the program type: either `vertex` or `fragment` 561 * @param {string} type - the program type: either `vertex` or `fragment`
534 * @returns {bool|shader} 562 * @returns {bool|shader}
535 */ 563 */
536 function stringToProgram(str, type) { 564 function stringToProgram(str, type) {
537 var t = type === 'vertex' ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER, 565 var t = type === 'vertex' ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER,
538 shader = gl.createShader(t); 566 shader = gl.createShader(t);
539   567  
540 gl.shaderSource(shader, str); 568 gl.shaderSource(shader, str);
541 gl.compileShader(shader); 569 gl.compileShader(shader);
542   570  
543 if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { 571 if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
544 //console.error('shader error:', gl.getShaderInfoLog(shader)); 572 //console.error('shader error:', gl.getShaderInfoLog(shader));
545 return false; 573 return false;
546 } 574 }
547 return shader; 575 return shader;
548 } 576 }
549   577  
550 /* 578 /*
551 * Create the shader. 579 * Create the shader.
552 * Loads the shader program statically defined above 580 * Loads the shader program statically defined above
553 */ 581 */
554 function createShader() { 582 function createShader() {
555 var v = stringToProgram(vertShade, 'vertex'), 583 var v = stringToProgram(vertShade, 'vertex'),
556 f = stringToProgram(fragShade, 'fragment'); 584 f = stringToProgram(fragShade, 'fragment');
557   585  
558 if (!v || !f) { 586 if (!v || !f) {
559 shaderProgram = false; 587 shaderProgram = false;
560 //console.error('error creating shader program'); 588 //console.error('error creating shader program');
561 return false; 589 return false;
562 } 590 }
563   591  
564 function uloc(n) { 592 function uloc(n) {
565 return gl.getUniformLocation(shaderProgram, n); 593 return gl.getUniformLocation(shaderProgram, n);
566 } 594 }
567   595  
568 shaderProgram = gl.createProgram(); 596 shaderProgram = gl.createProgram();
569   597  
570 gl.attachShader(shaderProgram, v); 598 gl.attachShader(shaderProgram, v);
571 gl.attachShader(shaderProgram, f); 599 gl.attachShader(shaderProgram, f);
572 gl.linkProgram(shaderProgram); 600 gl.linkProgram(shaderProgram);
573   601  
574 gl.useProgram(shaderProgram); 602 gl.useProgram(shaderProgram);
575   603  
576 gl.bindAttribLocation(shaderProgram, 0, 'aVertexPosition'); 604 gl.bindAttribLocation(shaderProgram, 0, 'aVertexPosition');
577   605  
578 pUniform = uloc('uPMatrix'); 606 pUniform = uloc('uPMatrix');
579 psUniform = uloc('pSize'); 607 psUniform = uloc('pSize');
580 fillColorUniform = uloc('fillColor'); 608 fillColorUniform = uloc('fillColor');
581 isBubbleUniform = uloc('isBubble'); 609 isBubbleUniform = uloc('isBubble');
582 bubbleSizeAbsUniform = uloc('bubbleSizeAbs'); 610 bubbleSizeAbsUniform = uloc('bubbleSizeAbs');
583 bubbleSizeAreaUniform = uloc('bubbleSizeByArea'); 611 bubbleSizeAreaUniform = uloc('bubbleSizeByArea');
584 uSamplerUniform = uloc('uSampler'); 612 uSamplerUniform = uloc('uSampler');
585 skipTranslationUniform = uloc('skipTranslation'); 613 skipTranslationUniform = uloc('skipTranslation');
586 isCircleUniform = uloc('isCircle'); 614 isCircleUniform = uloc('isCircle');
587 isInverted = uloc('isInverted'); 615 isInverted = uloc('isInverted');
588   616  
589 return true; 617 return true;
590 } 618 }
591   619  
592 /* 620 /*
593 * Destroy the shader 621 * Destroy the shader
594 */ 622 */
595 function destroy() { 623 function destroy() {
596 if (gl && shaderProgram) { 624 if (gl && shaderProgram) {
597 gl.deleteProgram(shaderProgram); 625 gl.deleteProgram(shaderProgram);
598 } 626 }
599 } 627 }
600   628  
601 /* 629 /*
602 * Bind the shader. 630 * Bind the shader.
603 * This makes the shader the active one until another one is bound, 631 * This makes the shader the active one until another one is bound,
604 * or until 0 is bound. 632 * or until 0 is bound.
605 */ 633 */
606 function bind() { 634 function bind() {
607 gl.useProgram(shaderProgram); 635 gl.useProgram(shaderProgram);
608 } 636 }
609   637  
610 /* 638 /*
611 * Set a uniform value. 639 * Set a uniform value.
612 * This uses a hash map to cache uniform locations. 640 * This uses a hash map to cache uniform locations.
613 * @param name {string} - the name of the uniform to set 641 * @param name {string} - the name of the uniform to set
614 * @param val {float} - the value to set 642 * @param val {float} - the value to set
615 */ 643 */
616 function setUniform(name, val) { 644 function setUniform(name, val) {
617 var u = uLocations[name] = uLocations[name] || 645 var u = uLocations[name] = uLocations[name] ||
618 gl.getUniformLocation(shaderProgram, name); 646 gl.getUniformLocation(shaderProgram, name);
619 gl.uniform1f(u, val); 647 gl.uniform1f(u, val);
620 } 648 }
621   649  
622 /* 650 /*
623 * Set the active texture 651 * Set the active texture
624 * @param texture - the texture 652 * @param texture - the texture
625 */ 653 */
626 function setTexture() { 654 function setTexture() {
627 gl.uniform1i(uSamplerUniform, 0); 655 gl.uniform1i(uSamplerUniform, 0);
628 } 656 }
629   657  
630 /* 658 /*
631 * Set if inversion state 659 * Set if inversion state
632 * @flag is the state 660 * @flag is the state
633 */ 661 */
634 function setInverted(flag) { 662 function setInverted(flag) {
635 gl.uniform1i(isInverted, flag); 663 gl.uniform1i(isInverted, flag);
636 } 664 }
637   665  
638 //////////////////////////////////////////////////////////////////////////// 666 ////////////////////////////////////////////////////////////////////////////
639   667  
640 /* 668 /*
641 * Enable/disable circle drawing 669 * Enable/disable circle drawing
642 */ 670 */
643 function setDrawAsCircle(flag) { 671 function setDrawAsCircle(flag) {
644 gl.uniform1i(isCircleUniform, flag ? 1 : 0); 672 gl.uniform1i(isCircleUniform, flag ? 1 : 0);
645 } 673 }
646   674  
647 /* 675 /*
648 * Flush 676 * Flush
649 */ 677 */
650 function reset() { 678 function reset() {
651 gl.uniform1i(isBubbleUniform, 0); 679 gl.uniform1i(isBubbleUniform, 0);
652 gl.uniform1i(isCircleUniform, 0); 680 gl.uniform1i(isCircleUniform, 0);
653 } 681 }
654   682  
655 /* 683 /*
656 * Set bubble uniforms 684 * Set bubble uniforms
657 * @param series {Highcharts.Series} - the series to use 685 * @param series {Highcharts.Series} - the series to use
658 */ 686 */
659 function setBubbleUniforms(series, zCalcMin, zCalcMax) { 687 function setBubbleUniforms(series, zCalcMin, zCalcMax) {
660 var seriesOptions = series.options, 688 var seriesOptions = series.options,
661 zMin = Number.MAX_VALUE, 689 zMin = Number.MAX_VALUE,
662 zMax = -Number.MAX_VALUE; 690 zMax = -Number.MAX_VALUE;
663   691  
664 if (series.type === 'bubble') { 692 if (series.type === 'bubble') {
665 zMin = pick(seriesOptions.zMin, Math.min( 693 zMin = pick(seriesOptions.zMin, Math.min(
666 zMin, 694 zMin,
667 Math.max( 695 Math.max(
668 zCalcMin, 696 zCalcMin,
669 seriesOptions.displayNegative === false ? 697 seriesOptions.displayNegative === false ?
670 seriesOptions.zThreshold : -Number.MAX_VALUE 698 seriesOptions.zThreshold : -Number.MAX_VALUE
671 ) 699 )
672 )); 700 ));
673   701  
674 zMax = pick(seriesOptions.zMax, Math.max(zMax, zCalcMax)); 702 zMax = pick(seriesOptions.zMax, Math.max(zMax, zCalcMax));
675   703  
676 gl.uniform1i(isBubbleUniform, 1); 704 gl.uniform1i(isBubbleUniform, 1);
677 gl.uniform1i(isCircleUniform, 1); 705 gl.uniform1i(isCircleUniform, 1);
678 gl.uniform1i(bubbleSizeAreaUniform, series.options.sizeBy !== 'width'); 706 gl.uniform1i(bubbleSizeAreaUniform, series.options.sizeBy !== 'width');
679 gl.uniform1i(bubbleSizeAbsUniform, series.options.sizeByAbsoluteValue); 707 gl.uniform1i(bubbleSizeAbsUniform, series.options.sizeByAbsoluteValue);
680   708  
681 setUniform('bubbleZMin', zMin); 709 setUniform('bubbleZMin', zMin);
682 setUniform('bubbleZMax', zMax); 710 setUniform('bubbleZMax', zMax);
683 setUniform('bubbleZThreshold', series.options.zThreshold); 711 setUniform('bubbleZThreshold', series.options.zThreshold);
684 setUniform('bubbleMinSize', series.minPxSize); 712 setUniform('bubbleMinSize', series.minPxSize);
685 setUniform('bubbleMaxSize', series.maxPxSize); 713 setUniform('bubbleMaxSize', series.maxPxSize);
686 } 714 }
687 } 715 }
688   716  
689 /* 717 /*
690 * Set the Color uniform. 718 * Set the Color uniform.
691 * @param color {Array<float>} - an array with RGBA values 719 * @param color {Array<float>} - an array with RGBA values
692 */ 720 */
693 function setColor(color) { 721 function setColor(color) {
694 gl.uniform4f( 722 gl.uniform4f(
695 fillColorUniform, 723 fillColorUniform,
696 color[0] / 255.0, 724 color[0] / 255.0,
697 color[1] / 255.0, 725 color[1] / 255.0,
698 color[2] / 255.0, 726 color[2] / 255.0,
699 color[3] 727 color[3]
700 ); 728 );
701 } 729 }
702   730  
703 /* 731 /*
704 * Set skip translation 732 * Set skip translation
705 */ 733 */
706 function setSkipTranslation(flag) { 734 function setSkipTranslation(flag) {
707 gl.uniform1i(skipTranslationUniform, flag === true ? 1 : 0); 735 gl.uniform1i(skipTranslationUniform, flag === true ? 1 : 0);
708 } 736 }
709   737  
710 /* 738 /*
711 * Set the perspective matrix 739 * Set the perspective matrix
712 * @param m {Matrix4x4} - the matrix 740 * @param m {Matrix4x4} - the matrix
713 */ 741 */
714 function setPMatrix(m) { 742 function setPMatrix(m) {
715 gl.uniformMatrix4fv(pUniform, false, m); 743 gl.uniformMatrix4fv(pUniform, false, m);
716 } 744 }
717   745  
718 /* 746 /*
719 * Set the point size. 747 * Set the point size.
720 * @param p {float} - point size 748 * @param p {float} - point size
721 */ 749 */
722 function setPointSize(p) { 750 function setPointSize(p) {
723 gl.uniform1f(psUniform, p); 751 gl.uniform1f(psUniform, p);
724 } 752 }
725   753  
726 /* 754 /*
727 * Get the shader program handle 755 * Get the shader program handle
728 * @returns {GLInt} - the handle for the program 756 * @returns {GLInt} - the handle for the program
729 */ 757 */
730 function getProgram() { 758 function getProgram() {
731 return shaderProgram; 759 return shaderProgram;
732 } 760 }
733   761  
734 if (gl) { 762 if (gl) {
735 createShader(); 763 createShader();
736 } 764 }
737   765  
738 return { 766 return {
739 psUniform: function() { 767 psUniform: function() {
740 return psUniform; 768 return psUniform;
741 }, 769 },
742 pUniform: function() { 770 pUniform: function() {
743 return pUniform; 771 return pUniform;
744 }, 772 },
745 fillColorUniform: function() { 773 fillColorUniform: function() {
746 return fillColorUniform; 774 return fillColorUniform;
747 }, 775 },
748 setBubbleUniforms: setBubbleUniforms, 776 setBubbleUniforms: setBubbleUniforms,
749 bind: bind, 777 bind: bind,
750 program: getProgram, 778 program: getProgram,
751 create: createShader, 779 create: createShader,
752 setUniform: setUniform, 780 setUniform: setUniform,
753 setPMatrix: setPMatrix, 781 setPMatrix: setPMatrix,
754 setColor: setColor, 782 setColor: setColor,
755 setPointSize: setPointSize, 783 setPointSize: setPointSize,
756 setSkipTranslation: setSkipTranslation, 784 setSkipTranslation: setSkipTranslation,
757 setTexture: setTexture, 785 setTexture: setTexture,
758 setDrawAsCircle: setDrawAsCircle, 786 setDrawAsCircle: setDrawAsCircle,
759 reset: reset, 787 reset: reset,
760 setInverted: setInverted, 788 setInverted: setInverted,
761 destroy: destroy 789 destroy: destroy
762 }; 790 };
763 } 791 }
764   792  
765 /* 793 /*
766 * Vertex Buffer abstraction 794 * Vertex Buffer abstraction
767 * A vertex buffer is a set of vertices which are passed to the GPU 795 * A vertex buffer is a set of vertices which are passed to the GPU
768 * in a single call. 796 * in a single call.
769 * @param gl {WebGLContext} - the context in which to create the buffer 797 * @param gl {WebGLContext} - the context in which to create the buffer
770 * @param shader {GLShader} - the shader to use 798 * @param shader {GLShader} - the shader to use
771 */ 799 */
772 function GLVertexBuffer(gl, shader, dataComponents /*, type */ ) { 800 function GLVertexBuffer(gl, shader, dataComponents /*, type */ ) {
773 var buffer = false, 801 var buffer = false,
774 vertAttribute = false, 802 vertAttribute = false,
775 components = dataComponents || 2, 803 components = dataComponents || 2,
776 preAllocated = false, 804 preAllocated = false,
777 iterator = 0, 805 iterator = 0,
778 data; 806 data;
779   807  
780 // type = type || 'float'; 808 // type = type || 'float';
781   809  
782 function destroy() { 810 function destroy() {
783 if (buffer) { 811 if (buffer) {
784 gl.deleteBuffer(buffer); 812 gl.deleteBuffer(buffer);
785 } 813 }
786 } 814 }
787   815  
788 /* 816 /*
789 * Build the buffer 817 * Build the buffer
790 * @param dataIn {Array<float>} - a 0 padded array of indices 818 * @param dataIn {Array<float>} - a 0 padded array of indices
791 * @param attrib {String} - the name of the Attribute to bind the buffer to 819 * @param attrib {String} - the name of the Attribute to bind the buffer to
792 * @param dataComponents {Integer} - the number of components per. indice 820 * @param dataComponents {Integer} - the number of components per. indice
793 */ 821 */
794 function build(dataIn, attrib, dataComponents) { 822 function build(dataIn, attrib, dataComponents) {
795   823  
796 data = dataIn || []; 824 data = dataIn || [];
797   825  
798 if ((!data || data.length === 0) && !preAllocated) { 826 if ((!data || data.length === 0) && !preAllocated) {
799 //console.error('trying to render empty vbuffer'); 827 //console.error('trying to render empty vbuffer');
800 buffer = false; 828 buffer = false;
801 return false; 829 return false;
802 } 830 }
803   831  
804 components = dataComponents || components; 832 components = dataComponents || components;
805   833  
806 if (buffer) { 834 if (buffer) {
807 gl.deleteBuffer(buffer); 835 gl.deleteBuffer(buffer);
808 } 836 }
809   837  
810 buffer = gl.createBuffer(); 838 buffer = gl.createBuffer();
811 gl.bindBuffer(gl.ARRAY_BUFFER, buffer); 839 gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
812 gl.bufferData( 840 gl.bufferData(
813 gl.ARRAY_BUFFER, 841 gl.ARRAY_BUFFER,
814 preAllocated || new Float32Array(data), 842 preAllocated || new Float32Array(data),
815 gl.STATIC_DRAW 843 gl.STATIC_DRAW
816 ); 844 );
817   845  
818 // gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition'); 846 // gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');
819 vertAttribute = gl.getAttribLocation(shader.program(), attrib); 847 vertAttribute = gl.getAttribLocation(shader.program(), attrib);
820 gl.enableVertexAttribArray(vertAttribute); 848 gl.enableVertexAttribArray(vertAttribute);
821   849  
822 return true; 850 return true;
823 } 851 }
824   852  
825 /* 853 /*
826 * Bind the buffer 854 * Bind the buffer
827 */ 855 */
828 function bind() { 856 function bind() {
829 if (!buffer) { 857 if (!buffer) {
830 return false; 858 return false;
831 } 859 }
832   860  
833 // gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition'); 861 // gl.bindAttribLocation(shader.program(), 0, 'aVertexPosition');
834 //gl.enableVertexAttribArray(vertAttribute); 862 //gl.enableVertexAttribArray(vertAttribute);
835 //gl.bindBuffer(gl.ARRAY_BUFFER, buffer); 863 //gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
836 gl.vertexAttribPointer(vertAttribute, components, gl.FLOAT, false, 0, 0); 864 gl.vertexAttribPointer(vertAttribute, components, gl.FLOAT, false, 0, 0);
837 //gl.enableVertexAttribArray(vertAttribute); 865 //gl.enableVertexAttribArray(vertAttribute);
838 } 866 }
839   867  
840 /* 868 /*
841 * Render the buffer 869 * Render the buffer
842 * @param from {Integer} - the start indice 870 * @param from {Integer} - the start indice
843 * @param to {Integer} - the end indice 871 * @param to {Integer} - the end indice
844 * @param drawMode {String} - the draw mode 872 * @param drawMode {String} - the draw mode
845 */ 873 */
846 function render(from, to, drawMode) { 874 function render(from, to, drawMode) {
847 var length = preAllocated ? preAllocated.length : data.length; 875 var length = preAllocated ? preAllocated.length : data.length;
848   876  
849 if (!buffer) { 877 if (!buffer) {
850 return false; 878 return false;
851 } 879 }
852   880  
853 if (!length) { 881 if (!length) {
854 return false; 882 return false;
855 } 883 }
856   884  
857 if (!from || from > length || from < 0) { 885 if (!from || from > length || from < 0) {
858 < 0) { from = 0; 886 < 0) { from = 0;
859 < 0) { } 887 < 0) { }
860 < 0) { 888 < 0) {
861 < 0) { if (!to || to > length) { 889 < 0) { if (!to || to > length) {
862 < 0) { to = length; 890 < 0) { to = length;
863 < 0) { } 891 < 0) { }
864 < 0) { 892 < 0) {
865 < 0) { drawMode = drawMode || 'points'; 893 < 0) { drawMode = drawMode || 'points';
866 < 0) { 894 < 0) {
867 < 0) { gl.drawArrays( 895 < 0) { gl.drawArrays(
868 < 0) { gl[drawMode.toUpperCase()], 896 < 0) { gl[drawMode.toUpperCase()],
869 < 0) { from / components, 897 < 0) { from / components,
870 < 0) { (to - from) / components 898 < 0) { (to - from) / components
871 < 0) { ); 899 < 0) { );
872 < 0) { 900 < 0) {
873 < 0) { return true; 901 < 0) { return true;
874 < 0) { } 902 < 0) { }
875 < 0) { 903 < 0) {
876 < 0) { function push(x, y, a, b) { 904 < 0) { function push(x, y, a, b) {
877 < 0) { if (preAllocated) { // && iterator <= preAllocated.length - 4) { 905 < 0) { if (preAllocated) { // && iterator <= preAllocated.length - 4) {
878 < 0) {<= preAllocated.length - 4) { preAllocated[++iterator] = x; 906 < 0) {<= preAllocated.length - 4) { preAllocated[++iterator] = x;
879 < 0) {<= preAllocated.length - 4) { preAllocated[++iterator] = y; 907 < 0) {<= preAllocated.length - 4) { preAllocated[++iterator] = y;
880 < 0) {<= preAllocated.length - 4) { preAllocated[++iterator] = a; 908 < 0) {<= preAllocated.length - 4) { preAllocated[++iterator] = a;
881 < 0) {<= preAllocated.length - 4) { preAllocated[++iterator] = b; 909 < 0) {<= preAllocated.length - 4) { preAllocated[++iterator] = b;
882 < 0) {<= preAllocated.length - 4) { } 910 < 0) {<= preAllocated.length - 4) { }
883 < 0) {<= preAllocated.length - 4) { } 911 < 0) {<= preAllocated.length - 4) { }
884 < 0) {<= preAllocated.length - 4) { 912 < 0) {<= preAllocated.length - 4) {
885 < 0) {<= preAllocated.length - 4) { /* 913 < 0) {<= preAllocated.length - 4) { /*
886 < 0) {<= preAllocated.length - 4) { * Note about pre-allocated buffers: 914 < 0) {<= preAllocated.length - 4) { * Note about pre-allocated buffers:
887 < 0) {<= preAllocated.length - 4) { * - This is slower for charts with many series 915 < 0) {<= preAllocated.length - 4) { * - This is slower for charts with many series
888 < 0) {<= preAllocated.length - 4) { */ 916 < 0) {<= preAllocated.length - 4) { */
889 < 0) {<= preAllocated.length - 4) { function allocate(size) { 917 < 0) {<= preAllocated.length - 4) { function allocate(size) {
890 < 0) {<= preAllocated.length - 4) { size *= 4; 918 < 0) {<= preAllocated.length - 4) { size *= 4;
891 < 0) {<= preAllocated.length - 4) { iterator = -1; 919 < 0) {<= preAllocated.length - 4) { iterator = -1;
892 < 0) {<= preAllocated.length - 4) { 920 < 0) {<= preAllocated.length - 4) {
893 < 0) {<= preAllocated.length - 4) { //if (!preAllocated || (preAllocated && preAllocated.length !== size)) { 921 < 0) {<= preAllocated.length - 4) { //if (!preAllocated || (preAllocated && preAllocated.length !== size)) {
894 < 0) {<= preAllocated.length - 4) { preAllocated = new Float32Array(size); 922 < 0) {<= preAllocated.length - 4) { preAllocated = new Float32Array(size);
895 < 0) {<= preAllocated.length - 4) { //} 923 < 0) {<= preAllocated.length - 4) { //}
896 < 0) {<= preAllocated.length - 4) { } 924 < 0) {<= preAllocated.length - 4) { }
897 < 0) {<= preAllocated.length - 4) { 925 < 0) {<= preAllocated.length - 4) {
898 < 0) {<= preAllocated.length - 4) { //////////////////////////////////////////////////////////////////////////// 926 < 0) {<= preAllocated.length - 4) { ////////////////////////////////////////////////////////////////////////////
899 < 0) {<= preAllocated.length - 4) { return { 927 < 0) {<= preAllocated.length - 4) { return {
900 < 0) {<= preAllocated.length - 4) { destroy: destroy, 928 < 0) {<= preAllocated.length - 4) { destroy: destroy,
901 < 0) {<= preAllocated.length - 4) { bind: bind, 929 < 0) {<= preAllocated.length - 4) { bind: bind,
902 < 0) {<= preAllocated.length - 4) { data: data, 930 < 0) {<= preAllocated.length - 4) { data: data,
903 < 0) {<= preAllocated.length - 4) { build: build, 931 < 0) {<= preAllocated.length - 4) { build: build,
904 < 0) {<= preAllocated.length - 4) { render: render, 932 < 0) {<= preAllocated.length - 4) { render: render,
905 < 0) {<= preAllocated.length - 4) { allocate: allocate, 933 < 0) {<= preAllocated.length - 4) { allocate: allocate,
906 < 0) {<= preAllocated.length - 4) { push: push 934 < 0) {<= preAllocated.length - 4) { push: push
907 < 0) {<= preAllocated.length - 4) { }; 935 < 0) {<= preAllocated.length - 4) { };
908 < 0) {<= preAllocated.length - 4) { } 936 < 0) {<= preAllocated.length - 4) { }
909 < 0) {<= preAllocated.length - 4) { 937 < 0) {<= preAllocated.length - 4) {
910 < 0) {<= preAllocated.length - 4) { /* Main renderer. Used to render series. 938 < 0) {<= preAllocated.length - 4) { /* Main renderer. Used to render series.
911 < 0) {<= preAllocated.length - 4) { * Notes to self: 939 < 0) {<= preAllocated.length - 4) { * Notes to self:
912 < 0) {<= preAllocated.length - 4) { * - May be able to build a point map by rendering to a separate canvas 940 < 0) {<= preAllocated.length - 4) { * - May be able to build a point map by rendering to a separate canvas
913 < 0) {<= preAllocated.length - 4) { * and encoding values in the color data. 941 < 0) {<= preAllocated.length - 4) { * and encoding values in the color data.
914 < 0) {<= preAllocated.length - 4) { * - Need to figure out a way to transform the data quicker 942 < 0) {<= preAllocated.length - 4) { * - Need to figure out a way to transform the data quicker
915 < 0) {<= preAllocated.length - 4) { */ 943 < 0) {<= preAllocated.length - 4) { */
916 < 0) {<= preAllocated.length - 4) { function GLRenderer(postRenderCallback) { 944 < 0) {<= preAllocated.length - 4) { function GLRenderer(postRenderCallback) {
917 < 0) {<= preAllocated.length - 4) { var // Shader 945 < 0) {<= preAllocated.length - 4) { var // Shader
918 < 0) {<= preAllocated.length - 4) { shader = false, 946 < 0) {<= preAllocated.length - 4) { shader = false,
919 < 0) {<= preAllocated.length - 4) { // Vertex buffers - keyed on shader attribute name 947 < 0) {<= preAllocated.length - 4) { // Vertex buffers - keyed on shader attribute name
920 < 0) {<= preAllocated.length - 4) { vbuffer = false, 948 < 0) {<= preAllocated.length - 4) { vbuffer = false,
921 < 0) {<= preAllocated.length - 4) { // Opengl context 949 < 0) {<= preAllocated.length - 4) { // Opengl context
922 < 0) {<= preAllocated.length - 4) { gl = false, 950 < 0) {<= preAllocated.length - 4) { gl = false,
923 < 0) {<= preAllocated.length - 4) { // Width of our viewport in pixels 951 < 0) {<= preAllocated.length - 4) { // Width of our viewport in pixels
924 < 0) {<= preAllocated.length - 4) { width = 0, 952 < 0) {<= preAllocated.length - 4) { width = 0,
925 < 0) {<= preAllocated.length - 4) { // Height of our viewport in pixels 953 < 0) {<= preAllocated.length - 4) { // Height of our viewport in pixels
926 < 0) {<= preAllocated.length - 4) { height = 0, 954 < 0) {<= preAllocated.length - 4) { height = 0,
927 < 0) {<= preAllocated.length - 4) { // The data to render - array of coordinates 955 < 0) {<= preAllocated.length - 4) { // The data to render - array of coordinates
928 < 0) {<= preAllocated.length - 4) { data = false, 956 < 0) {<= preAllocated.length - 4) { data = false,
929 < 0) {<= preAllocated.length - 4) { // The marker data 957 < 0) {<= preAllocated.length - 4) { // The marker data
930 < 0) {<= preAllocated.length - 4) { markerData = false, 958 < 0) {<= preAllocated.length - 4) { markerData = false,
931 < 0) {<= preAllocated.length - 4) { // Is the texture ready? 959 < 0) {<= preAllocated.length - 4) { // Is the texture ready?
932 < 0) {<= preAllocated.length - 4) { textureIsReady = false, 960 < 0) {<= preAllocated.length - 4) { textureIsReady = false,
933 < 0) {<= preAllocated.length - 4) { // Exports 961 < 0) {<= preAllocated.length - 4) { // Exports
934 < 0) {<= preAllocated.length - 4) { exports = {}, 962 < 0) {<= preAllocated.length - 4) { exports = {},
935 < 0) {<= preAllocated.length - 4) { // Is it inited? 963 < 0) {<= preAllocated.length - 4) { // Is it inited?
936 < 0) {<= preAllocated.length - 4) { isInited = false, 964 < 0) {<= preAllocated.length - 4) { isInited = false,
937 < 0) {<= preAllocated.length - 4) { // The series stack 965 < 0) {<= preAllocated.length - 4) { // The series stack
938 < 0) {<= preAllocated.length - 4) { series = [], 966 < 0) {<= preAllocated.length - 4) { series = [],
939 < 0) {<= preAllocated.length - 4) { // Texture for circles 967 < 0) {<= preAllocated.length - 4) { // Texture for circles
940 < 0) {<= preAllocated.length - 4) { circleTexture = doc.createElement('canvas'), 968 < 0) {<= preAllocated.length - 4) { circleTexture = doc.createElement('canvas'),
941 < 0) {<= preAllocated.length - 4) { // Context for circle texture 969 < 0) {<= preAllocated.length - 4) { // Context for circle texture
942 < 0) {<= preAllocated.length - 4) { circleCtx = circleTexture.getContext('2d'), 970 < 0) {<= preAllocated.length - 4) { circleCtx = circleTexture.getContext('2d'),
943 < 0) {<= preAllocated.length - 4) { // Handle for the circle texture 971 < 0) {<= preAllocated.length - 4) { // Handle for the circle texture
944 < 0) {<= preAllocated.length - 4) { circleTextureHandle, 972 < 0) {<= preAllocated.length - 4) { circleTextureHandle,
945 < 0) {<= preAllocated.length - 4) { // Things to draw as "rectangles" (i.e lines) 973 < 0) {<= preAllocated.length - 4) { // Things to draw as "rectangles" (i.e lines)
946 < 0) {<= preAllocated.length - 4) { asBar = { 974 < 0) {<= preAllocated.length - 4) { asBar = {
947 < 0) {<= preAllocated.length - 4) { 'column': true, 975 < 0) {<= preAllocated.length - 4) { 'column': true,
948 < 0) {<= preAllocated.length - 4) { 'area': true 976 < 0) {<= preAllocated.length - 4) { 'area': true
949 < 0) {<= preAllocated.length - 4) { }, 977 < 0) {<= preAllocated.length - 4) { },
950 < 0) {<= preAllocated.length - 4) { asCircle = { 978 < 0) {<= preAllocated.length - 4) { asCircle = {
951 < 0) {<= preAllocated.length - 4) { 'scatter': true, 979 < 0) {<= preAllocated.length - 4) { 'scatter': true,
952 < 0) {<= preAllocated.length - 4) { 'bubble': true 980 < 0) {<= preAllocated.length - 4) { 'bubble': true
953 < 0) {<= preAllocated.length - 4) { }, 981 < 0) {<= preAllocated.length - 4) { },
954 < 0) {<= preAllocated.length - 4) { //Render settings 982 < 0) {<= preAllocated.length - 4) { //Render settings
955 < 0) {<= preAllocated.length - 4) { settings = { 983 < 0) {<= preAllocated.length - 4) { settings = {
956 < 0) {<= preAllocated.length - 4) { pointSize: 1, 984 < 0) {<= preAllocated.length - 4) { pointSize: 1,
957 < 0) {<= preAllocated.length - 4) { lineWidth: 3, 985 < 0) {<= preAllocated.length - 4) { lineWidth: 3,
958 < 0) {<= preAllocated.length - 4) { fillColor: '#AA00AA', 986 < 0) {<= preAllocated.length - 4) { fillColor: '#AA00AA',
959 < 0) {<= preAllocated.length - 4) { useAlpha: true, 987 < 0) {<= preAllocated.length - 4) { useAlpha: true,
960 < 0) {<= preAllocated.length - 4) { usePreallocated: false, 988 < 0) {<= preAllocated.length - 4) { usePreallocated: false,
961 < 0) {<= preAllocated.length - 4) { useGPUTranslations: false, 989 < 0) {<= preAllocated.length - 4) { useGPUTranslations: false,
962 < 0) {<= preAllocated.length - 4) { timeRendering: false, 990 < 0) {<= preAllocated.length - 4) { timeRendering: false,
963 < 0) {<= preAllocated.length - 4) { timeSeriesProcessing: false, 991 < 0) {<= preAllocated.length - 4) { timeSeriesProcessing: false,
964 < 0) {<= preAllocated.length - 4) { timeSetup: false 992 < 0) {<= preAllocated.length - 4) { timeSetup: false
965 < 0) {<= preAllocated.length - 4) { }; 993 < 0) {<= preAllocated.length - 4) { };
966 < 0) {<= preAllocated.length - 4) { 994 < 0) {<= preAllocated.length - 4) {
967 < 0) {<= preAllocated.length - 4) { //////////////////////////////////////////////////////////////////////////// 995 < 0) {<= preAllocated.length - 4) { ////////////////////////////////////////////////////////////////////////////
968 < 0) {<= preAllocated.length - 4) { 996 < 0) {<= preAllocated.length - 4) {
969 < 0) {<= preAllocated.length - 4) { function setOptions(options) { 997 < 0) {<= preAllocated.length - 4) { function setOptions(options) {
970 < 0) {<= preAllocated.length - 4) { merge(true, settings, options); 998 < 0) {<= preAllocated.length - 4) { merge(true, settings, options);
971 < 0) {<= preAllocated.length - 4) { } 999 < 0) {<= preAllocated.length - 4) { }
972 < 0) {<= preAllocated.length - 4) { 1000 < 0) {<= preAllocated.length - 4) {
973 < 0) {<= preAllocated.length - 4) { function seriesPointCount(series) { 1001 < 0) {<= preAllocated.length - 4) { function seriesPointCount(series) {
974 < 0) {<= preAllocated.length - 4) { var isStacked, 1002 < 0) {<= preAllocated.length - 4) { var isStacked,
975 < 0) {<= preAllocated.length - 4) { xData, 1003 < 0) {<= preAllocated.length - 4) { xData,
976 < 0) {<= preAllocated.length - 4) { s; 1004 < 0) {<= preAllocated.length - 4) { s;
977 < 0) {<= preAllocated.length - 4) { 1005 < 0) {<= preAllocated.length - 4) {
978 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(series)) { 1006 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(series)) {
979 < 0) {<= preAllocated.length - 4) { isStacked = !!series.options.stacking; 1007 < 0) {<= preAllocated.length - 4) { isStacked = !!series.options.stacking;
980 < 0) {<= preAllocated.length - 4) { xData = series.xData || series.options.xData || series.processedXData; 1008 < 0) {<= preAllocated.length - 4) { xData = series.xData || series.options.xData || series.processedXData;
981 < 0) {<= preAllocated.length - 4) { s = (isStacked ? series.data : (xData || series.options.data)).length; 1009 < 0) {<= preAllocated.length - 4) { s = (isStacked ? series.data : (xData || series.options.data)).length;
982 < 0) {<= preAllocated.length - 4) { 1010 < 0) {<= preAllocated.length - 4) {
983 < 0) {<= preAllocated.length - 4) { if (series.type === 'treemap') { 1011 < 0) {<= preAllocated.length - 4) { if (series.type === 'treemap') {
984 < 0) {<= preAllocated.length - 4) { s *= 12; 1012 < 0) {<= preAllocated.length - 4) { s *= 12;
985 < 0) {<= preAllocated.length - 4) { } else if (series.type === 'heatmap') { 1013 < 0) {<= preAllocated.length - 4) { } else if (series.type === 'heatmap') {
986 < 0) {<= preAllocated.length - 4) { s *= 6; 1014 < 0) {<= preAllocated.length - 4) { s *= 6;
987 < 0) {<= preAllocated.length - 4) { } else if (asBar[series.type]) { 1015 < 0) {<= preAllocated.length - 4) { } else if (asBar[series.type]) {
988 < 0) {<= preAllocated.length - 4) { s *= 2; 1016 < 0) {<= preAllocated.length - 4) { s *= 2;
989 < 0) {<= preAllocated.length - 4) { } 1017 < 0) {<= preAllocated.length - 4) { }
990 < 0) {<= preAllocated.length - 4) { 1018 < 0) {<= preAllocated.length - 4) {
991 < 0) {<= preAllocated.length - 4) { return s; 1019 < 0) {<= preAllocated.length - 4) { return s;
992 < 0) {<= preAllocated.length - 4) { } 1020 < 0) {<= preAllocated.length - 4) { }
993 < 0) {<= preAllocated.length - 4) { 1021 < 0) {<= preAllocated.length - 4) {
994 < 0) {<= preAllocated.length - 4) { return 0; 1022 < 0) {<= preAllocated.length - 4) { return 0;
995 < 0) {<= preAllocated.length - 4) { } 1023 < 0) {<= preAllocated.length - 4) { }
996 < 0) {<= preAllocated.length - 4) { 1024 < 0) {<= preAllocated.length - 4) {
997 < 0) {<= preAllocated.length - 4) { /* Allocate a float buffer to fit all series */ 1025 < 0) {<= preAllocated.length - 4) { /* Allocate a float buffer to fit all series */
998 < 0) {<= preAllocated.length - 4) { function allocateBuffer(chart) { 1026 < 0) {<= preAllocated.length - 4) { function allocateBuffer(chart) {
999 < 0) {<= preAllocated.length - 4) { var s = 0; 1027 < 0) {<= preAllocated.length - 4) { var s = 0;
1000 < 0) {<= preAllocated.length - 4) { 1028 < 0) {<= preAllocated.length - 4) {
1001 < 0) {<= preAllocated.length - 4) { if (!settings.usePreallocated) { 1029 < 0) {<= preAllocated.length - 4) { if (!settings.usePreallocated) {
1002 < 0) {<= preAllocated.length - 4) { return; 1030 < 0) {<= preAllocated.length - 4) { return;
1003 < 0) {<= preAllocated.length - 4) { } 1031 < 0) {<= preAllocated.length - 4) { }
1004 < 0) {<= preAllocated.length - 4) { 1032 < 0) {<= preAllocated.length - 4) {
1005 < 0) {<= preAllocated.length - 4) { each(chart.series, function(series) { 1033 < 0) {<= preAllocated.length - 4) { each(chart.series, function(series) {
1006 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(series)) { 1034 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(series)) {
1007 < 0) {<= preAllocated.length - 4) { s += seriesPointCount(series); 1035 < 0) {<= preAllocated.length - 4) { s += seriesPointCount(series);
1008 < 0) {<= preAllocated.length - 4) { } 1036 < 0) {<= preAllocated.length - 4) { }
1009 < 0) {<= preAllocated.length - 4) { }); 1037 < 0) {<= preAllocated.length - 4) { });
1010 < 0) {<= preAllocated.length - 4) { 1038 < 0) {<= preAllocated.length - 4) {
1011 < 0) {<= preAllocated.length - 4) { vbuffer.allocate(s); 1039 < 0) {<= preAllocated.length - 4) { vbuffer.allocate(s);
1012 < 0) {<= preAllocated.length - 4) { } 1040 < 0) {<= preAllocated.length - 4) { }
1013 < 0) {<= preAllocated.length - 4) { 1041 < 0) {<= preAllocated.length - 4) {
1014 < 0) {<= preAllocated.length - 4) { function allocateBufferForSingleSeries(series) { 1042 < 0) {<= preAllocated.length - 4) { function allocateBufferForSingleSeries(series) {
1015 < 0) {<= preAllocated.length - 4) { var s = 0; 1043 < 0) {<= preAllocated.length - 4) { var s = 0;
1016 < 0) {<= preAllocated.length - 4) { 1044 < 0) {<= preAllocated.length - 4) {
1017 < 0) {<= preAllocated.length - 4) { if (!settings.usePreallocated) { 1045 < 0) {<= preAllocated.length - 4) { if (!settings.usePreallocated) {
1018 < 0) {<= preAllocated.length - 4) { return; 1046 < 0) {<= preAllocated.length - 4) { return;
1019 < 0) {<= preAllocated.length - 4) { } 1047 < 0) {<= preAllocated.length - 4) { }
1020 < 0) {<= preAllocated.length - 4) { 1048 < 0) {<= preAllocated.length - 4) {
1021 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(series)) { 1049 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(series)) {
1022 < 0) {<= preAllocated.length - 4) { s = seriesPointCount(series); 1050 < 0) {<= preAllocated.length - 4) { s = seriesPointCount(series);
1023 < 0) {<= preAllocated.length - 4) { } 1051 < 0) {<= preAllocated.length - 4) { }
1024 < 0) {<= preAllocated.length - 4) { 1052 < 0) {<= preAllocated.length - 4) {
1025 < 0) {<= preAllocated.length - 4) { vbuffer.allocate(s); 1053 < 0) {<= preAllocated.length - 4) { vbuffer.allocate(s);
1026 < 0) {<= preAllocated.length - 4) { } 1054 < 0) {<= preAllocated.length - 4) { }
1027 < 0) {<= preAllocated.length - 4) { 1055 < 0) {<= preAllocated.length - 4) {
1028 < 0) {<= preAllocated.length - 4) { /* 1056 < 0) {<= preAllocated.length - 4) { /*
1029 < 0) {<= preAllocated.length - 4) { * Returns an orthographic perspective matrix 1057 < 0) {<= preAllocated.length - 4) { * Returns an orthographic perspective matrix
1030 < 0) {<= preAllocated.length - 4) { * @param {number} width - the width of the viewport in pixels 1058 < 0) {<= preAllocated.length - 4) { * @param {number} width - the width of the viewport in pixels
1031 < 0) {<= preAllocated.length - 4) { * @param {number} height - the height of the viewport in pixels 1059 < 0) {<= preAllocated.length - 4) { * @param {number} height - the height of the viewport in pixels
1032 < 0) {<= preAllocated.length - 4) { */ 1060 < 0) {<= preAllocated.length - 4) { */
1033 < 0) {<= preAllocated.length - 4) { function orthoMatrix(width, height) { 1061 < 0) {<= preAllocated.length - 4) { function orthoMatrix(width, height) {
1034 < 0) {<= preAllocated.length - 4) { var near = 0, 1062 < 0) {<= preAllocated.length - 4) { var near = 0,
1035 < 0) {<= preAllocated.length - 4) { far = 1; 1063 < 0) {<= preAllocated.length - 4) { far = 1;
1036 < 0) {<= preAllocated.length - 4) { 1064 < 0) {<= preAllocated.length - 4) {
1037 < 0) {<= preAllocated.length - 4) { return [ 1065 < 0) {<= preAllocated.length - 4) { return [
1038 < 0) {<= preAllocated.length - 4) { 2 / width, 0, 0, 0, 1066 < 0) {<= preAllocated.length - 4) { 2 / width, 0, 0, 0,
1039 < 0) {<= preAllocated.length - 4) { 0, -(2 / height), 0, 0, 1067 < 0) {<= preAllocated.length - 4) { 0, -(2 / height), 0, 0,
1040 < 0) {<= preAllocated.length - 4) { 0, 0, -2 / (far - near), 0, -1, 1, -(far + near) / (far - near), 1 1068 < 0) {<= preAllocated.length - 4) { 0, 0, -2 / (far - near), 0, -1, 1, -(far + near) / (far - near), 1
1041 < 0) {<= preAllocated.length - 4) { ]; 1069 < 0) {<= preAllocated.length - 4) { ];
1042 < 0) {<= preAllocated.length - 4) { } 1070 < 0) {<= preAllocated.length - 4) { }
1043 < 0) {<= preAllocated.length - 4) { 1071 < 0) {<= preAllocated.length - 4) {
1044 < 0) {<= preAllocated.length - 4) { /* 1072 < 0) {<= preAllocated.length - 4) { /*
1045 < 0) {<= preAllocated.length - 4) { * Clear the depth and color buffer 1073 < 0) {<= preAllocated.length - 4) { * Clear the depth and color buffer
1046 < 0) {<= preAllocated.length - 4) { */ 1074 < 0) {<= preAllocated.length - 4) { */
1047 < 0) {<= preAllocated.length - 4) { function clear() { 1075 < 0) {<= preAllocated.length - 4) { function clear() {
1048 < 0) {<= preAllocated.length - 4) { gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); 1076 < 0) {<= preAllocated.length - 4) { gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
1049 < 0) {<= preAllocated.length - 4) { } 1077 < 0) {<= preAllocated.length - 4) { }
1050 < 0) {<= preAllocated.length - 4) { 1078 < 0) {<= preAllocated.length - 4) {
1051 < 0) {<= preAllocated.length - 4) { /* 1079 < 0) {<= preAllocated.length - 4) { /*
1052 < 0) {<= preAllocated.length - 4) { * Get the WebGL context 1080 < 0) {<= preAllocated.length - 4) { * Get the WebGL context
1053 < 0) {<= preAllocated.length - 4) { * @returns {WebGLContext} - the context 1081 < 0) {<= preAllocated.length - 4) { * @returns {WebGLContext} - the context
1054 < 0) {<= preAllocated.length - 4) { */ 1082 < 0) {<= preAllocated.length - 4) { */
1055 < 0) {<= preAllocated.length - 4) { function getGL() { 1083 < 0) {<= preAllocated.length - 4) { function getGL() {
1056 < 0) {<= preAllocated.length - 4) { return gl; 1084 < 0) {<= preAllocated.length - 4) { return gl;
1057 < 0) {<= preAllocated.length - 4) { } 1085 < 0) {<= preAllocated.length - 4) { }
1058 < 0) {<= preAllocated.length - 4) { 1086 < 0) {<= preAllocated.length - 4) {
1059 < 0) {<= preAllocated.length - 4) { /* 1087 < 0) {<= preAllocated.length - 4) { /*
1060 < 0) {<= preAllocated.length - 4) { * Push data for a single series 1088 < 0) {<= preAllocated.length - 4) { * Push data for a single series
1061 < 0) {<= preAllocated.length - 4) { * This calculates additional vertices and transforms the data to be 1089 < 0) {<= preAllocated.length - 4) { * This calculates additional vertices and transforms the data to be
1062 < 0) {<= preAllocated.length - 4) { * aligned correctly in memory 1090 < 0) {<= preAllocated.length - 4) { * aligned correctly in memory
1063 < 0) {<= preAllocated.length - 4) { */ 1091 < 0) {<= preAllocated.length - 4) { */
1064 < 0) {<= preAllocated.length - 4) { function pushSeriesData(series, inst) { 1092 < 0) {<= preAllocated.length - 4) { function pushSeriesData(series, inst) {
1065 < 0) {<= preAllocated.length - 4) { var isRange = series.pointArrayMap && 1093 < 0) {<= preAllocated.length - 4) { var isRange = series.pointArrayMap &&
1066 < 0) {<= preAllocated.length - 4) { series.pointArrayMap.join(',') === 'low,high', 1094 < 0) {<= preAllocated.length - 4) { series.pointArrayMap.join(',') === 'low,high',
1067 < 0) {<= preAllocated.length - 4) { chart = series.chart, 1095 < 0) {<= preAllocated.length - 4) { chart = series.chart,
1068 < 0) {<= preAllocated.length - 4) { options = series.options, 1096 < 0) {<= preAllocated.length - 4) { options = series.options,
1069 < 0) {<= preAllocated.length - 4) { isStacked = !!options.stacking, 1097 < 0) {<= preAllocated.length - 4) { isStacked = !!options.stacking,
1070 < 0) {<= preAllocated.length - 4) { rawData = options.data, 1098 < 0) {<= preAllocated.length - 4) { rawData = options.data,
1071 < 0) {<= preAllocated.length - 4) { xExtremes = series.xAxis.getExtremes(), 1099 < 0) {<= preAllocated.length - 4) { xExtremes = series.xAxis.getExtremes(),
1072 < 0) {<= preAllocated.length - 4) { xMin = xExtremes.min, 1100 < 0) {<= preAllocated.length - 4) { xMin = xExtremes.min,
1073 < 0) {<= preAllocated.length - 4) { xMax = xExtremes.max, 1101 < 0) {<= preAllocated.length - 4) { xMax = xExtremes.max,
1074 < 0) {<= preAllocated.length - 4) { yExtremes = series.yAxis.getExtremes(), 1102 < 0) {<= preAllocated.length - 4) { yExtremes = series.yAxis.getExtremes(),
1075 < 0) {<= preAllocated.length - 4) { yMin = yExtremes.min, 1103 < 0) {<= preAllocated.length - 4) { yMin = yExtremes.min,
1076 < 0) {<= preAllocated.length - 4) { yMax = yExtremes.max, 1104 < 0) {<= preAllocated.length - 4) { yMax = yExtremes.max,
1077 < 0) {<= preAllocated.length - 4) { xData = series.xData || options.xData || series.processedXData, 1105 < 0) {<= preAllocated.length - 4) { xData = series.xData || options.xData || series.processedXData,
1078 < 0) {<= preAllocated.length - 4) { yData = series.yData || options.yData || series.processedYData, 1106 < 0) {<= preAllocated.length - 4) { yData = series.yData || options.yData || series.processedYData,
1079 < 0) {<= preAllocated.length - 4) { zData = series.zData || options.zData || series.processedZData, 1107 < 0) {<= preAllocated.length - 4) { zData = series.zData || options.zData || series.processedZData,
1080 < 0) {<= preAllocated.length - 4) { yAxis = series.yAxis, 1108 < 0) {<= preAllocated.length - 4) { yAxis = series.yAxis,
1081 < 0) {<= preAllocated.length - 4) { xAxis = series.xAxis, 1109 < 0) {<= preAllocated.length - 4) { xAxis = series.xAxis,
1082 < 0) {<= preAllocated.length - 4) { useRaw = !xData || xData.length === 0, 1110 < 0) {<= preAllocated.length - 4) { useRaw = !xData || xData.length === 0,
1083 < 0) {<= preAllocated.length - 4) { // threshold = options.threshold, 1111 < 0) {<= preAllocated.length - 4) { // threshold = options.threshold,
1084 < 0) {<= preAllocated.length - 4) { // yBottom = chart.yAxis[0].getThreshold(threshold), 1112 < 0) {<= preAllocated.length - 4) { // yBottom = chart.yAxis[0].getThreshold(threshold),
1085 < 0) {<= preAllocated.length - 4) { // hasThreshold = isNumber(threshold), 1113 < 0) {<= preAllocated.length - 4) { // hasThreshold = isNumber(threshold),
1086 < 0) {<= preAllocated.length - 4) { // colorByPoint = series.options.colorByPoint, 1114 < 0) {<= preAllocated.length - 4) { // colorByPoint = series.options.colorByPoint,
1087 < 0) {<= preAllocated.length - 4) { // This is required for color by point, so make sure this is 1115 < 0) {<= preAllocated.length - 4) { // This is required for color by point, so make sure this is
1088 < 0) {<= preAllocated.length - 4) { // uncommented if enabling that 1116 < 0) {<= preAllocated.length - 4) { // uncommented if enabling that
1089 < 0) {<= preAllocated.length - 4) { // colorIndex = 0, 1117 < 0) {<= preAllocated.length - 4) { // colorIndex = 0,
1090 < 0) {<= preAllocated.length - 4) { // Required for color axis support 1118 < 0) {<= preAllocated.length - 4) { // Required for color axis support
1091 < 0) {<= preAllocated.length - 4) { // caxis, 1119 < 0) {<= preAllocated.length - 4) { // caxis,
1092 < 0) {<= preAllocated.length - 4) { // connectNulls = options.connectNulls, 1120 < 0) {<= preAllocated.length - 4) { // connectNulls = options.connectNulls,
1093 < 0) {<= preAllocated.length - 4) { // For some reason eslint doesn't pick up that this is actually used 1121 < 0) {<= preAllocated.length - 4) { // For some reason eslint doesn't pick up that this is actually used
1094 < 0) {<= preAllocated.length - 4) { maxVal, //eslint-disable-line no-unused-vars 1122 < 0) {<= preAllocated.length - 4) { maxVal, //eslint-disable-line no-unused-vars
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) { };
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;
1104 < 0) {<= preAllocated.length - 4) { } 1140 < 0) {<= preAllocated.length - 4) { }
1105 < 0) {<= preAllocated.length - 4) { 1141 < 0) {<= preAllocated.length - 4) {
1106 < 0) {<= preAllocated.length - 4) { series.closestPointRangePx = Number.MAX_VALUE; 1142 < 0) {<= preAllocated.length - 4) { series.closestPointRangePx = Number.MAX_VALUE;
1107 < 0) {<= preAllocated.length - 4) { 1143 < 0) {<= preAllocated.length - 4) {
1108 < 0) {<= preAllocated.length - 4) { // Push color to color buffer - need to do this per. vertex 1144 < 0) {<= preAllocated.length - 4) { // Push color to color buffer - need to do this per. vertex
1109 < 0) {<= preAllocated.length - 4) { function pushColor(color) { 1145 < 0) {<= preAllocated.length - 4) { function pushColor(color) {
1110 < 0) {<= preAllocated.length - 4) { if (color) { 1146 < 0) {<= preAllocated.length - 4) { if (color) {
1111 < 0) {<= preAllocated.length - 4) { inst.colorData.push(color[0]); 1147 < 0) {<= preAllocated.length - 4) { inst.colorData.push(color[0]);
1112 < 0) {<= preAllocated.length - 4) { inst.colorData.push(color[1]); 1148 < 0) {<= preAllocated.length - 4) { inst.colorData.push(color[1]);
1113 < 0) {<= preAllocated.length - 4) { inst.colorData.push(color[2]); 1149 < 0) {<= preAllocated.length - 4) { inst.colorData.push(color[2]);
1114 < 0) {<= preAllocated.length - 4) { inst.colorData.push(color[3]); 1150 < 0) {<= preAllocated.length - 4) { inst.colorData.push(color[3]);
1115 < 0) {<= preAllocated.length - 4) { } 1151 < 0) {<= preAllocated.length - 4) { }
1116 < 0) {<= preAllocated.length - 4) { } 1152 < 0) {<= preAllocated.length - 4) { }
1117 < 0) {<= preAllocated.length - 4) { 1153 < 0) {<= preAllocated.length - 4) {
1118 < 0) {<= preAllocated.length - 4) { //Push a vertice to the data buffer 1154 < 0) {<= preAllocated.length - 4) { //Push a vertice to the data buffer
1119 < 0) {<= preAllocated.length - 4) { function vertice(x, y, checkTreshold, pointSize, color) { 1155 < 0) {<= preAllocated.length - 4) { function vertice(x, y, checkTreshold, pointSize, color) {
1120 < 0) {<= preAllocated.length - 4) { pushColor(color); 1156 < 0) {<= preAllocated.length - 4) { pushColor(color);
1121 < 0) {<= preAllocated.length - 4) { if (settings.usePreallocated) { 1157 < 0) {<= preAllocated.length - 4) { if (settings.usePreallocated) {
1122 < 0) {<= preAllocated.length - 4) { vbuffer.push(x, y, checkTreshold ? 1 : 0, pointSize || 1); 1158 < 0) {<= preAllocated.length - 4) { vbuffer.push(x, y, checkTreshold ? 1 : 0, pointSize || 1);
1123 < 0) {<= preAllocated.length - 4) { } else { 1159 < 0) {<= preAllocated.length - 4) { } else {
1124 < 0) {<= preAllocated.length - 4) { data.push(x); 1160 < 0) {<= preAllocated.length - 4) { data.push(x);
1125 < 0) {<= preAllocated.length - 4) { data.push(y); 1161 < 0) {<= preAllocated.length - 4) { data.push(y);
1126 < 0) {<= preAllocated.length - 4) { data.push(checkTreshold ? 1 : 0); 1162 < 0) {<= preAllocated.length - 4) { data.push(checkTreshold ? 1 : 0);
1127 < 0) {<= preAllocated.length - 4) { data.push(pointSize || 1); 1163 < 0) {<= preAllocated.length - 4) { data.push(pointSize || 1);
1128 < 0) {<= preAllocated.length - 4) { } 1164 < 0) {<= preAllocated.length - 4) { }
1129 < 0) {<= preAllocated.length - 4) { } 1165 < 0) {<= preAllocated.length - 4) { }
1130 < 0) {<= preAllocated.length - 4) { 1166 < 0) {<= preAllocated.length - 4) {
1131 < 0) {<= preAllocated.length - 4) { // Push a rectangle to the data buffer 1167 < 0) {<= preAllocated.length - 4) { // Push a rectangle to the data buffer
1132 < 0) {<= preAllocated.length - 4) { function pushRect(x, y, w, h, color) { 1168 < 0) {<= preAllocated.length - 4) { function pushRect(x, y, w, h, color) {
1133 < 0) {<= preAllocated.length - 4) { pushColor(color); 1169 < 0) {<= preAllocated.length - 4) { pushColor(color);
1134 < 0) {<= preAllocated.length - 4) { vertice(x + w, y); 1170 < 0) {<= preAllocated.length - 4) { vertice(x + w, y);
1135 < 0) {<= preAllocated.length - 4) { pushColor(color); 1171 < 0) {<= preAllocated.length - 4) { pushColor(color);
1136 < 0) {<= preAllocated.length - 4) { vertice(x, y); 1172 < 0) {<= preAllocated.length - 4) { vertice(x, y);
1137 < 0) {<= preAllocated.length - 4) { pushColor(color); 1173 < 0) {<= preAllocated.length - 4) { pushColor(color);
1138 < 0) {<= preAllocated.length - 4) { vertice(x, y + h); 1174 < 0) {<= preAllocated.length - 4) { vertice(x, y + h);
1139 < 0) {<= preAllocated.length - 4) { 1175 < 0) {<= preAllocated.length - 4) {
1140 < 0) {<= preAllocated.length - 4) { pushColor(color); 1176 < 0) {<= preAllocated.length - 4) { pushColor(color);
1141 < 0) {<= preAllocated.length - 4) { vertice(x, y + h); 1177 < 0) {<= preAllocated.length - 4) { vertice(x, y + h);
1142 < 0) {<= preAllocated.length - 4) { pushColor(color); 1178 < 0) {<= preAllocated.length - 4) { pushColor(color);
1143 < 0) {<= preAllocated.length - 4) { vertice(x + w, y + h); 1179 < 0) {<= preAllocated.length - 4) { vertice(x + w, y + h);
1144 < 0) {<= preAllocated.length - 4) { pushColor(color); 1180 < 0) {<= preAllocated.length - 4) { pushColor(color);
1145 < 0) {<= preAllocated.length - 4) { vertice(x + w, y); 1181 < 0) {<= preAllocated.length - 4) { vertice(x + w, y);
1146 < 0) {<= preAllocated.length - 4) { } 1182 < 0) {<= preAllocated.length - 4) { }
1147 < 0) {<= preAllocated.length - 4) { 1183 < 0) {<= preAllocated.length - 4) {
1148 < 0) {<= preAllocated.length - 4) { // Special case for point shapes 1184 < 0) {<= preAllocated.length - 4) { // Special case for point shapes
1149 < 0) {<= preAllocated.length - 4) { if (points && points.length > 0) { 1185 < 0) {<= preAllocated.length - 4) { if (points && points.length > 0) {
1150 < 0) {<= preAllocated.length - 4) { 1186 < 0) {<= preAllocated.length - 4) {
1151 < 0) {<= preAllocated.length - 4) { // If we're doing points, we assume that the points are already 1187 < 0) {<= preAllocated.length - 4) { // If we're doing points, we assume that the points are already
1152 < 0) {<= preAllocated.length - 4) { // translated, so we skip the shader translation. 1188 < 0) {<= preAllocated.length - 4) { // translated, so we skip the shader translation.
1153 < 0) {<= preAllocated.length - 4) { inst.skipTranslation = true; 1189 < 0) {<= preAllocated.length - 4) { inst.skipTranslation = true;
1154 < 0) {<= preAllocated.length - 4) { // Force triangle draw mode 1190 < 0) {<= preAllocated.length - 4) { // Force triangle draw mode
1155 < 0) {<= preAllocated.length - 4) { inst.drawMode = 'triangles'; 1191 < 0) {<= preAllocated.length - 4) { inst.drawMode = 'triangles';
1156 < 0) {<= preAllocated.length - 4) { 1192 < 0) {<= preAllocated.length - 4) {
1157 < 0) {<= preAllocated.length - 4) { // We don't have a z component in the shader, so we need to sort. 1193 < 0) {<= preAllocated.length - 4) { // We don't have a z component in the shader, so we need to sort.
1158 < 0) {<= preAllocated.length - 4) { if (points[0].node && points[0].node.levelDynamic) { 1194 < 0) {<= preAllocated.length - 4) { if (points[0].node && points[0].node.levelDynamic) {
1159 < 0) {<= preAllocated.length - 4) { points.sort(function(a, b) { 1195 < 0) {<= preAllocated.length - 4) { points.sort(function(a, b) {
1160 < 0) {<= preAllocated.length - 4) { if (a.node) { 1196 < 0) {<= preAllocated.length - 4) { if (a.node) {
1161 < 0) {<= preAllocated.length - 4) { if (a.node.levelDynamic > b.node.levelDynamic) { 1197 < 0) {<= preAllocated.length - 4) { if (a.node.levelDynamic > b.node.levelDynamic) {
1162 < 0) {<= preAllocated.length - 4) { return 1; 1198 < 0) {<= preAllocated.length - 4) { return 1;
1163 < 0) {<= preAllocated.length - 4) { } else if (a.node.levelDynamic < b.node.levelDynamic) { 1199 < 0) {<= preAllocated.length - 4) { } else if (a.node.levelDynamic < b.node.levelDynamic) {
1164 < 0) {<= preAllocated.length - 4) { return -1; 1200 < 0) {<= preAllocated.length - 4) { return -1;
1165 < 0) {<= preAllocated.length - 4) { } 1201 < 0) {<= preAllocated.length - 4) { }
1166 < 0) {<= preAllocated.length - 4) { } 1202 < 0) {<= preAllocated.length - 4) { }
1167 < 0) {<= preAllocated.length - 4) { return 0; 1203 < 0) {<= preAllocated.length - 4) { return 0;
1168 < 0) {<= preAllocated.length - 4) { }); 1204 < 0) {<= preAllocated.length - 4) { });
1169 < 0) {<= preAllocated.length - 4) { } 1205 < 0) {<= preAllocated.length - 4) { }
1170 < 0) {<= preAllocated.length - 4) { 1206 < 0) {<= preAllocated.length - 4) {
1171 < 0) {<= preAllocated.length - 4) { each(points, function(point) { 1207 < 0) {<= preAllocated.length - 4) { each(points, function(point) {
1172 < 0) {<= preAllocated.length - 4) { var plotY = point.plotY, 1208 < 0) {<= preAllocated.length - 4) { var plotY = point.plotY,
1173 < 0) {<= preAllocated.length - 4) { shapeArgs, 1209 < 0) {<= preAllocated.length - 4) { shapeArgs,
1174 < 0) {<= preAllocated.length - 4) { swidth, 1210 < 0) {<= preAllocated.length - 4) { swidth,
1175 < 0) {<= preAllocated.length - 4) { pointAttr; 1211 < 0) {<= preAllocated.length - 4) { pointAttr;
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;
1179 < 0) {<= preAllocated.length - 4) { pointAttr = (point.pointAttr && point.pointAttr['']) || -  
-   1215 < 0) {<= preAllocated.length - 4) {
-   1216 < 0) {<= preAllocated.length - 4) {
1180 < 0) {<= preAllocated.length - 4) { point.series.pointAttribs(point); 1217 < 0) {<= preAllocated.length - 4) { pointAttr = point.series.colorAttribs(point);
-   1218 < 0) {<= preAllocated.length - 4) {
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;
1185 < 0) {<= preAllocated.length - 4) { color[0] /= 255.0; 1223 < 0) {<= preAllocated.length - 4) { color[0] /= 255.0;
1186 < 0) {<= preAllocated.length - 4) { color[1] /= 255.0; 1224 < 0) {<= preAllocated.length - 4) { color[1] /= 255.0;
1187 < 0) {<= preAllocated.length - 4) { color[2] /= 255.0; 1225 < 0) {<= preAllocated.length - 4) { color[2] /= 255.0;
1188 < 0) {<= preAllocated.length - 4) { 1226 < 0) {<= preAllocated.length - 4) {
1189 < 0) {<= preAllocated.length - 4) { // So there are two ways of doing this. Either we can 1227 < 0) {<= preAllocated.length - 4) { // So there are two ways of doing this. Either we can
1190 < 0) {<= preAllocated.length - 4) { // create a rectangle of two triangles, or we can do a 1228 < 0) {<= preAllocated.length - 4) { // create a rectangle of two triangles, or we can do a
1191 < 0) {<= preAllocated.length - 4) { // point and use point size. Latter is faster, but 1229 < 0) {<= preAllocated.length - 4) { // point and use point size. Latter is faster, but
1192 < 0) {<= preAllocated.length - 4) { // only supports squares. So we're doing triangles. 1230 < 0) {<= preAllocated.length - 4) { // only supports squares. So we're doing triangles.
1193 < 0) {<= preAllocated.length - 4) { // We could also use one color per. vertice to get 1231 < 0) {<= preAllocated.length - 4) { // We could also use one color per. vertice to get
1194 < 0) {<= preAllocated.length - 4) { // better color interpolation. 1232 < 0) {<= preAllocated.length - 4) { // better color interpolation.
1195 < 0) {<= preAllocated.length - 4) { 1233 < 0) {<= preAllocated.length - 4) {
1196 < 0) {<= preAllocated.length - 4) { // If there's stroking, we do an additional rect 1234 < 0) {<= preAllocated.length - 4) { // If there's stroking, we do an additional rect
1197 < 0) {<= preAllocated.length - 4) { //if (pointAttr.stroke !== 'none' && swidth && swidth > 0) { 1235 < 0) {<= preAllocated.length - 4) { //if (pointAttr.stroke !== 'none' && swidth && swidth > 0) {
1198 < 0) {<= preAllocated.length - 4) { if (series.type === 'treemap') { 1236 < 0) {<= preAllocated.length - 4) { if (series.type === 'treemap') {
1199 < 0) {<= preAllocated.length - 4) { swidth = swidth || 1; 1237 < 0) {<= preAllocated.length - 4) { swidth = swidth || 1;
1200 < 0) {<= preAllocated.length - 4) { scolor = H.color(pointAttr.stroke).rgba; 1238 < 0) {<= preAllocated.length - 4) { scolor = H.color(pointAttr.stroke).rgba;
1201 < 0) {<= preAllocated.length - 4) { 1239 < 0) {<= preAllocated.length - 4) {
1202 < 0) {<= preAllocated.length - 4) { scolor[0] /= 255.0; 1240 < 0) {<= preAllocated.length - 4) { scolor[0] /= 255.0;
1203 < 0) {<= preAllocated.length - 4) { scolor[1] /= 255.0; 1241 < 0) {<= preAllocated.length - 4) { scolor[1] /= 255.0;
1204 < 0) {<= preAllocated.length - 4) { scolor[2] /= 255.0; 1242 < 0) {<= preAllocated.length - 4) { scolor[2] /= 255.0;
1205 < 0) {<= preAllocated.length - 4) { 1243 < 0) {<= preAllocated.length - 4) {
1206 < 0) {<= preAllocated.length - 4) { pushRect( 1244 < 0) {<= preAllocated.length - 4) { pushRect(
1207 < 0) {<= preAllocated.length - 4) { shapeArgs.x, 1245 < 0) {<= preAllocated.length - 4) { shapeArgs.x,
1208 < 0) {<= preAllocated.length - 4) { shapeArgs.y, 1246 < 0) {<= preAllocated.length - 4) { shapeArgs.y,
1209 < 0) {<= preAllocated.length - 4) { shapeArgs.width, 1247 < 0) {<= preAllocated.length - 4) { shapeArgs.width,
1210 < 0) {<= preAllocated.length - 4) { shapeArgs.height, 1248 < 0) {<= preAllocated.length - 4) { shapeArgs.height,
1211 < 0) {<= preAllocated.length - 4) { scolor 1249 < 0) {<= preAllocated.length - 4) { scolor
1212 < 0) {<= preAllocated.length - 4) { ); 1250 < 0) {<= preAllocated.length - 4) { );
1213 < 0) {<= preAllocated.length - 4) { 1251 < 0) {<= preAllocated.length - 4) {
1214 < 0) {<= preAllocated.length - 4) { swidth /= 2; 1252 < 0) {<= preAllocated.length - 4) { swidth /= 2;
1215 < 0) {<= preAllocated.length - 4) { } 1253 < 0) {<= preAllocated.length - 4) { }
1216 < 0) {<= preAllocated.length - 4) { // } else { 1254 < 0) {<= preAllocated.length - 4) { // } else {
1217 < 0) {<= preAllocated.length - 4) { // swidth = 0; 1255 < 0) {<= preAllocated.length - 4) { // swidth = 0;
1218 < 0) {<= preAllocated.length - 4) { // } 1256 < 0) {<= preAllocated.length - 4) { // }
1219 < 0) {<= preAllocated.length - 4) { 1257 < 0) {<= preAllocated.length - 4) {
1220 < 0) {<= preAllocated.length - 4) { pushRect( 1258 < 0) {<= preAllocated.length - 4) { pushRect(
1221 < 0) {<= preAllocated.length - 4) { shapeArgs.x + swidth, 1259 < 0) {<= preAllocated.length - 4) { shapeArgs.x + swidth,
1222 < 0) {<= preAllocated.length - 4) { shapeArgs.y + swidth, 1260 < 0) {<= preAllocated.length - 4) { shapeArgs.y + swidth,
1223 < 0) {<= preAllocated.length - 4) { shapeArgs.width - (swidth * 2), 1261 < 0) {<= preAllocated.length - 4) { shapeArgs.width - (swidth * 2),
1224 < 0) {<= preAllocated.length - 4) { shapeArgs.height - (swidth * 2), 1262 < 0) {<= preAllocated.length - 4) { shapeArgs.height - (swidth * 2),
1225 < 0) {<= preAllocated.length - 4) { color 1263 < 0) {<= preAllocated.length - 4) { color
1226 < 0) {<= preAllocated.length - 4) { ); 1264 < 0) {<= preAllocated.length - 4) { );
1227 < 0) {<= preAllocated.length - 4) { } 1265 < 0) {<= preAllocated.length - 4) { }
1228 < 0) {<= preAllocated.length - 4) { }); 1266 < 0) {<= preAllocated.length - 4) { });
1229 < 0) {<= preAllocated.length - 4) { 1267 < 0) {<= preAllocated.length - 4) {
1230 < 0) {<= preAllocated.length - 4) { return; 1268 < 0) {<= preAllocated.length - 4) { return;
1231 < 0) {<= preAllocated.length - 4) { } 1269 < 0) {<= preAllocated.length - 4) { }
1232 < 0) {<= preAllocated.length - 4) { 1270 < 0) {<= preAllocated.length - 4) {
1233 < 0) {<= preAllocated.length - 4) { // Extract color axis 1271 < 0) {<= preAllocated.length - 4) { // Extract color axis
1234 < 0) {<= preAllocated.length - 4) { // each(chart.axes || [], function (a) { 1272 < 0) {<= preAllocated.length - 4) { // each(chart.axes || [], function (a) {
1235 < 0) {<= preAllocated.length - 4) { // if (H.ColorAxis && a instanceof H.ColorAxis) { 1273 < 0) {<= preAllocated.length - 4) { // if (H.ColorAxis && a instanceof H.ColorAxis) {
1236 < 0) {<= preAllocated.length - 4) { // caxis = a; 1274 < 0) {<= preAllocated.length - 4) { // caxis = a;
1237 < 0) {<= preAllocated.length - 4) { // } 1275 < 0) {<= preAllocated.length - 4) { // }
1238 < 0) {<= preAllocated.length - 4) { // }); 1276 < 0) {<= preAllocated.length - 4) { // });
1239 < 0) {<= preAllocated.length - 4) { 1277 < 0) {<= preAllocated.length - 4) {
1240 < 0) {<= preAllocated.length - 4) { each(sdata, function(d, i) { 1278 < 0) {<= preAllocated.length - 4) { each(sdata, function(d, i) {
1241 < 0) {<= preAllocated.length - 4) { var x, 1279 < 0) {<= preAllocated.length - 4) { var x,
1242 < 0) {<= preAllocated.length - 4) { y, 1280 < 0) {<= preAllocated.length - 4) { y,
1243 < 0) {<= preAllocated.length - 4) { z, 1281 < 0) {<= preAllocated.length - 4) { z,
1244 < 0) {<= preAllocated.length - 4) { px = false, 1282 < 0) {<= preAllocated.length - 4) { px = false,
1245 < 0) {<= preAllocated.length - 4) { nx = false, 1283 < 0) {<= preAllocated.length - 4) { nx = false,
1246 < 0) {<= preAllocated.length - 4) { // This is in fact used. 1284 < 0) {<= preAllocated.length - 4) { // This is in fact used.
1247 < 0) {<= preAllocated.length - 4) { low, //eslint-disable-line no-unused-vars 1285 < 0) {<= preAllocated.length - 4) { low, //eslint-disable-line no-unused-vars
1248 < 0) {<= preAllocated.length - 4) { chartDestroyed = typeof chart.index === 'undefined', 1286 < 0) {<= preAllocated.length - 4) { chartDestroyed = typeof chart.index === 'undefined',
1249 < 0) {<= preAllocated.length - 4) { nextInside = false, 1287 < 0) {<= preAllocated.length - 4) { nextInside = false,
1250 < 0) {<= preAllocated.length - 4) { prevInside = false, 1288 < 0) {<= preAllocated.length - 4) { prevInside = false,
1251 < 0) {<= preAllocated.length - 4) { pcolor = false, 1289 < 0) {<= preAllocated.length - 4) { pcolor = false,
1252 < 0) {<= preAllocated.length - 4) { drawAsBar = asBar[series.type], 1290 < 0) {<= preAllocated.length - 4) { drawAsBar = asBar[series.type],
1253 < 0) {<= preAllocated.length - 4) { isXInside = false, 1291 < 0) {<= preAllocated.length - 4) { isXInside = false,
1254 < 0) {<= preAllocated.length - 4) { isYInside = true; 1292 < 0) {<= preAllocated.length - 4) { isYInside = true;
1255 < 0) {<= preAllocated.length - 4) { 1293 < 0) {<= preAllocated.length - 4) {
1256 < 0) {<= preAllocated.length - 4) { if (chartDestroyed) { 1294 < 0) {<= preAllocated.length - 4) { if (chartDestroyed) {
1257 < 0) {<= preAllocated.length - 4) { return false; 1295 < 0) {<= preAllocated.length - 4) { return false;
1258 < 0) {<= preAllocated.length - 4) { } 1296 < 0) {<= preAllocated.length - 4) { }
1259 < 0) {<= preAllocated.length - 4) { 1297 < 0) {<= preAllocated.length - 4) {
1260 < 0) {<= preAllocated.length - 4) { // Uncomment this to enable color by point. 1298 < 0) {<= preAllocated.length - 4) { // Uncomment this to enable color by point.
1261 < 0) {<= preAllocated.length - 4) { // This currently left disabled as the charts look really ugly 1299 < 0) {<= preAllocated.length - 4) { // This currently left disabled as the charts look really ugly
1262 < 0) {<= preAllocated.length - 4) { // when enabled and there's a lot of points. 1300 < 0) {<= preAllocated.length - 4) { // when enabled and there's a lot of points.
1263 < 0) {<= preAllocated.length - 4) { // Leaving in for the future (tm). 1301 < 0) {<= preAllocated.length - 4) { // Leaving in for the future (tm).
1264 < 0) {<= preAllocated.length - 4) { // if (colorByPoint) { 1302 < 0) {<= preAllocated.length - 4) { // if (colorByPoint) {
1265 < 0) {<= preAllocated.length - 4) { // colorIndex = ++colorIndex % series.chart.options.colors.length; 1303 < 0) {<= preAllocated.length - 4) { // colorIndex = ++colorIndex % series.chart.options.colors.length;
1266 < 0) {<= preAllocated.length - 4) { // pcolor = toRGBAFast(series.chart.options.colors[colorIndex]); 1304 < 0) {<= preAllocated.length - 4) { // pcolor = toRGBAFast(series.chart.options.colors[colorIndex]);
1267 < 0) {<= preAllocated.length - 4) { // pcolor[0] /= 255.0; 1305 < 0) {<= preAllocated.length - 4) { // pcolor[0] /= 255.0;
1268 < 0) {<= preAllocated.length - 4) { // pcolor[1] /= 255.0; 1306 < 0) {<= preAllocated.length - 4) { // pcolor[1] /= 255.0;
1269 < 0) {<= preAllocated.length - 4) { // pcolor[2] /= 255.0; 1307 < 0) {<= preAllocated.length - 4) { // pcolor[2] /= 255.0;
1270 < 0) {<= preAllocated.length - 4) { // } 1308 < 0) {<= preAllocated.length - 4) { // }
1271 < 0) {<= preAllocated.length - 4) { 1309 < 0) {<= preAllocated.length - 4) {
1272 < 0) {<= preAllocated.length - 4) { if (useRaw) { 1310 < 0) {<= preAllocated.length - 4) { if (useRaw) {
1273 < 0) {<= preAllocated.length - 4) { x = d[0]; 1311 < 0) {<= preAllocated.length - 4) { x = d[0];
1274 < 0) {<= preAllocated.length - 4) { y = d[1]; 1312 < 0) {<= preAllocated.length - 4) { y = d[1];
1275 < 0) {<= preAllocated.length - 4) { 1313 < 0) {<= preAllocated.length - 4) {
1276 < 0) {<= preAllocated.length - 4) { if (sdata[i + 1]) { 1314 < 0) {<= preAllocated.length - 4) { if (sdata[i + 1]) {
1277 < 0) {<= preAllocated.length - 4) { nx = sdata[i + 1][0]; 1315 < 0) {<= preAllocated.length - 4) { nx = sdata[i + 1][0];
1278 < 0) {<= preAllocated.length - 4) { } 1316 < 0) {<= preAllocated.length - 4) { }
1279 < 0) {<= preAllocated.length - 4) { 1317 < 0) {<= preAllocated.length - 4) {
1280 < 0) {<= preAllocated.length - 4) { if (sdata[i - 1]) { 1318 < 0) {<= preAllocated.length - 4) { if (sdata[i - 1]) {
1281 < 0) {<= preAllocated.length - 4) { px = sdata[i - 1][0]; 1319 < 0) {<= preAllocated.length - 4) { px = sdata[i - 1][0];
1282 < 0) {<= preAllocated.length - 4) { } 1320 < 0) {<= preAllocated.length - 4) { }
1283 < 0) {<= preAllocated.length - 4) { 1321 < 0) {<= preAllocated.length - 4) {
1284 < 0) {<= preAllocated.length - 4) { if (d.length >= 3) { 1322 < 0) {<= preAllocated.length - 4) { if (d.length >= 3) {
1285 < 0) {<= preAllocated.length - 4) { z = d[2]; 1323 < 0) {<= preAllocated.length - 4) { z = d[2];
1286 < 0) {<= preAllocated.length - 4) { 1324 < 0) {<= preAllocated.length - 4) {
1287 < 0) {<= preAllocated.length - 4) { if (d[2] > inst.zMax) { 1325 < 0) {<= preAllocated.length - 4) { if (d[2] > inst.zMax) {
1288 < 0) {<= preAllocated.length - 4) { inst.zMax = d[2]; 1326 < 0) {<= preAllocated.length - 4) { inst.zMax = d[2];
1289 < 0) {<= preAllocated.length - 4) { } 1327 < 0) {<= preAllocated.length - 4) { }
1290 < 0) {<= preAllocated.length - 4) { 1328 < 0) {<= preAllocated.length - 4) {
1291 < 0) {<= preAllocated.length - 4) { if (d[2] < inst.zMin) { 1329 < 0) {<= preAllocated.length - 4) { if (d[2] < inst.zMin) {
1292 < 0) {<= preAllocated.length - 4) { inst.zMin = d[2]; 1330 < 0) {<= preAllocated.length - 4) { inst.zMin = d[2];
1293 < 0) {<= preAllocated.length - 4) { } 1331 < 0) {<= preAllocated.length - 4) { }
1294 < 0) {<= preAllocated.length - 4) { } 1332 < 0) {<= preAllocated.length - 4) { }
1295 < 0) {<= preAllocated.length - 4) { 1333 < 0) {<= preAllocated.length - 4) {
1296 < 0) {<= preAllocated.length - 4) { } else { 1334 < 0) {<= preAllocated.length - 4) { } else {
1297 < 0) {<= preAllocated.length - 4) { x = d; 1335 < 0) {<= preAllocated.length - 4) { x = d;
1298 < 0) {<= preAllocated.length - 4) { y = yData[i]; 1336 < 0) {<= preAllocated.length - 4) { y = yData[i];
1299 < 0) {<= preAllocated.length - 4) { 1337 < 0) {<= preAllocated.length - 4) {
1300 < 0) {<= preAllocated.length - 4) { if (sdata[i + 1]) { 1338 < 0) {<= preAllocated.length - 4) { if (sdata[i + 1]) {
1301 < 0) {<= preAllocated.length - 4) { nx = sdata[i + 1]; 1339 < 0) {<= preAllocated.length - 4) { nx = sdata[i + 1];
1302 < 0) {<= preAllocated.length - 4) { } 1340 < 0) {<= preAllocated.length - 4) { }
1303 < 0) {<= preAllocated.length - 4) { 1341 < 0) {<= preAllocated.length - 4) {
1304 < 0) {<= preAllocated.length - 4) { if (sdata[i - 1]) { 1342 < 0) {<= preAllocated.length - 4) { if (sdata[i - 1]) {
1305 < 0) {<= preAllocated.length - 4) { px = sdata[i - 1]; 1343 < 0) {<= preAllocated.length - 4) { px = sdata[i - 1];
1306 < 0) {<= preAllocated.length - 4) { } 1344 < 0) {<= preAllocated.length - 4) { }
1307 < 0) {<= preAllocated.length - 4) { 1345 < 0) {<= preAllocated.length - 4) {
1308 < 0) {<= preAllocated.length - 4) { if (zData && zData.length) { 1346 < 0) {<= preAllocated.length - 4) { if (zData && zData.length) {
1309 < 0) {<= preAllocated.length - 4) { z = zData[i]; 1347 < 0) {<= preAllocated.length - 4) { z = zData[i];
1310 < 0) {<= preAllocated.length - 4) { 1348 < 0) {<= preAllocated.length - 4) {
1311 < 0) {<= preAllocated.length - 4) { if (zData[i] > inst.zMax) { 1349 < 0) {<= preAllocated.length - 4) { if (zData[i] > inst.zMax) {
1312 < 0) {<= preAllocated.length - 4) { inst.zMax = zData[i]; 1350 < 0) {<= preAllocated.length - 4) { inst.zMax = zData[i];
1313 < 0) {<= preAllocated.length - 4) { } 1351 < 0) {<= preAllocated.length - 4) { }
1314 < 0) {<= preAllocated.length - 4) { 1352 < 0) {<= preAllocated.length - 4) {
1315 < 0) {<= preAllocated.length - 4) { if (zData[i] < inst.zMin) { 1353 < 0) {<= preAllocated.length - 4) { if (zData[i] < inst.zMin) {
1316 < 0) {<= preAllocated.length - 4) { inst.zMin = zData[i]; 1354 < 0) {<= preAllocated.length - 4) { inst.zMin = zData[i];
1317 < 0) {<= preAllocated.length - 4) { } 1355 < 0) {<= preAllocated.length - 4) { }
1318 < 0) {<= preAllocated.length - 4) { } 1356 < 0) {<= preAllocated.length - 4) { }
1319 < 0) {<= preAllocated.length - 4) { } 1357 < 0) {<= preAllocated.length - 4) { }
1320 < 0) {<= preAllocated.length - 4) { 1358 < 0) {<= preAllocated.length - 4) {
1321 < 0) {<= preAllocated.length - 4) { if (nx && nx >= xMin && nx <= xMax) { 1359 < 0) {<= preAllocated.length - 4) { if (nx && nx >= xMin && nx <= xMax) {
1322 < 0) {<= preAllocated.length - 4) { nextInside = true; 1360 < 0) {<= preAllocated.length - 4) { nextInside = true;
1323 < 0) {<= preAllocated.length - 4) { } 1361 < 0) {<= preAllocated.length - 4) { }
1324 < 0) {<= preAllocated.length - 4) { 1362 < 0) {<= preAllocated.length - 4) {
1325 < 0) {<= preAllocated.length - 4) { if (px && px >= xMin && px <= xMax) { 1363 < 0) {<= preAllocated.length - 4) { if (px && px >= xMin && px <= xMax) {
1326 < 0) {<= preAllocated.length - 4) { prevInside = true; 1364 < 0) {<= preAllocated.length - 4) { prevInside = true;
1327 < 0) {<= preAllocated.length - 4) { } 1365 < 0) {<= preAllocated.length - 4) { }
1328 < 0) {<= preAllocated.length - 4) { 1366 < 0) {<= preAllocated.length - 4) {
1329 < 0) {<= preAllocated.length - 4) { if (isRange) { 1367 < 0) {<= preAllocated.length - 4) { if (isRange) {
1330 < 0) {<= preAllocated.length - 4) { if (useRaw) { 1368 < 0) {<= preAllocated.length - 4) { if (useRaw) {
1331 < 0) {<= preAllocated.length - 4) { y = d.slice(1, 3); 1369 < 0) {<= preAllocated.length - 4) { y = d.slice(1, 3);
1332 < 0) {<= preAllocated.length - 4) { } 1370 < 0) {<= preAllocated.length - 4) { }
1333 < 0) {<= preAllocated.length - 4) { 1371 < 0) {<= preAllocated.length - 4) {
1334 < 0) {<= preAllocated.length - 4) { low = y[0]; 1372 < 0) {<= preAllocated.length - 4) { low = y[0];
1335 < 0) {<= preAllocated.length - 4) { y = y[1]; 1373 < 0) {<= preAllocated.length - 4) { y = y[1];
1336 < 0) {<= preAllocated.length - 4) { 1374 < 0) {<= preAllocated.length - 4) {
1337 < 0) {<= preAllocated.length - 4) { } else if (isStacked) { 1375 < 0) {<= preAllocated.length - 4) { } else if (isStacked) {
1338 < 0) {<= preAllocated.length - 4) { x = d.x; 1376 < 0) {<= preAllocated.length - 4) { x = d.x;
1339 < 0) {<= preAllocated.length - 4) { y = d.stackY; 1377 < 0) {<= preAllocated.length - 4) { y = d.stackY;
1340 < 0) {<= preAllocated.length - 4) { low = y - d.y; 1378 < 0) {<= preAllocated.length - 4) { low = y - d.y;
1341 < 0) {<= preAllocated.length - 4) { } 1379 < 0) {<= preAllocated.length - 4) { }
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;
1345 < 0) {<= preAllocated.length - 4) { } 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;
-   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)) {
1348 < 0) {<= preAllocated.length - 4) { return; 1396 < 0) {<= preAllocated.length - 4) { return;
1349 < 0) {<= preAllocated.length - 4) { } 1397 < 0) {<= preAllocated.length - 4) { }
1350 < 0) {<= preAllocated.length - 4) { 1398 < 0) {<= preAllocated.length - 4) {
1351 < 0) {<= preAllocated.length - 4) { if (x >= xMin && x <= xMax) { 1399 < 0) {<= preAllocated.length - 4) { if (x >= xMin && x <= xMax) {
1352 < 0) {<= preAllocated.length - 4) { isXInside = true; 1400 < 0) {<= preAllocated.length - 4) { isXInside = true;
1353 < 0) {<= preAllocated.length - 4) { } 1401 < 0) {<= preAllocated.length - 4) { }
1354 < 0) {<= preAllocated.length - 4) { 1402 < 0) {<= preAllocated.length - 4) {
1355 < 0) {<= preAllocated.length - 4) { if (!isXInside && !nextInside && !prevInside) { 1403 < 0) {<= preAllocated.length - 4) { if (!isXInside && !nextInside && !prevInside) {
1356 < 0) {<= preAllocated.length - 4) { return; 1404 < 0) {<= preAllocated.length - 4) { return;
1357 < 0) {<= preAllocated.length - 4) { } 1405 < 0) {<= preAllocated.length - 4) { }
1358 < 0) {<= preAllocated.length - 4) { 1406 < 0) {<= preAllocated.length - 4) {
1359 < 0) {<= preAllocated.length - 4) { // Skip translations - temporary floating point fix 1407 < 0) {<= preAllocated.length - 4) { // Skip translations - temporary floating point fix
1360 < 0) {<= preAllocated.length - 4) { if (!settings.useGPUTranslations) { 1408 < 0) {<= preAllocated.length - 4) { if (!settings.useGPUTranslations) {
1361 < 0) {<= preAllocated.length - 4) { inst.skipTranslation = true; 1409 < 0) {<= preAllocated.length - 4) { inst.skipTranslation = true;
1362 < 0) {<= preAllocated.length - 4) { x = xAxis.toPixels(x, true); 1410 < 0) {<= preAllocated.length - 4) { x = xAxis.toPixels(x, true);
1363 < 0) {<= preAllocated.length - 4) { y = yAxis.toPixels(y, true); 1411 < 0) {<= preAllocated.length - 4) { y = yAxis.toPixels(y, true);
1364 < 0) {<= preAllocated.length - 4) { } 1412 < 0) {<= preAllocated.length - 4) { }
1365 < 0) {<= preAllocated.length - 4) { 1413 < 0) {<= preAllocated.length - 4) {
1366 < 0) {<= preAllocated.length - 4) { if (drawAsBar) { 1414 < 0) {<= preAllocated.length - 4) { if (drawAsBar) {
1367 < 0) {<= preAllocated.length - 4) { 1415 < 0) {<= preAllocated.length - 4) {
1368 < 0) {<= preAllocated.length - 4) { maxVal = y; 1416 < 0) {<= preAllocated.length - 4) { maxVal = y;
1369 < 0) {<= preAllocated.length - 4) { minVal = 0; 1417 < 0) {<= preAllocated.length - 4) { minVal = 0;
1370 < 0) {<= preAllocated.length - 4) { 1418 < 0) {<= preAllocated.length - 4) {
1371 < 0) {<= preAllocated.length - 4) { if (y < 0) { 1419 < 0) {<= preAllocated.length - 4) { if (y < 0) {
1372 < 0) {<= preAllocated.length - 4) { minVal = y; 1420 < 0) {<= preAllocated.length - 4) { minVal = y;
1373 < 0) {<= preAllocated.length - 4) { y = 0; 1421 < 0) {<= preAllocated.length - 4) { y = 0;
1374 < 0) {<= preAllocated.length - 4) { } 1422 < 0) {<= preAllocated.length - 4) { }
1375 < 0) {<= preAllocated.length - 4) { 1423 < 0) {<= preAllocated.length - 4) {
1376 < 0) {<= preAllocated.length - 4) { if (!settings.useGPUTranslations) { 1424 < 0) {<= preAllocated.length - 4) { if (!settings.useGPUTranslations) {
1377 < 0) {<= preAllocated.length - 4) { minVal = yAxis.toPixels(minVal, true); 1425 < 0) {<= preAllocated.length - 4) { minVal = yAxis.toPixels(minVal, true);
1378 < 0) {<= preAllocated.length - 4) { } 1426 < 0) {<= preAllocated.length - 4) { }
1379 < 0) {<= preAllocated.length - 4) { 1427 < 0) {<= preAllocated.length - 4) {
1380 < 0) {<= preAllocated.length - 4) { // Need to add an extra point here 1428 < 0) {<= preAllocated.length - 4) { // Need to add an extra point here
1381 < 0) {<= preAllocated.length - 4) { vertice(x, minVal, 0, 0, pcolor); 1429 < 0) {<= preAllocated.length - 4) { vertice(x, minVal, 0, 0, pcolor);
1382 < 0) {<= preAllocated.length - 4) { } 1430 < 0) {<= preAllocated.length - 4) { }
1383 < 0) {<= preAllocated.length - 4) { 1431 < 0) {<= preAllocated.length - 4) {
1384 < 0) {<= preAllocated.length - 4) { // No markers on out of bounds things. 1432 < 0) {<= preAllocated.length - 4) { // No markers on out of bounds things.
1385 < 0) {<= preAllocated.length - 4) { // Out of bound things are shown if and only if the next 1433 < 0) {<= preAllocated.length - 4) { // Out of bound things are shown if and only if the next
1386 < 0) {<= preAllocated.length - 4) { // or previous point is inside the rect. 1434 < 0) {<= preAllocated.length - 4) { // or previous point is inside the rect.
1387 < 0) {<= preAllocated.length - 4) { if (inst.hasMarkers) { // && isXInside) { 1435 < 0) {<= preAllocated.length - 4) { if (inst.hasMarkers) { // && isXInside) {
1388 < 0) {<= preAllocated.length - 4) { // x = H.correctFloat( 1436 < 0) {<= preAllocated.length - 4) { // x = H.correctFloat(
1389 < 0) {<= preAllocated.length - 4) { // Math.min(Math.max(-1e5, xAxis.translate( 1437 < 0) {<= preAllocated.length - 4) { // Math.min(Math.max(-1e5, xAxis.translate(
1390 < 0) {<= preAllocated.length - 4) { // x, 1438 < 0) {<= preAllocated.length - 4) { // x,
1391 < 0) {<= preAllocated.length - 4) { // 0, 1439 < 0) {<= preAllocated.length - 4) { // 0,
1392 < 0) {<= preAllocated.length - 4) { // 0, 1440 < 0) {<= preAllocated.length - 4) { // 0,
1393 < 0) {<= preAllocated.length - 4) { // 0, 1441 < 0) {<= preAllocated.length - 4) { // 0,
1394 < 0) {<= preAllocated.length - 4) { // 1, 1442 < 0) {<= preAllocated.length - 4) { // 1,
1395 < 0) {<= preAllocated.length - 4) { // 0.5, 1443 < 0) {<= preAllocated.length - 4) { // 0.5,
1396 < 0) {<= preAllocated.length - 4) { // false 1444 < 0) {<= preAllocated.length - 4) { // false
1397 < 0) {<= preAllocated.length - 4) { // )), 1e5) 1445 < 0) {<= preAllocated.length - 4) { // )), 1e5)
1398 < 0) {<= preAllocated.length - 4) { // ); 1446 < 0) {<= preAllocated.length - 4) { // );
1399 < 0) {<= preAllocated.length - 4) { 1447 < 0) {<= preAllocated.length - 4) {
1400 < 0) {<= preAllocated.length - 4) { if (lastX !== false) { 1448 < 0) {<= preAllocated.length - 4) { if (lastX !== false) {
1401 < 0) {<= preAllocated.length - 4) { series.closestPointRangePx = Math.min( 1449 < 0) {<= preAllocated.length - 4) { series.closestPointRangePx = Math.min(
1402 < 0) {<= preAllocated.length - 4) { series.closestPointRangePx, 1450 < 0) {<= preAllocated.length - 4) { series.closestPointRangePx,
1403 < 0) {<= preAllocated.length - 4) { Math.abs(x - lastX) 1451 < 0) {<= preAllocated.length - 4) { Math.abs(x - lastX)
1404 < 0) {<= preAllocated.length - 4) { ); 1452 < 0) {<= preAllocated.length - 4) { );
1405 < 0) {<= preAllocated.length - 4) { } 1453 < 0) {<= preAllocated.length - 4) { }
1406 < 0) {<= preAllocated.length - 4) { } 1454 < 0) {<= preAllocated.length - 4) { }
1407 < 0) {<= preAllocated.length - 4) { 1455 < 0) {<= preAllocated.length - 4) {
1408 < 0) {<= preAllocated.length - 4) { vertice( 1456 < 0) {<= preAllocated.length - 4) { vertice(
1409 < 0) {<= preAllocated.length - 4) { x, 1457 < 0) {<= preAllocated.length - 4) { x,
1410 < 0) {<= preAllocated.length - 4) { y, 1458 < 0) {<= preAllocated.length - 4) { y,
1411 < 0) {<= preAllocated.length - 4) { 0, 1459 < 0) {<= preAllocated.length - 4) { 0,
1412 < 0) {<= preAllocated.length - 4) { series.type === 'bubble' ? (z || 1) : 2, 1460 < 0) {<= preAllocated.length - 4) { series.type === 'bubble' ? (z || 1) : 2,
1413 < 0) {<= preAllocated.length - 4) { pcolor 1461 < 0) {<= preAllocated.length - 4) { pcolor
1414 < 0) {<= preAllocated.length - 4) { ); 1462 < 0) {<= preAllocated.length - 4) { );
1415 < 0) {<= preAllocated.length - 4) { 1463 < 0) {<= preAllocated.length - 4) {
1416 < 0) {<= preAllocated.length - 4) { // Uncomment this to support color axis. 1464 < 0) {<= preAllocated.length - 4) { // Uncomment this to support color axis.
1417 < 0) {<= preAllocated.length - 4) { // if (caxis) { 1465 < 0) {<= preAllocated.length - 4) { // if (caxis) {
1418 < 0) {<= preAllocated.length - 4) { // color = H.color(caxis.toColor(y)).rgba; 1466 < 0) {<= preAllocated.length - 4) { // color = H.color(caxis.toColor(y)).rgba;
1419 < 0) {<= preAllocated.length - 4) { 1467 < 0) {<= preAllocated.length - 4) {
1420 < 0) {<= preAllocated.length - 4) { // inst.colorData.push(color[0] / 255.0); 1468 < 0) {<= preAllocated.length - 4) { // inst.colorData.push(color[0] / 255.0);
1421 < 0) {<= preAllocated.length - 4) { // inst.colorData.push(color[1] / 255.0); 1469 < 0) {<= preAllocated.length - 4) { // inst.colorData.push(color[1] / 255.0);
1422 < 0) {<= preAllocated.length - 4) { // inst.colorData.push(color[2] / 255.0); 1470 < 0) {<= preAllocated.length - 4) { // inst.colorData.push(color[2] / 255.0);
1423 < 0) {<= preAllocated.length - 4) { // inst.colorData.push(color[3]); 1471 < 0) {<= preAllocated.length - 4) { // inst.colorData.push(color[3]);
1424 < 0) {<= preAllocated.length - 4) { // } 1472 < 0) {<= preAllocated.length - 4) { // }
1425 < 0) {<= preAllocated.length - 4) { 1473 < 0) {<= preAllocated.length - 4) {
1426 < 0) {<= preAllocated.length - 4) { lastX = x; 1474 < 0) {<= preAllocated.length - 4) { lastX = x;
1427 < 0) {<= preAllocated.length - 4) { 1475 < 0) {<= preAllocated.length - 4) {
1428 < 0) {<= preAllocated.length - 4) { //return true; 1476 < 0) {<= preAllocated.length - 4) { //return true;
1429 < 0) {<= preAllocated.length - 4) { }); 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);
-   1500 < 0) {<= preAllocated.length - 4) { pushSupplementPoint(closestRight);
-   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) {
1432 < 0) {<= preAllocated.length - 4) { /* 1504 < 0) {<= preAllocated.length - 4) { /*
1433 < 0) {<= preAllocated.length - 4) { * Push a series to the renderer 1505 < 0) {<= preAllocated.length - 4) { * Push a series to the renderer
1434 < 0) {<= preAllocated.length - 4) { * If we render the series immediatly, we don't have to loop later 1506 < 0) {<= preAllocated.length - 4) { * If we render the series immediatly, we don't have to loop later
1435 < 0) {<= preAllocated.length - 4) { * @param s {Highchart.Series} - the series to push 1507 < 0) {<= preAllocated.length - 4) { * @param s {Highchart.Series} - the series to push
1436 < 0) {<= preAllocated.length - 4) { */ 1508 < 0) {<= preAllocated.length - 4) { */
1437 < 0) {<= preAllocated.length - 4) { function pushSeries(s) { 1509 < 0) {<= preAllocated.length - 4) { function pushSeries(s) {
1438 < 0) {<= preAllocated.length - 4) { if (series.length > 0) { 1510 < 0) {<= preAllocated.length - 4) { if (series.length > 0) {
1439 < 0) {<= preAllocated.length - 4) { series[series.length - 1].to = data.length; 1511 < 0) {<= preAllocated.length - 4) { series[series.length - 1].to = data.length;
1440 < 0) {<= preAllocated.length - 4) { if (series[series.length - 1].hasMarkers) { 1512 < 0) {<= preAllocated.length - 4) { if (series[series.length - 1].hasMarkers) {
1441 < 0) {<= preAllocated.length - 4) { series[series.length - 1].markerTo = markerData.length; 1513 < 0) {<= preAllocated.length - 4) { series[series.length - 1].markerTo = markerData.length;
1442 < 0) {<= preAllocated.length - 4) { } 1514 < 0) {<= preAllocated.length - 4) { }
1443 < 0) {<= preAllocated.length - 4) { } 1515 < 0) {<= preAllocated.length - 4) { }
1444 < 0) {<= preAllocated.length - 4) { 1516 < 0) {<= preAllocated.length - 4) {
1445 < 0) {<= preAllocated.length - 4) { if (settings.timeSeriesProcessing) { 1517 < 0) {<= preAllocated.length - 4) { if (settings.timeSeriesProcessing) {
1446 < 0) {<= preAllocated.length - 4) { console.time('building ' + s.type + ' series'); //eslint-disable-line no-console 1518 < 0) {<= preAllocated.length - 4) { console.time('building ' + s.type + ' series'); //eslint-disable-line no-console
1447 < 0) {<= preAllocated.length - 4) { } 1519 < 0) {<= preAllocated.length - 4) { }
1448 < 0) {<= preAllocated.length - 4) { 1520 < 0) {<= preAllocated.length - 4) {
1449 < 0) {<= preAllocated.length - 4) { series.push({ 1521 < 0) {<= preAllocated.length - 4) { series.push({
1450 < 0) {<= preAllocated.length - 4) { from: data.length, 1522 < 0) {<= preAllocated.length - 4) { from: data.length,
1451 < 0) {<= preAllocated.length - 4) { markerFrom: markerData.length, 1523 < 0) {<= preAllocated.length - 4) { markerFrom: markerData.length,
1452 < 0) {<= preAllocated.length - 4) { // Push RGBA values to this array to use per. point coloring. 1524 < 0) {<= preAllocated.length - 4) { // Push RGBA values to this array to use per. point coloring.
1453 < 0) {<= preAllocated.length - 4) { // It should be 0-padded, so each component should be pushed in 1525 < 0) {<= preAllocated.length - 4) { // It should be 0-padded, so each component should be pushed in
1454 < 0) {<= preAllocated.length - 4) { // succession. 1526 < 0) {<= preAllocated.length - 4) { // succession.
1455 < 0) {<= preAllocated.length - 4) { colorData: [], 1527 < 0) {<= preAllocated.length - 4) { colorData: [],
1456 < 0) {<= preAllocated.length - 4) { series: s, 1528 < 0) {<= preAllocated.length - 4) { series: s,
1457 < 0) {<= preAllocated.length - 4) { zMin: Number.MAX_VALUE, 1529 < 0) {<= preAllocated.length - 4) { zMin: Number.MAX_VALUE,
1458 < 0) {<= preAllocated.length - 4) { zMax: -Number.MAX_VALUE, 1530 < 0) {<= preAllocated.length - 4) { zMax: -Number.MAX_VALUE,
1459 < 0) {<= preAllocated.length - 4) { hasMarkers: s.options.marker ? s.options.marker.enabled !== false : false, 1531 < 0) {<= preAllocated.length - 4) { hasMarkers: s.options.marker ? s.options.marker.enabled !== false : false,
1460 < 0) {<= preAllocated.length - 4) { showMarksers: true, 1532 < 0) {<= preAllocated.length - 4) { showMarksers: true,
1461 < 0) {<= preAllocated.length - 4) { drawMode: ({ 1533 < 0) {<= preAllocated.length - 4) { drawMode: ({
1462 < 0) {<= preAllocated.length - 4) { 'area': 'lines', 1534 < 0) {<= preAllocated.length - 4) { 'area': 'lines',
1463 < 0) {<= preAllocated.length - 4) { 'arearange': 'lines', 1535 < 0) {<= preAllocated.length - 4) { 'arearange': 'lines',
1464 < 0) {<= preAllocated.length - 4) { 'areaspline': 'line_strip', 1536 < 0) {<= preAllocated.length - 4) { 'areaspline': 'line_strip',
1465 < 0) {<= preAllocated.length - 4) { 'column': 'lines', 1537 < 0) {<= preAllocated.length - 4) { 'column': 'lines',
1466 < 0) {<= preAllocated.length - 4) { 'line': 'line_strip', 1538 < 0) {<= preAllocated.length - 4) { 'line': 'line_strip',
1467 < 0) {<= preAllocated.length - 4) { 'scatter': 'points', 1539 < 0) {<= preAllocated.length - 4) { 'scatter': 'points',
1468 < 0) {<= preAllocated.length - 4) { 'heatmap': 'triangles', 1540 < 0) {<= preAllocated.length - 4) { 'heatmap': 'triangles',
1469 < 0) {<= preAllocated.length - 4) { 'treemap': 'triangles', 1541 < 0) {<= preAllocated.length - 4) { 'treemap': 'triangles',
1470 < 0) {<= preAllocated.length - 4) { 'bubble': 'points' 1542 < 0) {<= preAllocated.length - 4) { 'bubble': 'points'
1471 < 0) {<= preAllocated.length - 4) { })[s.type] || 'line_strip' 1543 < 0) {<= preAllocated.length - 4) { })[s.type] || 'line_strip'
1472 < 0) {<= preAllocated.length - 4) { }); 1544 < 0) {<= preAllocated.length - 4) { });
1473 < 0) {<= preAllocated.length - 4) { 1545 < 0) {<= preAllocated.length - 4) {
1474 < 0) {<= preAllocated.length - 4) { // Add the series data to our buffer(s) 1546 < 0) {<= preAllocated.length - 4) { // Add the series data to our buffer(s)
1475 < 0) {<= preAllocated.length - 4) { pushSeriesData(s, series[series.length - 1]); 1547 < 0) {<= preAllocated.length - 4) { pushSeriesData(s, series[series.length - 1]);
1476 < 0) {<= preAllocated.length - 4) { 1548 < 0) {<= preAllocated.length - 4) {
1477 < 0) {<= preAllocated.length - 4) { if (settings.timeSeriesProcessing) { 1549 < 0) {<= preAllocated.length - 4) { if (settings.timeSeriesProcessing) {
1478 < 0) {<= preAllocated.length - 4) { console.timeEnd('building ' + s.type + ' series'); //eslint-disable-line no-console 1550 < 0) {<= preAllocated.length - 4) { console.timeEnd('building ' + s.type + ' series'); //eslint-disable-line no-console
1479 < 0) {<= preAllocated.length - 4) { } 1551 < 0) {<= preAllocated.length - 4) { }
1480 < 0) {<= preAllocated.length - 4) { } 1552 < 0) {<= preAllocated.length - 4) { }
1481 < 0) {<= preAllocated.length - 4) { 1553 < 0) {<= preAllocated.length - 4) {
1482 < 0) {<= preAllocated.length - 4) { /* 1554 < 0) {<= preAllocated.length - 4) { /*
1483 < 0) {<= preAllocated.length - 4) { * Flush the renderer. 1555 < 0) {<= preAllocated.length - 4) { * Flush the renderer.
1484 < 0) {<= preAllocated.length - 4) { * This removes pushed series and vertices. 1556 < 0) {<= preAllocated.length - 4) { * This removes pushed series and vertices.
1485 < 0) {<= preAllocated.length - 4) { * Should be called after clearing and before rendering 1557 < 0) {<= preAllocated.length - 4) { * Should be called after clearing and before rendering
1486 < 0) {<= preAllocated.length - 4) { */ 1558 < 0) {<= preAllocated.length - 4) { */
1487 < 0) {<= preAllocated.length - 4) { function flush() { 1559 < 0) {<= preAllocated.length - 4) { function flush() {
1488 < 0) {<= preAllocated.length - 4) { series = []; 1560 < 0) {<= preAllocated.length - 4) { series = [];
1489 < 0) {<= preAllocated.length - 4) { exports.data = data = []; 1561 < 0) {<= preAllocated.length - 4) { exports.data = data = [];
1490 < 0) {<= preAllocated.length - 4) { markerData = []; 1562 < 0) {<= preAllocated.length - 4) { markerData = [];
1491 < 0) {<= preAllocated.length - 4) { } 1563 < 0) {<= preAllocated.length - 4) { }
1492 < 0) {<= preAllocated.length - 4) { 1564 < 0) {<= preAllocated.length - 4) {
1493 < 0) {<= preAllocated.length - 4) { /* 1565 < 0) {<= preAllocated.length - 4) { /*
1494 < 0) {<= preAllocated.length - 4) { * Pass x-axis to shader 1566 < 0) {<= preAllocated.length - 4) { * Pass x-axis to shader
1495 < 0) {<= preAllocated.length - 4) { * @param axis {Highcharts.Axis} - the x-axis 1567 < 0) {<= preAllocated.length - 4) { * @param axis {Highcharts.Axis} - the x-axis
1496 < 0) {<= preAllocated.length - 4) { */ 1568 < 0) {<= preAllocated.length - 4) { */
1497 < 0) {<= preAllocated.length - 4) { function setXAxis(axis) { 1569 < 0) {<= preAllocated.length - 4) { function setXAxis(axis) {
1498 < 0) {<= preAllocated.length - 4) { if (!shader) { 1570 < 0) {<= preAllocated.length - 4) { if (!shader) {
1499 < 0) {<= preAllocated.length - 4) { return; 1571 < 0) {<= preAllocated.length - 4) { return;
1500 < 0) {<= preAllocated.length - 4) { } 1572 < 0) {<= preAllocated.length - 4) { }
1501 < 0) {<= preAllocated.length - 4) { 1573 < 0) {<= preAllocated.length - 4) {
1502 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisTrans', axis.transA); 1574 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisTrans', axis.transA);
1503 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisMin', axis.min); 1575 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisMin', axis.min);
1504 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisMinPad', axis.minPixelPadding); 1576 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisMinPad', axis.minPixelPadding);
1505 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisPointRange', axis.pointRange); 1577 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisPointRange', axis.pointRange);
1506 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisLen', axis.len); 1578 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisLen', axis.len);
1507 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisPos', axis.pos); 1579 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisPos', axis.pos);
1508 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisCVSCoord', !axis.horiz); 1580 < 0) {<= preAllocated.length - 4) { shader.setUniform('xAxisCVSCoord', !axis.horiz);
1509 < 0) {<= preAllocated.length - 4) { } 1581 < 0) {<= preAllocated.length - 4) { }
1510 < 0) {<= preAllocated.length - 4) { 1582 < 0) {<= preAllocated.length - 4) {
1511 < 0) {<= preAllocated.length - 4) { /* 1583 < 0) {<= preAllocated.length - 4) { /*
1512 < 0) {<= preAllocated.length - 4) { * Pass y-axis to shader 1584 < 0) {<= preAllocated.length - 4) { * Pass y-axis to shader
1513 < 0) {<= preAllocated.length - 4) { * @param axis {Highcharts.Axis} - the y-axis 1585 < 0) {<= preAllocated.length - 4) { * @param axis {Highcharts.Axis} - the y-axis
1514 < 0) {<= preAllocated.length - 4) { */ 1586 < 0) {<= preAllocated.length - 4) { */
1515 < 0) {<= preAllocated.length - 4) { function setYAxis(axis) { 1587 < 0) {<= preAllocated.length - 4) { function setYAxis(axis) {
1516 < 0) {<= preAllocated.length - 4) { if (!shader) { 1588 < 0) {<= preAllocated.length - 4) { if (!shader) {
1517 < 0) {<= preAllocated.length - 4) { return; 1589 < 0) {<= preAllocated.length - 4) { return;
1518 < 0) {<= preAllocated.length - 4) { } 1590 < 0) {<= preAllocated.length - 4) { }
1519 < 0) {<= preAllocated.length - 4) { 1591 < 0) {<= preAllocated.length - 4) {
1520 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisTrans', axis.transA); 1592 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisTrans', axis.transA);
1521 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisMin', axis.min); 1593 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisMin', axis.min);
1522 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisMinPad', axis.minPixelPadding); 1594 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisMinPad', axis.minPixelPadding);
1523 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisPointRange', axis.pointRange); 1595 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisPointRange', axis.pointRange);
1524 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisLen', axis.len); 1596 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisLen', axis.len);
1525 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisPos', axis.pos); 1597 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisPos', axis.pos);
1526 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisCVSCoord', !axis.horiz); 1598 < 0) {<= preAllocated.length - 4) { shader.setUniform('yAxisCVSCoord', !axis.horiz);
1527 < 0) {<= preAllocated.length - 4) { } 1599 < 0) {<= preAllocated.length - 4) { }
1528 < 0) {<= preAllocated.length - 4) { 1600 < 0) {<= preAllocated.length - 4) {
1529 < 0) {<= preAllocated.length - 4) { /* 1601 < 0) {<= preAllocated.length - 4) { /*
1530 < 0) {<= preAllocated.length - 4) { * Set the translation threshold 1602 < 0) {<= preAllocated.length - 4) { * Set the translation threshold
1531 < 0) {<= preAllocated.length - 4) { * @param has {boolean} - has threshold flag 1603 < 0) {<= preAllocated.length - 4) { * @param has {boolean} - has threshold flag
1532 < 0) {<= preAllocated.length - 4) { * @param translation {Float} - the threshold 1604 < 0) {<= preAllocated.length - 4) { * @param translation {Float} - the threshold
1533 < 0) {<= preAllocated.length - 4) { */ 1605 < 0) {<= preAllocated.length - 4) { */
1534 < 0) {<= preAllocated.length - 4) { function setThreshold(has, translation) { 1606 < 0) {<= preAllocated.length - 4) { function setThreshold(has, translation) {
1535 < 0) {<= preAllocated.length - 4) { shader.setUniform('hasThreshold', has); 1607 < 0) {<= preAllocated.length - 4) { shader.setUniform('hasThreshold', has);
1536 < 0) {<= preAllocated.length - 4) { shader.setUniform('translatedThreshold', translation); 1608 < 0) {<= preAllocated.length - 4) { shader.setUniform('translatedThreshold', translation);
1537 < 0) {<= preAllocated.length - 4) { } 1609 < 0) {<= preAllocated.length - 4) { }
1538 < 0) {<= preAllocated.length - 4) { 1610 < 0) {<= preAllocated.length - 4) {
1539 < 0) {<= preAllocated.length - 4) { /* 1611 < 0) {<= preAllocated.length - 4) { /*
1540 < 0) {<= preAllocated.length - 4) { * Render the data 1612 < 0) {<= preAllocated.length - 4) { * Render the data
1541 < 0) {<= preAllocated.length - 4) { * This renders all pushed series. 1613 < 0) {<= preAllocated.length - 4) { * This renders all pushed series.
1542 < 0) {<= preAllocated.length - 4) { */ 1614 < 0) {<= preAllocated.length - 4) { */
1543 < 0) {<= preAllocated.length - 4) { function render(chart) { 1615 < 0) {<= preAllocated.length - 4) { function render(chart) {
1544 < 0) {<= preAllocated.length - 4) { 1616 < 0) {<= preAllocated.length - 4) {
1545 < 0) {<= preAllocated.length - 4) { if (chart) { 1617 < 0) {<= preAllocated.length - 4) { if (chart) {
1546 < 0) {<= preAllocated.length - 4) { if (!chart.chartHeight || !chart.chartWidth) { 1618 < 0) {<= preAllocated.length - 4) { if (!chart.chartHeight || !chart.chartWidth) {
1547 < 0) {<= preAllocated.length - 4) { //chart.setChartSize(); 1619 < 0) {<= preAllocated.length - 4) { //chart.setChartSize();
1548 < 0) {<= preAllocated.length - 4) { } 1620 < 0) {<= preAllocated.length - 4) { }
1549 < 0) {<= preAllocated.length - 4) { 1621 < 0) {<= preAllocated.length - 4) {
1550 < 0) {<= preAllocated.length - 4) { width = chart.chartWidth || 800; 1622 < 0) {<= preAllocated.length - 4) { width = chart.chartWidth || 800;
1551 < 0) {<= preAllocated.length - 4) { height = chart.chartHeight || 400; 1623 < 0) {<= preAllocated.length - 4) { height = chart.chartHeight || 400;
1552 < 0) {<= preAllocated.length - 4) { } else { 1624 < 0) {<= preAllocated.length - 4) { } else {
1553 < 0) {<= preAllocated.length - 4) { return false; 1625 < 0) {<= preAllocated.length - 4) { return false;
1554 < 0) {<= preAllocated.length - 4) { } 1626 < 0) {<= preAllocated.length - 4) { }
1555 < 0) {<= preAllocated.length - 4) { 1627 < 0) {<= preAllocated.length - 4) {
1556 < 0) {<= preAllocated.length - 4) { if (!gl || !width || !height) { 1628 < 0) {<= preAllocated.length - 4) { if (!gl || !width || !height) {
1557 < 0) {<= preAllocated.length - 4) { return false; 1629 < 0) {<= preAllocated.length - 4) { return false;
1558 < 0) {<= preAllocated.length - 4) { } 1630 < 0) {<= preAllocated.length - 4) { }
1559 < 0) {<= preAllocated.length - 4) { 1631 < 0) {<= preAllocated.length - 4) {
1560 < 0) {<= preAllocated.length - 4) { if (settings.timeRendering) { 1632 < 0) {<= preAllocated.length - 4) { if (settings.timeRendering) {
1561 < 0) {<= preAllocated.length - 4) { console.time('gl rendering'); //eslint-disable-line no-console 1633 < 0) {<= preAllocated.length - 4) { console.time('gl rendering'); //eslint-disable-line no-console
1562 < 0) {<= preAllocated.length - 4) { } 1634 < 0) {<= preAllocated.length - 4) { }
1563 < 0) {<= preAllocated.length - 4) { 1635 < 0) {<= preAllocated.length - 4) {
1564 < 0) {<= preAllocated.length - 4) { shader.bind(); 1636 < 0) {<= preAllocated.length - 4) { shader.bind();
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);
1567 < 0) {<= preAllocated.length - 4) { shader.setPMatrix(orthoMatrix(width, height)); 1639 < 0) {<= preAllocated.length - 4) { shader.setPMatrix(orthoMatrix(width, height));
-   1640 < 0) {<= preAllocated.length - 4) {
1568 < 0) {<= preAllocated.length - 4) { 1641 < 0) {<= preAllocated.length - 4) { if (settings.lineWidth > 1 && !H.isMS) {
-   1642 < 0) {<= preAllocated.length - 4) { gl.lineWidth(settings.lineWidth);
1569 < 0) {<= preAllocated.length - 4) { gl.lineWidth(settings.lineWidth); 1643 < 0) {<= preAllocated.length - 4) { }
1570 < 0) {<= preAllocated.length - 4) { 1644 < 0) {<= preAllocated.length - 4) {
1571 < 0) {<= preAllocated.length - 4) { vbuffer.build(exports.data, 'aVertexPosition', 4); 1645 < 0) {<= preAllocated.length - 4) { vbuffer.build(exports.data, 'aVertexPosition', 4);
1572 < 0) {<= preAllocated.length - 4) { vbuffer.bind(); 1646 < 0) {<= preAllocated.length - 4) { vbuffer.bind();
1573 < 0) {<= preAllocated.length - 4) { 1647 < 0) {<= preAllocated.length - 4) {
1574 < 0) {<= preAllocated.length - 4) { if (textureIsReady) { 1648 < 0) {<= preAllocated.length - 4) { if (textureIsReady) {
1575 < 0) {<= preAllocated.length - 4) { gl.bindTexture(gl.TEXTURE_2D, circleTextureHandle); 1649 < 0) {<= preAllocated.length - 4) { gl.bindTexture(gl.TEXTURE_2D, circleTextureHandle);
1576 < 0) {<= preAllocated.length - 4) { shader.setTexture(circleTextureHandle); 1650 < 0) {<= preAllocated.length - 4) { shader.setTexture(circleTextureHandle);
1577 < 0) {<= preAllocated.length - 4) { } 1651 < 0) {<= preAllocated.length - 4) { }
1578 < 0) {<= preAllocated.length - 4) { 1652 < 0) {<= preAllocated.length - 4) {
1579 < 0) {<= preAllocated.length - 4) { shader.setInverted(chart.options.chart ? chart.options.chart.inverted : false); 1653 < 0) {<= preAllocated.length - 4) { shader.setInverted(chart.options.chart ? chart.options.chart.inverted : false);
1580 < 0) {<= preAllocated.length - 4) { 1654 < 0) {<= preAllocated.length - 4) {
1581 < 0) {<= preAllocated.length - 4) { // Render the series 1655 < 0) {<= preAllocated.length - 4) { // Render the series
1582 < 0) {<= preAllocated.length - 4) { each(series, function(s, si) { 1656 < 0) {<= preAllocated.length - 4) { each(series, function(s, si) {
1583 < 0) {<= preAllocated.length - 4) { var options = s.series.options, 1657 < 0) {<= preAllocated.length - 4) { var options = s.series.options,
1584 < 0) {<= preAllocated.length - 4) { threshold = options.threshold, 1658 < 0) {<= preAllocated.length - 4) { threshold = options.threshold,
1585 < 0) {<= preAllocated.length - 4) { hasThreshold = isNumber(threshold), 1659 < 0) {<= preAllocated.length - 4) { hasThreshold = isNumber(threshold),
1586 < 0) {<= preAllocated.length - 4) { yBottom = s.series.yAxis.getThreshold(threshold), 1660 < 0) {<= preAllocated.length - 4) { yBottom = s.series.yAxis.getThreshold(threshold),
1587 < 0) {<= preAllocated.length - 4) { translatedThreshold = yBottom, 1661 < 0) {<= preAllocated.length - 4) { translatedThreshold = yBottom,
1588 < 0) {<= preAllocated.length - 4) { cbuffer, 1662 < 0) {<= preAllocated.length - 4) { cbuffer,
1589 < 0) {<= preAllocated.length - 4) { showMarkers = pick( 1663 < 0) {<= preAllocated.length - 4) { showMarkers = pick(
1590 < 0) {<= preAllocated.length - 4) { options.marker ? options.marker.enabled : null, 1664 < 0) {<= preAllocated.length - 4) { options.marker ? options.marker.enabled : null,
1591 < 0) {<= preAllocated.length - 4) { s.series.xAxis.isRadial ? true : null, 1665 < 0) {<= preAllocated.length - 4) { s.series.xAxis.isRadial ? true : null,
1592 < 0) {<= preAllocated.length - 4) { s.series.closestPointRangePx > 1666 < 0) {<= preAllocated.length - 4) { s.series.closestPointRangePx >
1593 < 0) {<= preAllocated.length - 4) { 2 * (( 1667 < 0) {<= preAllocated.length - 4) { 2 * ((
1594 < 0) {<= preAllocated.length - 4) { options.marker ? 1668 < 0) {<= preAllocated.length - 4) { options.marker ?
1595 < 0) {<= preAllocated.length - 4) { options.marker.radius : 1669 < 0) {<= preAllocated.length - 4) { options.marker.radius :
1596 < 0) {<= preAllocated.length - 4) { 10 1670 < 0) {<= preAllocated.length - 4) { 10
1597 < 0) {<= preAllocated.length - 4) { ) || 10) 1671 < 0) {<= preAllocated.length - 4) { ) || 10)
1598 < 0) {<= preAllocated.length - 4) { ), 1672 < 0) {<= preAllocated.length - 4) { ),
1599 < 0) {<= preAllocated.length - 4) { fillColor = s.series.fillOpacity ? 1673 < 0) {<= preAllocated.length - 4) { fillColor = s.series.fillOpacity ?
1600 < 0) {<= preAllocated.length - 4) { new Color(s.series.color).setOpacity( 1674 < 0) {<= preAllocated.length - 4) { new Color(s.series.color).setOpacity(
1601 < 0) {<= preAllocated.length - 4) { pick(options.fillOpacity, 0.85) 1675 < 0) {<= preAllocated.length - 4) { pick(options.fillOpacity, 0.85)
1602 < 0) {<= preAllocated.length - 4) { ).get() : 1676 < 0) {<= preAllocated.length - 4) { ).get() :
1603 < 0) {<= preAllocated.length - 4) { s.series.color, 1677 < 0) {<= preAllocated.length - 4) { s.series.color,
1604 < 0) {<= preAllocated.length - 4) { color; 1678 < 0) {<= preAllocated.length - 4) { color;
1605 < 0) {<= preAllocated.length - 4) { 1679 < 0) {<= preAllocated.length - 4) {
1606 < 0) {<= preAllocated.length - 4) { vbuffer.bind(); 1680 < 0) {<= preAllocated.length - 4) { vbuffer.bind();
1607 < 0) {<= preAllocated.length - 4) { 1681 < 0) {<= preAllocated.length - 4) {
1608 < 0) {<= preAllocated.length - 4) { if (options.colorByPoint) { 1682 < 0) {<= preAllocated.length - 4) { if (options.colorByPoint) {
1609 < 0) {<= preAllocated.length - 4) { fillColor = s.series.chart.options.colors[si]; 1683 < 0) {<= preAllocated.length - 4) { fillColor = s.series.chart.options.colors[si];
1610 < 0) {<= preAllocated.length - 4) { } 1684 < 0) {<= preAllocated.length - 4) { }
1611 < 0) {<= preAllocated.length - 4) { 1685 < 0) {<= preAllocated.length - 4) {
1612 < 0) {<= preAllocated.length - 4) { color = H.color(fillColor).rgba; 1686 < 0) {<= preAllocated.length - 4) { color = H.color(fillColor).rgba;
1613 < 0) {<= preAllocated.length - 4) { 1687 < 0) {<= preAllocated.length - 4) {
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) { }
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);
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) {
1623 < 0) {<= preAllocated.length - 4) { } else if (options.boostBlending === 'mult') { 1697 < 0) {<= preAllocated.length - 4) { } else if (options.boostBlending === 'mult') {
1624 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.DST_COLOR, gl.ZERO); 1698 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.DST_COLOR, gl.ZERO);
1625 < 0) {<= preAllocated.length - 4) { 1699 < 0) {<= preAllocated.length - 4) {
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);
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);
1632 < 0) {<= preAllocated.length - 4) { gl.blendEquation(gl.FUNC_ADD); 1706 < 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);
1633 < 0) {<= preAllocated.length - 4) { } 1708 < 0) {<= preAllocated.length - 4) { }
1634 < 0) {<= preAllocated.length - 4) { 1709 < 0) {<= preAllocated.length - 4) {
1635 < 0) {<= preAllocated.length - 4) { shader.reset(); 1710 < 0) {<= preAllocated.length - 4) { shader.reset();
1636 < 0) {<= preAllocated.length - 4) { 1711 < 0) {<= preAllocated.length - 4) {
1637 < 0) {<= preAllocated.length - 4) { // If there are entries in the colorData buffer, build and bind it. 1712 < 0) {<= preAllocated.length - 4) { // If there are entries in the colorData buffer, build and bind it.
1638 < 0) {<= preAllocated.length - 4) { if (s.colorData.length > 0) { 1713 < 0) {<= preAllocated.length - 4) { if (s.colorData.length > 0) {
1639 < 0) {<= preAllocated.length - 4) { shader.setUniform('hasColor', 1.0); 1714 < 0) {<= preAllocated.length - 4) { shader.setUniform('hasColor', 1.0);
1640 < 0) {<= preAllocated.length - 4) { cbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap 1715 < 0) {<= preAllocated.length - 4) { cbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap
1641 < 0) {<= preAllocated.length - 4) { cbuffer.build(s.colorData, 'aColor', 4); 1716 < 0) {<= preAllocated.length - 4) { cbuffer.build(s.colorData, 'aColor', 4);
1642 < 0) {<= preAllocated.length - 4) { cbuffer.bind(); 1717 < 0) {<= preAllocated.length - 4) { cbuffer.bind();
1643 < 0) {<= preAllocated.length - 4) { } 1718 < 0) {<= preAllocated.length - 4) { }
1644 < 0) {<= preAllocated.length - 4) { 1719 < 0) {<= preAllocated.length - 4) {
1645 < 0) {<= preAllocated.length - 4) { // Set series specific uniforms 1720 < 0) {<= preAllocated.length - 4) { // Set series specific uniforms
1646 < 0) {<= preAllocated.length - 4) { shader.setColor(color); 1721 < 0) {<= preAllocated.length - 4) { shader.setColor(color);
1647 < 0) {<= preAllocated.length - 4) { setXAxis(s.series.xAxis); 1722 < 0) {<= preAllocated.length - 4) { setXAxis(s.series.xAxis);
1648 < 0) {<= preAllocated.length - 4) { setYAxis(s.series.yAxis); 1723 < 0) {<= preAllocated.length - 4) { setYAxis(s.series.yAxis);
1649 < 0) {<= preAllocated.length - 4) { setThreshold(hasThreshold, translatedThreshold); 1724 < 0) {<= preAllocated.length - 4) { setThreshold(hasThreshold, translatedThreshold);
1650 < 0) {<= preAllocated.length - 4) { 1725 < 0) {<= preAllocated.length - 4) {
1651 < 0) {<= preAllocated.length - 4) { if (s.drawMode === 'points') { 1726 < 0) {<= preAllocated.length - 4) { if (s.drawMode === 'points') {
1652 < 0) {<= preAllocated.length - 4) { if (options.marker && options.marker.radius) { 1727 < 0) {<= preAllocated.length - 4) { if (options.marker && options.marker.radius) {
1653 < 0) {<= preAllocated.length - 4) { shader.setPointSize(options.marker.radius * 2.0); 1728 < 0) {<= preAllocated.length - 4) { shader.setPointSize(options.marker.radius * 2.0);
1654 < 0) {<= preAllocated.length - 4) { } else { 1729 < 0) {<= preAllocated.length - 4) { } else {
1655 < 0) {<= preAllocated.length - 4) { shader.setPointSize(1); 1730 < 0) {<= preAllocated.length - 4) { shader.setPointSize(1);
1656 < 0) {<= preAllocated.length - 4) { } 1731 < 0) {<= preAllocated.length - 4) { }
1657 < 0) {<= preAllocated.length - 4) { } 1732 < 0) {<= preAllocated.length - 4) { }
1658 < 0) {<= preAllocated.length - 4) { 1733 < 0) {<= preAllocated.length - 4) {
1659 < 0) {<= preAllocated.length - 4) { // If set to true, the toPixels translations in the shader 1734 < 0) {<= preAllocated.length - 4) { // If set to true, the toPixels translations in the shader
1660 < 0) {<= preAllocated.length - 4) { // is skipped, i.e it's assumed that the value is a pixel coord. 1735 < 0) {<= preAllocated.length - 4) { // is skipped, i.e it's assumed that the value is a pixel coord.
1661 < 0) {<= preAllocated.length - 4) { shader.setSkipTranslation(s.skipTranslation); 1736 < 0) {<= preAllocated.length - 4) { shader.setSkipTranslation(s.skipTranslation);
1662 < 0) {<= preAllocated.length - 4) { 1737 < 0) {<= preAllocated.length - 4) {
1663 < 0) {<= preAllocated.length - 4) { if (s.series.type === 'bubble') { 1738 < 0) {<= preAllocated.length - 4) { if (s.series.type === 'bubble') {
1664 < 0) {<= preAllocated.length - 4) { shader.setBubbleUniforms(s.series, s.zMin, s.zMax); 1739 < 0) {<= preAllocated.length - 4) { shader.setBubbleUniforms(s.series, s.zMin, s.zMax);
1665 < 0) {<= preAllocated.length - 4) { } 1740 < 0) {<= preAllocated.length - 4) { }
1666 < 0) {<= preAllocated.length - 4) { 1741 < 0) {<= preAllocated.length - 4) {
1667 < 0) {<= preAllocated.length - 4) { shader.setDrawAsCircle((asCircle[s.series.type] && textureIsReady) || false); 1742 < 0) {<= preAllocated.length - 4) { shader.setDrawAsCircle((asCircle[s.series.type] && textureIsReady) || false);
1668 < 0) {<= preAllocated.length - 4) { 1743 < 0) {<= preAllocated.length - 4) {
1669 < 0) {<= preAllocated.length - 4) { // Do the actual rendering 1744 < 0) {<= preAllocated.length - 4) { // Do the actual rendering
1670 < 0) {<= preAllocated.length - 4) { vbuffer.render(s.from, s.to, s.drawMode); 1745 < 0) {<= preAllocated.length - 4) { vbuffer.render(s.from, s.to, s.drawMode);
1671 < 0) {<= preAllocated.length - 4) { 1746 < 0) {<= preAllocated.length - 4) {
1672 < 0) {<= preAllocated.length - 4) { if (s.hasMarkers && showMarkers) { 1747 < 0) {<= preAllocated.length - 4) { if (s.hasMarkers && showMarkers) {
1673 < 0) {<= preAllocated.length - 4) { if (options.marker && options.marker.radius) { 1748 < 0) {<= preAllocated.length - 4) { if (options.marker && options.marker.radius) {
1674 < 0) {<= preAllocated.length - 4) { shader.setPointSize(options.marker.radius * 2.0); 1749 < 0) {<= preAllocated.length - 4) { shader.setPointSize(options.marker.radius * 2.0);
1675 < 0) {<= preAllocated.length - 4) { } else { 1750 < 0) {<= preAllocated.length - 4) { } else {
1676 < 0) {<= preAllocated.length - 4) { shader.setPointSize(10); 1751 < 0) {<= preAllocated.length - 4) { shader.setPointSize(10);
1677 < 0) {<= preAllocated.length - 4) { } 1752 < 0) {<= preAllocated.length - 4) { }
1678 < 0) {<= preAllocated.length - 4) { shader.setDrawAsCircle(true); 1753 < 0) {<= preAllocated.length - 4) { shader.setDrawAsCircle(true);
1679 < 0) {<= preAllocated.length - 4) { vbuffer.render(s.from, s.to, 'POINTS'); 1754 < 0) {<= preAllocated.length - 4) { vbuffer.render(s.from, s.to, 'POINTS');
1680 < 0) {<= preAllocated.length - 4) { } 1755 < 0) {<= preAllocated.length - 4) { }
1681 < 0) {<= preAllocated.length - 4) { }); 1756 < 0) {<= preAllocated.length - 4) { });
1682 < 0) {<= preAllocated.length - 4) { 1757 < 0) {<= preAllocated.length - 4) {
1683 < 0) {<= preAllocated.length - 4) { vbuffer.destroy(); 1758 < 0) {<= preAllocated.length - 4) { vbuffer.destroy();
1684 < 0) {<= preAllocated.length - 4) { 1759 < 0) {<= preAllocated.length - 4) {
1685 < 0) {<= preAllocated.length - 4) { if (settings.timeRendering) { 1760 < 0) {<= preAllocated.length - 4) { if (settings.timeRendering) {
1686 < 0) {<= preAllocated.length - 4) { console.timeEnd('gl rendering'); //eslint-disable-line no-console 1761 < 0) {<= preAllocated.length - 4) { console.timeEnd('gl rendering'); //eslint-disable-line no-console
1687 < 0) {<= preAllocated.length - 4) { } 1762 < 0) {<= preAllocated.length - 4) { }
1688 < 0) {<= preAllocated.length - 4) { 1763 < 0) {<= preAllocated.length - 4) {
1689 < 0) {<= preAllocated.length - 4) { flush(); 1764 < 0) {<= preAllocated.length - 4) { flush();
1690 < 0) {<= preAllocated.length - 4) { 1765 < 0) {<= preAllocated.length - 4) {
1691 < 0) {<= preAllocated.length - 4) { if (postRenderCallback) { 1766 < 0) {<= preAllocated.length - 4) { if (postRenderCallback) {
1692 < 0) {<= preAllocated.length - 4) { postRenderCallback(); 1767 < 0) {<= preAllocated.length - 4) { postRenderCallback();
1693 < 0) {<= preAllocated.length - 4) { } 1768 < 0) {<= preAllocated.length - 4) { }
1694 < 0) {<= preAllocated.length - 4) { } 1769 < 0) {<= preAllocated.length - 4) { }
1695 < 0) {<= preAllocated.length - 4) { 1770 < 0) {<= preAllocated.length - 4) {
1696 < 0) {<= preAllocated.length - 4) { /* 1771 < 0) {<= preAllocated.length - 4) { /*
1697 < 0) {<= preAllocated.length - 4) { * Render the data when ready 1772 < 0) {<= preAllocated.length - 4) { * Render the data when ready
1698 < 0) {<= preAllocated.length - 4) { */ 1773 < 0) {<= preAllocated.length - 4) { */
1699 < 0) {<= preAllocated.length - 4) { function renderWhenReady(chart) { 1774 < 0) {<= preAllocated.length - 4) { function renderWhenReady(chart) {
1700 < 0) {<= preAllocated.length - 4) { clear(); 1775 < 0) {<= preAllocated.length - 4) { clear();
1701 < 0) {<= preAllocated.length - 4) { 1776 < 0) {<= preAllocated.length - 4) {
1702 < 0) {<= preAllocated.length - 4) { if (chart.renderer.forExport) { 1777 < 0) {<= preAllocated.length - 4) { if (chart.renderer.forExport) {
1703 < 0) {<= preAllocated.length - 4) { return render(chart); 1778 < 0) {<= preAllocated.length - 4) { return render(chart);
1704 < 0) {<= preAllocated.length - 4) { } 1779 < 0) {<= preAllocated.length - 4) { }
1705 < 0) {<= preAllocated.length - 4) { 1780 < 0) {<= preAllocated.length - 4) {
1706 < 0) {<= preAllocated.length - 4) { if (isInited) { 1781 < 0) {<= preAllocated.length - 4) { if (isInited) {
1707 < 0) {<= preAllocated.length - 4) { render(chart); 1782 < 0) {<= preAllocated.length - 4) { render(chart);
1708 < 0) {<= preAllocated.length - 4) { } else { 1783 < 0) {<= preAllocated.length - 4) { } else {
1709 < 0) {<= preAllocated.length - 4) { setTimeout(function() { 1784 < 0) {<= preAllocated.length - 4) { setTimeout(function() {
1710 < 0) {<= preAllocated.length - 4) { renderWhenReady(chart); 1785 < 0) {<= preAllocated.length - 4) { renderWhenReady(chart);
1711 < 0) {<= preAllocated.length - 4) { }, 1); 1786 < 0) {<= preAllocated.length - 4) { }, 1);
1712 < 0) {<= preAllocated.length - 4) { } 1787 < 0) {<= preAllocated.length - 4) { }
1713 < 0) {<= preAllocated.length - 4) { } 1788 < 0) {<= preAllocated.length - 4) { }
1714 < 0) {<= preAllocated.length - 4) { 1789 < 0) {<= preAllocated.length - 4) {
1715 < 0) {<= preAllocated.length - 4) { /* 1790 < 0) {<= preAllocated.length - 4) { /*
1716 < 0) {<= preAllocated.length - 4) { * Set the viewport size in pixels 1791 < 0) {<= preAllocated.length - 4) { * Set the viewport size in pixels
1717 < 0) {<= preAllocated.length - 4) { * Creates an orthographic perspective matrix and applies it. 1792 < 0) {<= preAllocated.length - 4) { * Creates an orthographic perspective matrix and applies it.
1718 < 0) {<= preAllocated.length - 4) { * @param w {Integer} - the width of the viewport 1793 < 0) {<= preAllocated.length - 4) { * @param w {Integer} - the width of the viewport
1719 < 0) {<= preAllocated.length - 4) { * @param h {Integer} - the height of the viewport 1794 < 0) {<= preAllocated.length - 4) { * @param h {Integer} - the height of the viewport
1720 < 0) {<= preAllocated.length - 4) { */ 1795 < 0) {<= preAllocated.length - 4) { */
1721 < 0) {<= preAllocated.length - 4) { function setSize(w, h) { 1796 < 0) {<= preAllocated.length - 4) { function setSize(w, h) {
1722 < 0) {<= preAllocated.length - 4) { // Skip if there's no change 1797 < 0) {<= preAllocated.length - 4) { // Skip if there's no change
1723 < 0) {<= preAllocated.length - 4) { if (width === w && h === h) { 1798 < 0) {<= preAllocated.length - 4) { if (width === w && h === h) {
1724 < 0) {<= preAllocated.length - 4) { return; 1799 < 0) {<= preAllocated.length - 4) { return;
1725 < 0) {<= preAllocated.length - 4) { } 1800 < 0) {<= preAllocated.length - 4) { }
1726 < 0) {<= preAllocated.length - 4) { 1801 < 0) {<= preAllocated.length - 4) {
1727 < 0) {<= preAllocated.length - 4) { width = w; 1802 < 0) {<= preAllocated.length - 4) { width = w;
1728 < 0) {<= preAllocated.length - 4) { height = h; 1803 < 0) {<= preAllocated.length - 4) { height = h;
1729 < 0) {<= preAllocated.length - 4) { 1804 < 0) {<= preAllocated.length - 4) {
1730 < 0) {<= preAllocated.length - 4) { shader.bind(); 1805 < 0) {<= preAllocated.length - 4) { shader.bind();
1731 < 0) {<= preAllocated.length - 4) { shader.setPMatrix(orthoMatrix(width, height)); 1806 < 0) {<= preAllocated.length - 4) { shader.setPMatrix(orthoMatrix(width, height));
1732 < 0) {<= preAllocated.length - 4) { } 1807 < 0) {<= preAllocated.length - 4) { }
1733 < 0) {<= preAllocated.length - 4) { 1808 < 0) {<= preAllocated.length - 4) {
1734 < 0) {<= preAllocated.length - 4) { /* 1809 < 0) {<= preAllocated.length - 4) { /*
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'
1746 < 0) {<= preAllocated.length - 4) { ]; 1820 < 0) {<= preAllocated.length - 4) { ];
1747 < 0) {<= preAllocated.length - 4) { 1821 < 0) {<= preAllocated.length - 4) {
1748 < 0) {<= preAllocated.length - 4) { isInited = false; 1822 < 0) {<= preAllocated.length - 4) { isInited = false;
1749 < 0) {<= preAllocated.length - 4) { 1823 < 0) {<= preAllocated.length - 4) {
1750 < 0) {<= preAllocated.length - 4) { if (!canvas) { 1824 < 0) {<= preAllocated.length - 4) { if (!canvas) {
1751 < 0) {<= preAllocated.length - 4) { return false; 1825 < 0) {<= preAllocated.length - 4) { return false;
1752 < 0) {<= preAllocated.length - 4) { } 1826 < 0) {<= preAllocated.length - 4) { }
1753 < 0) {<= preAllocated.length - 4) { 1827 < 0) {<= preAllocated.length - 4) {
1754 < 0) {<= preAllocated.length - 4) { if (settings.timeSetup) { 1828 < 0) {<= preAllocated.length - 4) { if (settings.timeSetup) {
1755 < 0) {<= preAllocated.length - 4) { console.time('gl setup'); //eslint-disable-line no-console 1829 < 0) {<= preAllocated.length - 4) { console.time('gl setup'); //eslint-disable-line no-console
1756 < 0) {<= preAllocated.length - 4) { } 1830 < 0) {<= preAllocated.length - 4) { }
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) { 1834 < 0) {<= preAllocated.length - 4) { if (gl) {
1761 < 0) {<= preAllocated.length - 4) { activeContext = contexts[i]; -  
1762 < 0) {<= preAllocated.length - 4) { break; 1835 < 0) {<= preAllocated.length - 4) { break;
1763 < 0) {<= preAllocated.length - 4) { } 1836 < 0) {<= preAllocated.length - 4) { }
1764 < 0) {<= preAllocated.length - 4) { } 1837 < 0) {<= preAllocated.length - 4) { }
1765 < 0) {<= preAllocated.length - 4) { 1838 < 0) {<= preAllocated.length - 4) {
1766 < 0) {<= preAllocated.length - 4) { if (gl) { 1839 < 0) {<= preAllocated.length - 4) { if (gl) {
1767 < 0) {<= preAllocated.length - 4) { if (!noFlush) { 1840 < 0) {<= preAllocated.length - 4) { if (!noFlush) {
1768 < 0) {<= preAllocated.length - 4) { flush(); 1841 < 0) {<= preAllocated.length - 4) { flush();
1769 < 0) {<= preAllocated.length - 4) { } 1842 < 0) {<= preAllocated.length - 4) { }
1770 < 0) {<= preAllocated.length - 4) { } else { 1843 < 0) {<= preAllocated.length - 4) { } else {
1771 < 0) {<= preAllocated.length - 4) { return false; 1844 < 0) {<= preAllocated.length - 4) { return false;
1772 < 0) {<= preAllocated.length - 4) { } 1845 < 0) {<= preAllocated.length - 4) { }
1773 < 0) {<= preAllocated.length - 4) { 1846 < 0) {<= preAllocated.length - 4) {
1774 < 0) {<= preAllocated.length - 4) { gl.enable(gl.BLEND); 1847 < 0) {<= preAllocated.length - 4) { gl.enable(gl.BLEND);
1775 < 0) {<= preAllocated.length - 4) { // gl.blendFunc(gl.SRC_ALPHA, gl.ONE); 1848 < 0) {<= preAllocated.length - 4) { // gl.blendFunc(gl.SRC_ALPHA, gl.ONE);
1776 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA); 1849 < 0) {<= preAllocated.length - 4) { gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);
1777 < 0) {<= preAllocated.length - 4) { gl.disable(gl.DEPTH_TEST); 1850 < 0) {<= preAllocated.length - 4) { gl.disable(gl.DEPTH_TEST);
1778 < 0) {<= preAllocated.length - 4) { gl.depthMask(gl.FALSE); 1851 < 0) {<= preAllocated.length - 4) { gl.depthMask(gl.FALSE);
1779 < 0) {<= preAllocated.length - 4) { 1852 < 0) {<= preAllocated.length - 4) {
1780 < 0) {<= preAllocated.length - 4) { shader = GLShader(gl); //eslint-disable-line new-cap 1853 < 0) {<= preAllocated.length - 4) { shader = GLShader(gl); //eslint-disable-line new-cap
1781 < 0) {<= preAllocated.length - 4) { vbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap 1854 < 0) {<= preAllocated.length - 4) { vbuffer = GLVertexBuffer(gl, shader); //eslint-disable-line new-cap
1782 < 0) {<= preAllocated.length - 4) { 1855 < 0) {<= preAllocated.length - 4) {
1783 < 0) {<= preAllocated.length - 4) { textureIsReady = false; 1856 < 0) {<= preAllocated.length - 4) { textureIsReady = false;
1784 < 0) {<= preAllocated.length - 4) { 1857 < 0) {<= preAllocated.length - 4) {
1785 < 0) {<= preAllocated.length - 4) { // Set up the circle texture used for bubbles 1858 < 0) {<= preAllocated.length - 4) { // Set up the circle texture used for bubbles
1786 < 0) {<= preAllocated.length - 4) { circleTextureHandle = gl.createTexture(); 1859 < 0) {<= preAllocated.length - 4) { circleTextureHandle = gl.createTexture();
1787 < 0) {<= preAllocated.length - 4) { 1860 < 0) {<= preAllocated.length - 4) {
1788 < 0) {<= preAllocated.length - 4) { // Draw the circle 1861 < 0) {<= preAllocated.length - 4) { // Draw the circle
1789 < 0) {<= preAllocated.length - 4) { circleTexture.width = 512; 1862 < 0) {<= preAllocated.length - 4) { circleTexture.width = 512;
1790 < 0) {<= preAllocated.length - 4) { circleTexture.height = 512; 1863 < 0) {<= preAllocated.length - 4) { circleTexture.height = 512;
1791 < 0) {<= preAllocated.length - 4) { 1864 < 0) {<= preAllocated.length - 4) {
1792 < 0) {<= preAllocated.length - 4) { circleCtx.fillStyle = '#FFF'; 1865 < 0) {<= preAllocated.length - 4) { circleCtx.fillStyle = '#FFF';
1793 < 0) {<= preAllocated.length - 4) { circleCtx.beginPath(); 1866 < 0) {<= preAllocated.length - 4) { circleCtx.beginPath();
1794 < 0) {<= preAllocated.length - 4) { circleCtx.arc(256, 256, 256, 0, 2 * Math.PI); 1867 < 0) {<= preAllocated.length - 4) { circleCtx.arc(256, 256, 256, 0, 2 * Math.PI);
1795 < 0) {<= preAllocated.length - 4) { circleCtx.fill(); 1868 < 0) {<= preAllocated.length - 4) { circleCtx.fill();
1796 < 0) {<= preAllocated.length - 4) { 1869 < 0) {<= preAllocated.length - 4) {
1797 < 0) {<= preAllocated.length - 4) { try { 1870 < 0) {<= preAllocated.length - 4) { try {
1798 < 0) {<= preAllocated.length - 4) { 1871 < 0) {<= preAllocated.length - 4) {
1799 < 0) {<= preAllocated.length - 4) { gl.bindTexture(gl.TEXTURE_2D, circleTextureHandle); 1872 < 0) {<= preAllocated.length - 4) { gl.bindTexture(gl.TEXTURE_2D, circleTextureHandle);
1800 < 0) {<= preAllocated.length - 4) { 1873 < 0) {<= preAllocated.length - 4) {
1801 < 0) {<= preAllocated.length - 4) { gl.texImage2D( 1874 < 0) {<= preAllocated.length - 4) { gl.texImage2D(
1802 < 0) {<= preAllocated.length - 4) { gl.TEXTURE_2D, 1875 < 0) {<= preAllocated.length - 4) { gl.TEXTURE_2D,
1803 < 0) {<= preAllocated.length - 4) { 0, 1876 < 0) {<= preAllocated.length - 4) { 0,
1804 < 0) {<= preAllocated.length - 4) { gl.RGBA, 1877 < 0) {<= preAllocated.length - 4) { gl.RGBA,
1805 < 0) {<= preAllocated.length - 4) { gl.RGBA, 1878 < 0) {<= preAllocated.length - 4) { gl.RGBA,
1806 < 0) {<= preAllocated.length - 4) { gl.UNSIGNED_BYTE, 1879 < 0) {<= preAllocated.length - 4) { gl.UNSIGNED_BYTE,
1807 < 0) {<= preAllocated.length - 4) { circleTexture 1880 < 0) {<= preAllocated.length - 4) { circleTexture
1808 < 0) {<= preAllocated.length - 4) { ); 1881 < 0) {<= preAllocated.length - 4) { );
1809 < 0) {<= preAllocated.length - 4) { 1882 < 0) {<= preAllocated.length - 4) {
1810 < 0) {<= preAllocated.length - 4) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); 1883 < 0) {<= preAllocated.length - 4) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
1811 < 0) {<= preAllocated.length - 4) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); 1884 < 0) {<= preAllocated.length - 4) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
1812 < 0) {<= preAllocated.length - 4) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); 1885 < 0) {<= preAllocated.length - 4) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
1813 < 0) {<= preAllocated.length - 4) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR); 1886 < 0) {<= preAllocated.length - 4) { gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_LINEAR);
1814 < 0) {<= preAllocated.length - 4) { 1887 < 0) {<= preAllocated.length - 4) {
1815 < 0) {<= preAllocated.length - 4) { gl.generateMipmap(gl.TEXTURE_2D); 1888 < 0) {<= preAllocated.length - 4) { gl.generateMipmap(gl.TEXTURE_2D);
1816 < 0) {<= preAllocated.length - 4) { 1889 < 0) {<= preAllocated.length - 4) {
1817 < 0) {<= preAllocated.length - 4) { gl.bindTexture(gl.TEXTURE_2D, null); 1890 < 0) {<= preAllocated.length - 4) { gl.bindTexture(gl.TEXTURE_2D, null);
1818 < 0) {<= preAllocated.length - 4) { 1891 < 0) {<= preAllocated.length - 4) {
1819 < 0) {<= preAllocated.length - 4) { textureIsReady = true; 1892 < 0) {<= preAllocated.length - 4) { textureIsReady = true;
1820 < 0) {<= preAllocated.length - 4) { } catch (e) {} 1893 < 0) {<= preAllocated.length - 4) { } catch (e) {}
1821 < 0) {<= preAllocated.length - 4) { 1894 < 0) {<= preAllocated.length - 4) {
1822 < 0) {<= preAllocated.length - 4) { isInited = true; 1895 < 0) {<= preAllocated.length - 4) { isInited = true;
1823 < 0) {<= preAllocated.length - 4) { 1896 < 0) {<= preAllocated.length - 4) {
1824 < 0) {<= preAllocated.length - 4) { if (settings.timeSetup) { 1897 < 0) {<= preAllocated.length - 4) { if (settings.timeSetup) {
1825 < 0) {<= preAllocated.length - 4) { console.timeEnd('gl setup'); //eslint-disable-line no-console 1898 < 0) {<= preAllocated.length - 4) { console.timeEnd('gl setup'); //eslint-disable-line no-console
1826 < 0) {<= preAllocated.length - 4) { } 1899 < 0) {<= preAllocated.length - 4) { }
1827 < 0) {<= preAllocated.length - 4) { 1900 < 0) {<= preAllocated.length - 4) {
1828 < 0) {<= preAllocated.length - 4) { return true; 1901 < 0) {<= preAllocated.length - 4) { return true;
1829 < 0) {<= preAllocated.length - 4) { } 1902 < 0) {<= preAllocated.length - 4) { }
1830 < 0) {<= preAllocated.length - 4) { 1903 < 0) {<= preAllocated.length - 4) {
1831 < 0) {<= preAllocated.length - 4) { /* 1904 < 0) {<= preAllocated.length - 4) { /*
1832 < 0) {<= preAllocated.length - 4) { * Check if we have a valid OGL context 1905 < 0) {<= preAllocated.length - 4) { * Check if we have a valid OGL context
1833 < 0) {<= preAllocated.length - 4) { * @returns {Boolean} - true if the context is valid 1906 < 0) {<= preAllocated.length - 4) { * @returns {Boolean} - true if the context is valid
1834 < 0) {<= preAllocated.length - 4) { */ 1907 < 0) {<= preAllocated.length - 4) { */
1835 < 0) {<= preAllocated.length - 4) { function valid() { 1908 < 0) {<= preAllocated.length - 4) { function valid() {
1836 < 0) {<= preAllocated.length - 4) { return gl !== false; 1909 < 0) {<= preAllocated.length - 4) { return gl !== false;
1837 < 0) {<= preAllocated.length - 4) { } 1910 < 0) {<= preAllocated.length - 4) { }
1838 < 0) {<= preAllocated.length - 4) { 1911 < 0) {<= preAllocated.length - 4) {
1839 < 0) {<= preAllocated.length - 4) { /* 1912 < 0) {<= preAllocated.length - 4) { /*
1840 < 0) {<= preAllocated.length - 4) { * Check if the renderer has been initialized 1913 < 0) {<= preAllocated.length - 4) { * Check if the renderer has been initialized
1841 < 0) {<= preAllocated.length - 4) { * @returns {Boolean} - true if it has, false if not 1914 < 0) {<= preAllocated.length - 4) { * @returns {Boolean} - true if it has, false if not
1842 < 0) {<= preAllocated.length - 4) { */ 1915 < 0) {<= preAllocated.length - 4) { */
1843 < 0) {<= preAllocated.length - 4) { function inited() { 1916 < 0) {<= preAllocated.length - 4) { function inited() {
1844 < 0) {<= preAllocated.length - 4) { return isInited; 1917 < 0) {<= preAllocated.length - 4) { return isInited;
1845 < 0) {<= preAllocated.length - 4) { } 1918 < 0) {<= preAllocated.length - 4) { }
1846 < 0) {<= preAllocated.length - 4) { 1919 < 0) {<= preAllocated.length - 4) {
1847 < 0) {<= preAllocated.length - 4) { function destroy() { 1920 < 0) {<= preAllocated.length - 4) { function destroy() {
1848 < 0) {<= preAllocated.length - 4) { vbuffer.destroy(); 1921 < 0) {<= preAllocated.length - 4) { vbuffer.destroy();
1849 < 0) {<= preAllocated.length - 4) { shader.destroy(); 1922 < 0) {<= preAllocated.length - 4) { shader.destroy();
1850 < 0) {<= preAllocated.length - 4) { if (gl) { 1923 < 0) {<= preAllocated.length - 4) { if (gl) {
1851 < 0) {<= preAllocated.length - 4) { //gl.deleteTexture(circleTextureHandle); 1924 < 0) {<= preAllocated.length - 4) { //gl.deleteTexture(circleTextureHandle);
1852 < 0) {<= preAllocated.length - 4) { } 1925 < 0) {<= preAllocated.length - 4) { }
1853 < 0) {<= preAllocated.length - 4) { } 1926 < 0) {<= preAllocated.length - 4) { }
1854 < 0) {<= preAllocated.length - 4) { 1927 < 0) {<= preAllocated.length - 4) {
1855 < 0) {<= preAllocated.length - 4) { //////////////////////////////////////////////////////////////////////////// 1928 < 0) {<= preAllocated.length - 4) { ////////////////////////////////////////////////////////////////////////////
1856 < 0) {<= preAllocated.length - 4) { exports = { 1929 < 0) {<= preAllocated.length - 4) { exports = {
1857 < 0) {<= preAllocated.length - 4) { allocateBufferForSingleSeries: allocateBufferForSingleSeries, 1930 < 0) {<= preAllocated.length - 4) { allocateBufferForSingleSeries: allocateBufferForSingleSeries,
1858 < 0) {<= preAllocated.length - 4) { pushSeries: pushSeries, 1931 < 0) {<= preAllocated.length - 4) { pushSeries: pushSeries,
1859 < 0) {<= preAllocated.length - 4) { setSize: setSize, 1932 < 0) {<= preAllocated.length - 4) { setSize: setSize,
1860 < 0) {<= preAllocated.length - 4) { inited: inited, 1933 < 0) {<= preAllocated.length - 4) { inited: inited,
1861 < 0) {<= preAllocated.length - 4) { setThreshold: setThreshold, 1934 < 0) {<= preAllocated.length - 4) { setThreshold: setThreshold,
1862 < 0) {<= preAllocated.length - 4) { init: init, 1935 < 0) {<= preAllocated.length - 4) { init: init,
1863 < 0) {<= preAllocated.length - 4) { render: renderWhenReady, 1936 < 0) {<= preAllocated.length - 4) { render: renderWhenReady,
1864 < 0) {<= preAllocated.length - 4) { settings: settings, 1937 < 0) {<= preAllocated.length - 4) { settings: settings,
1865 < 0) {<= preAllocated.length - 4) { valid: valid, 1938 < 0) {<= preAllocated.length - 4) { valid: valid,
1866 < 0) {<= preAllocated.length - 4) { clear: clear, 1939 < 0) {<= preAllocated.length - 4) { clear: clear,
1867 < 0) {<= preAllocated.length - 4) { flush: flush, 1940 < 0) {<= preAllocated.length - 4) { flush: flush,
1868 < 0) {<= preAllocated.length - 4) { setXAxis: setXAxis, 1941 < 0) {<= preAllocated.length - 4) { setXAxis: setXAxis,
1869 < 0) {<= preAllocated.length - 4) { setYAxis: setYAxis, 1942 < 0) {<= preAllocated.length - 4) { setYAxis: setYAxis,
1870 < 0) {<= preAllocated.length - 4) { data: data, 1943 < 0) {<= preAllocated.length - 4) { data: data,
1871 < 0) {<= preAllocated.length - 4) { gl: getGL, 1944 < 0) {<= preAllocated.length - 4) { gl: getGL,
1872 < 0) {<= preAllocated.length - 4) { allocateBuffer: allocateBuffer, 1945 < 0) {<= preAllocated.length - 4) { allocateBuffer: allocateBuffer,
1873 < 0) {<= preAllocated.length - 4) { destroy: destroy, 1946 < 0) {<= preAllocated.length - 4) { destroy: destroy,
1874 < 0) {<= preAllocated.length - 4) { setOptions: setOptions 1947 < 0) {<= preAllocated.length - 4) { setOptions: setOptions
1875 < 0) {<= preAllocated.length - 4) { }; 1948 < 0) {<= preAllocated.length - 4) { };
1876 < 0) {<= preAllocated.length - 4) { 1949 < 0) {<= preAllocated.length - 4) {
1877 < 0) {<= preAllocated.length - 4) { return exports; 1950 < 0) {<= preAllocated.length - 4) { return exports;
1878 < 0) {<= preAllocated.length - 4) { } 1951 < 0) {<= preAllocated.length - 4) { }
1879 < 0) {<= preAllocated.length - 4) { 1952 < 0) {<= preAllocated.length - 4) {
1880 < 0) {<= preAllocated.length - 4) { // END OF WEBGL ABSTRACTIONS 1953 < 0) {<= preAllocated.length - 4) { // END OF WEBGL ABSTRACTIONS
1881 < 0) {<= preAllocated.length - 4) { //////////////////////////////////////////////////////////////////////////////// 1954 < 0) {<= preAllocated.length - 4) { ////////////////////////////////////////////////////////////////////////////////
1882 < 0) {<= preAllocated.length - 4) { 1955 < 0) {<= preAllocated.length - 4) {
1883 < 0) {<= preAllocated.length - 4) { /* 1956 < 0) {<= preAllocated.length - 4) { /*
1884 < 0) {<= preAllocated.length - 4) { * Create a canvas + context and attach it to the target 1957 < 0) {<= preAllocated.length - 4) { * Create a canvas + context and attach it to the target
1885 < 0) {<= preAllocated.length - 4) { * @param target {Highcharts.Chart|Highcharts.Series} - the canvas target 1958 < 0) {<= preAllocated.length - 4) { * @param target {Highcharts.Chart|Highcharts.Series} - the canvas target
1886 < 0) {<= preAllocated.length - 4) { * @param chart {Highcharts.Chart} - the chart 1959 < 0) {<= preAllocated.length - 4) { * @param chart {Highcharts.Chart} - the chart
1887 < 0) {<= preAllocated.length - 4) { */ 1960 < 0) {<= preAllocated.length - 4) { */
1888 < 0) {<= preAllocated.length - 4) { function createAndAttachRenderer(chart, series) { 1961 < 0) {<= preAllocated.length - 4) { function createAndAttachRenderer(chart, series) {
1889 < 0) {<= preAllocated.length - 4) { var width = chart.chartWidth, 1962 < 0) {<= preAllocated.length - 4) { var width = chart.chartWidth,
1890 < 0) {<= preAllocated.length - 4) { height = chart.chartHeight, 1963 < 0) {<= preAllocated.length - 4) { height = chart.chartHeight,
1891 < 0) {<= preAllocated.length - 4) { target = chart, 1964 < 0) {<= preAllocated.length - 4) { target = chart,
1892 < 0) {<= preAllocated.length - 4) { targetGroup = chart.seriesGroup || series.group, 1965 < 0) {<= preAllocated.length - 4) { targetGroup = chart.seriesGroup || series.group,
1893 < 0) {<= preAllocated.length - 4) { swapXY = function(proceed, x, y, a, b, c, d) { 1966 < 0) {<= preAllocated.length - 4) { swapXY = function(proceed, x, y, a, b, c, d) {
1894 < 0) {<= preAllocated.length - 4) { proceed.call(series, y, x, a, b, c, d); 1967 < 0) {<= preAllocated.length - 4) { proceed.call(series, y, x, a, b, c, d);
1895 < 0) {<= preAllocated.length - 4) { }; 1968 < 0) {<= preAllocated.length - 4) { };
1896 < 0) {<= preAllocated.length - 4) { 1969 < 0) {<= preAllocated.length - 4) {
1897 < 0) {<= preAllocated.length - 4) { if (isChartSeriesBoosting(chart)) { 1970 < 0) {<= preAllocated.length - 4) { if (isChartSeriesBoosting(chart)) {
1898 < 0) {<= preAllocated.length - 4) { target = chart; 1971 < 0) {<= preAllocated.length - 4) { target = chart;
1899 < 0) {<= preAllocated.length - 4) { } else { 1972 < 0) {<= preAllocated.length - 4) { } else {
1900 < 0) {<= preAllocated.length - 4) { target = series; 1973 < 0) {<= preAllocated.length - 4) { target = series;
1901 < 0) {<= preAllocated.length - 4) { } 1974 < 0) {<= preAllocated.length - 4) { }
1902 < 0) {<= preAllocated.length - 4) { 1975 < 0) {<= preAllocated.length - 4) {
1903 < 0) {<= preAllocated.length - 4) { if (target.ogl) { 1976 < 0) {<= preAllocated.length - 4) { if (target.ogl) {
1904 < 0) {<= preAllocated.length - 4) { //target.ogl.destroy(); 1977 < 0) {<= preAllocated.length - 4) { //target.ogl.destroy();
1905 < 0) {<= preAllocated.length - 4) { } 1978 < 0) {<= preAllocated.length - 4) { }
1906 < 0) {<= preAllocated.length - 4) { 1979 < 0) {<= preAllocated.length - 4) {
1907 < 0) {<= preAllocated.length - 4) { if (!target.image) { 1980 < 0) {<= preAllocated.length - 4) { if (!target.image) {
1908 < 0) {<= preAllocated.length - 4) { target.canvas = doc.createElement('canvas'); 1981 < 0) {<= preAllocated.length - 4) { target.canvas = doc.createElement('canvas');
1909 < 0) {<= preAllocated.length - 4) { 1982 < 0) {<= preAllocated.length - 4) {
1910 < 0) {<= preAllocated.length - 4) { target.image = chart.renderer.image( 1983 < 0) {<= preAllocated.length - 4) { target.image = chart.renderer.image(
1911 < 0) {<= preAllocated.length - 4) { '', 1984 < 0) {<= preAllocated.length - 4) { '',
1912 < 0) {<= preAllocated.length - 4) { 0, 1985 < 0) {<= preAllocated.length - 4) { 0,
1913 < 0) {<= preAllocated.length - 4) { 0, 1986 < 0) {<= preAllocated.length - 4) { 0,
1914 < 0) {<= preAllocated.length - 4) { width, 1987 < 0) {<= preAllocated.length - 4) { width,
1915 < 0) {<= preAllocated.length - 4) { height 1988 < 0) {<= preAllocated.length - 4) { height
1916 < 0) {<= preAllocated.length - 4) { ).add(targetGroup); 1989 < 0) {<= preAllocated.length - 4) { ).add(targetGroup);
1917 < 0) {<= preAllocated.length - 4) { 1990 < 0) {<= preAllocated.length - 4) {
1918 < 0) {<= preAllocated.length - 4) { target.boostClipRect = chart.renderer.clipRect( 1991 < 0) {<= preAllocated.length - 4) { target.boostClipRect = chart.renderer.clipRect(
1919 < 0) {<= preAllocated.length - 4) { chart.plotLeft, 1992 < 0) {<= preAllocated.length - 4) { chart.plotLeft,
1920 < 0) {<= preAllocated.length - 4) { chart.plotTop, 1993 < 0) {<= preAllocated.length - 4) { chart.plotTop,
1921 < 0) {<= preAllocated.length - 4) { chart.plotWidth, 1994 < 0) {<= preAllocated.length - 4) { chart.plotWidth,
1922 < 0) {<= preAllocated.length - 4) { chart.chartHeight 1995 < 0) {<= preAllocated.length - 4) { chart.chartHeight
1923 < 0) {<= preAllocated.length - 4) { ); 1996 < 0) {<= preAllocated.length - 4) { );
1924 < 0) {<= preAllocated.length - 4) { 1997 < 0) {<= preAllocated.length - 4) {
1925 < 0) {<= preAllocated.length - 4) { target.image.clip(target.boostClipRect); 1998 < 0) {<= preAllocated.length - 4) { target.image.clip(target.boostClipRect);
1926 < 0) {<= preAllocated.length - 4) { 1999 < 0) {<= preAllocated.length - 4) {
1927 < 0) {<= preAllocated.length - 4) { if (target.inverted) { 2000 < 0) {<= preAllocated.length - 4) { if (target.inverted) {
1928 < 0) {<= preAllocated.length - 4) { each(['moveTo', 'lineTo', 'rect', 'arc'], function(fn) { 2001 < 0) {<= preAllocated.length - 4) { each(['moveTo', 'lineTo', 'rect', 'arc'], function(fn) {
1929 < 0) {<= preAllocated.length - 4) { wrap(false, fn, swapXY); 2002 < 0) {<= preAllocated.length - 4) { wrap(false, fn, swapXY);
1930 < 0) {<= preAllocated.length - 4) { }); 2003 < 0) {<= preAllocated.length - 4) { });
1931 < 0) {<= preAllocated.length - 4) { } 2004 < 0) {<= preAllocated.length - 4) { }
1932 < 0) {<= preAllocated.length - 4) { 2005 < 0) {<= preAllocated.length - 4) {
1933 < 0) {<= preAllocated.length - 4) { if (target instanceof H.Chart) { 2006 < 0) {<= preAllocated.length - 4) { if (target instanceof H.Chart) {
1934 < 0) {<= preAllocated.length - 4) { target.markerGroup = target.renderer.g().add(targetGroup); 2007 < 0) {<= preAllocated.length - 4) { target.markerGroup = target.renderer.g().add(targetGroup);
1935 < 0) {<= preAllocated.length - 4) { 2008 < 0) {<= preAllocated.length - 4) {
1936 < 0) {<= preAllocated.length - 4) { target.markerGroup.translate(series.xAxis.pos, series.yAxis.pos); 2009 < 0) {<= preAllocated.length - 4) { target.markerGroup.translate(series.xAxis.pos, series.yAxis.pos);
1937 < 0) {<= preAllocated.length - 4) { } 2010 < 0) {<= preAllocated.length - 4) { }
1938 < 0) {<= preAllocated.length - 4) { } 2011 < 0) {<= preAllocated.length - 4) { }
1939 < 0) {<= preAllocated.length - 4) { 2012 < 0) {<= preAllocated.length - 4) {
1940 < 0) {<= preAllocated.length - 4) { target.canvas.width = width; 2013 < 0) {<= preAllocated.length - 4) { target.canvas.width = width;
1941 < 0) {<= preAllocated.length - 4) { target.canvas.height = height; 2014 < 0) {<= preAllocated.length - 4) { target.canvas.height = height;
1942 < 0) {<= preAllocated.length - 4) { 2015 < 0) {<= preAllocated.length - 4) {
1943 < 0) {<= preAllocated.length - 4) { target.image.attr({ 2016 < 0) {<= preAllocated.length - 4) { target.image.attr({
1944 < 0) {<= preAllocated.length - 4) { x: 0, 2017 < 0) {<= preAllocated.length - 4) { x: 0,
1945 < 0) {<= preAllocated.length - 4) { y: 0, 2018 < 0) {<= preAllocated.length - 4) { y: 0,
1946 < 0) {<= preAllocated.length - 4) { width: width, 2019 < 0) {<= preAllocated.length - 4) { width: width,
1947 < 0) {<= preAllocated.length - 4) { height: height, 2020 < 0) {<= preAllocated.length - 4) { height: height,
1948 < 0) {<= preAllocated.length - 4) { style: 'pointer-events: none' 2021 < 0) {<= preAllocated.length - 4) { style: 'pointer-events: none'
1949 < 0) {<= preAllocated.length - 4) { }); 2022 < 0) {<= preAllocated.length - 4) { });
1950 < 0) {<= preAllocated.length - 4) { 2023 < 0) {<= preAllocated.length - 4) {
1951 < 0) {<= preAllocated.length - 4) { target.boostClipRect.attr({ 2024 < 0) {<= preAllocated.length - 4) { target.boostClipRect.attr({
1952 < 0) {<= preAllocated.length - 4) { x: chart.plotLeft, 2025 < 0) {<= preAllocated.length - 4) { x: chart.plotLeft,
1953 < 0) {<= preAllocated.length - 4) { y: chart.plotTop, 2026 < 0) {<= preAllocated.length - 4) { y: chart.plotTop,
1954 < 0) {<= preAllocated.length - 4) { width: chart.plotWidth, 2027 < 0) {<= preAllocated.length - 4) { width: chart.plotWidth,
1955 < 0) {<= preAllocated.length - 4) { height: chart.chartHeight 2028 < 0) {<= preAllocated.length - 4) { height: chart.chartHeight
1956 < 0) {<= preAllocated.length - 4) { }); 2029 < 0) {<= preAllocated.length - 4) { });
1957 < 0) {<= preAllocated.length - 4) { 2030 < 0) {<= preAllocated.length - 4) {
1958 < 0) {<= preAllocated.length - 4) { if (!target.ogl) { 2031 < 0) {<= preAllocated.length - 4) { if (!target.ogl) {
1959 < 0) {<= preAllocated.length - 4) { 2032 < 0) {<= preAllocated.length - 4) {
1960 < 0) {<= preAllocated.length - 4) { 2033 < 0) {<= preAllocated.length - 4) {
1961 < 0) {<= preAllocated.length - 4) { target.ogl = GLRenderer(function() { // eslint-disable-line new-cap 2034 < 0) {<= preAllocated.length - 4) { target.ogl = GLRenderer(function() { // eslint-disable-line new-cap
1962 < 0) {<= preAllocated.length - 4) { target.image.attr({ 2035 < 0) {<= preAllocated.length - 4) { target.image.attr({
1963 < 0) {<= preAllocated.length - 4) { href: target.canvas.toDataURL('image/png') 2036 < 0) {<= preAllocated.length - 4) { href: target.canvas.toDataURL('image/png')
1964 < 0) {<= preAllocated.length - 4) { }); 2037 < 0) {<= preAllocated.length - 4) { });
1965 < 0) {<= preAllocated.length - 4) { }); //eslint-disable-line new-cap 2038 < 0) {<= preAllocated.length - 4) { }); //eslint-disable-line new-cap
1966 < 0) {<= preAllocated.length - 4) { 2039 < 0) {<= preAllocated.length - 4) {
1967 < 0) {<= preAllocated.length - 4) { target.ogl.init(target.canvas); 2040 < 0) {<= preAllocated.length - 4) { target.ogl.init(target.canvas);
1968 < 0) {<= preAllocated.length - 4) { // target.ogl.clear(); 2041 < 0) {<= preAllocated.length - 4) { // target.ogl.clear();
1969 < 0) {<= preAllocated.length - 4) { target.ogl.setOptions(chart.options.boost || {}); 2042 < 0) {<= preAllocated.length - 4) { target.ogl.setOptions(chart.options.boost || {});
1970 < 0) {<= preAllocated.length - 4) { 2043 < 0) {<= preAllocated.length - 4) {
1971 < 0) {<= preAllocated.length - 4) { if (target instanceof H.Chart) { 2044 < 0) {<= preAllocated.length - 4) { if (target instanceof H.Chart) {
1972 < 0) {<= preAllocated.length - 4) { target.ogl.allocateBuffer(chart); 2045 < 0) {<= preAllocated.length - 4) { target.ogl.allocateBuffer(chart);
1973 < 0) {<= preAllocated.length - 4) { } 2046 < 0) {<= preAllocated.length - 4) { }
1974 < 0) {<= preAllocated.length - 4) { } 2047 < 0) {<= preAllocated.length - 4) { }
1975 < 0) {<= preAllocated.length - 4) { 2048 < 0) {<= preAllocated.length - 4) {
1976 < 0) {<= preAllocated.length - 4) { target.ogl.setSize(width, height); 2049 < 0) {<= preAllocated.length - 4) { target.ogl.setSize(width, height);
1977 < 0) {<= preAllocated.length - 4) { 2050 < 0) {<= preAllocated.length - 4) {
1978 < 0) {<= preAllocated.length - 4) { return target.ogl; 2051 < 0) {<= preAllocated.length - 4) { return target.ogl;
1979 < 0) {<= preAllocated.length - 4) { } 2052 < 0) {<= preAllocated.length - 4) { }
1980 < 0) {<= preAllocated.length - 4) { 2053 < 0) {<= preAllocated.length - 4) {
1981 < 0) {<= preAllocated.length - 4) { /* 2054 < 0) {<= preAllocated.length - 4) { /*
1982 < 0) {<= preAllocated.length - 4) { * Performs the actual render if the renderer is 2055 < 0) {<= preAllocated.length - 4) { * Performs the actual render if the renderer is
1983 < 0) {<= preAllocated.length - 4) { * attached to the series. 2056 < 0) {<= preAllocated.length - 4) { * attached to the series.
1984 < 0) {<= preAllocated.length - 4) { * @param renderer {OGLRenderer} - the renderer 2057 < 0) {<= preAllocated.length - 4) { * @param renderer {OGLRenderer} - the renderer
1985 < 0) {<= preAllocated.length - 4) { * @param series {Highcharts.Series} - the series 2058 < 0) {<= preAllocated.length - 4) { * @param series {Highcharts.Series} - the series
1986 < 0) {<= preAllocated.length - 4) { */ 2059 < 0) {<= preAllocated.length - 4) { */
1987 < 0) {<= preAllocated.length - 4) { function renderIfNotSeriesBoosting(renderer, series, chart) { 2060 < 0) {<= preAllocated.length - 4) { function renderIfNotSeriesBoosting(renderer, series, chart) {
1988 < 0) {<= preAllocated.length - 4) { if (renderer && 2061 < 0) {<= preAllocated.length - 4) { if (renderer &&
1989 < 0) {<= preAllocated.length - 4) { series.image && 2062 < 0) {<= preAllocated.length - 4) { series.image &&
1990 < 0) {<= preAllocated.length - 4) { series.canvas && 2063 < 0) {<= preAllocated.length - 4) { series.canvas &&
1991 < 0) {<= preAllocated.length - 4) { !isChartSeriesBoosting(chart || series.chart) 2064 < 0) {<= preAllocated.length - 4) { !isChartSeriesBoosting(chart || series.chart)
1992 < 0) {<= preAllocated.length - 4) { ) { 2065 < 0) {<= preAllocated.length - 4) { ) {
1993 < 0) {<= preAllocated.length - 4) { renderer.render(chart || series.chart); 2066 < 0) {<= preAllocated.length - 4) { renderer.render(chart || series.chart);
1994 < 0) {<= preAllocated.length - 4) { } 2067 < 0) {<= preAllocated.length - 4) { }
1995 < 0) {<= preAllocated.length - 4) { } 2068 < 0) {<= preAllocated.length - 4) { }
1996 < 0) {<= preAllocated.length - 4) { 2069 < 0) {<= preAllocated.length - 4) {
1997 < 0) {<= preAllocated.length - 4) { function allocateIfNotSeriesBoosting(renderer, series) { 2070 < 0) {<= preAllocated.length - 4) { function allocateIfNotSeriesBoosting(renderer, series) {
1998 < 0) {<= preAllocated.length - 4) { if (renderer && 2071 < 0) {<= preAllocated.length - 4) { if (renderer &&
1999 < 0) {<= preAllocated.length - 4) { series.image && 2072 < 0) {<= preAllocated.length - 4) { series.image &&
2000 < 0) {<= preAllocated.length - 4) { series.canvas && 2073 < 0) {<= preAllocated.length - 4) { series.canvas &&
2001 < 0) {<= preAllocated.length - 4) { !isChartSeriesBoosting(series.chart) 2074 < 0) {<= preAllocated.length - 4) { !isChartSeriesBoosting(series.chart)
2002 < 0) {<= preAllocated.length - 4) { ) { 2075 < 0) {<= preAllocated.length - 4) { ) {
2003 < 0) {<= preAllocated.length - 4) { renderer.allocateBufferForSingleSeries(series); 2076 < 0) {<= preAllocated.length - 4) { renderer.allocateBufferForSingleSeries(series);
2004 < 0) {<= preAllocated.length - 4) { } 2077 < 0) {<= preAllocated.length - 4) { }
2005 < 0) {<= preAllocated.length - 4) { } 2078 < 0) {<= preAllocated.length - 4) { }
2006 < 0) {<= preAllocated.length - 4) { 2079 < 0) {<= preAllocated.length - 4) {
2007 < 0) {<= preAllocated.length - 4) { /* 2080 < 0) {<= preAllocated.length - 4) { /*
2008 < 0) {<= preAllocated.length - 4) { * An "async" foreach loop. 2081 < 0) {<= preAllocated.length - 4) { * An "async" foreach loop.
2009 < 0) {<= preAllocated.length - 4) { * Uses a setTimeout to keep the loop from blocking the UI thread 2082 < 0) {<= preAllocated.length - 4) { * Uses a setTimeout to keep the loop from blocking the UI thread
2010 < 0) {<= preAllocated.length - 4) { * @param arr {Array} - the array to loop through 2083 < 0) {<= preAllocated.length - 4) { * @param arr {Array} - the array to loop through
2011 < 0) {<= preAllocated.length - 4) { * @param fn {Function} - the callback to call for each item 2084 < 0) {<= preAllocated.length - 4) { * @param fn {Function} - the callback to call for each item
2012 < 0) {<= preAllocated.length - 4) { * @param finalFunc {Function} - the callback to call when done 2085 < 0) {<= preAllocated.length - 4) { * @param finalFunc {Function} - the callback to call when done
2013 < 0) {<= preAllocated.length - 4) { * @param chunkSize {Number} - the number of iterations per. timeout 2086 < 0) {<= preAllocated.length - 4) { * @param chunkSize {Number} - the number of iterations per. timeout
2014 < 0) {<= preAllocated.length - 4) { * @param i {Number} - the current index 2087 < 0) {<= preAllocated.length - 4) { * @param i {Number} - the current index
2015 < 0) {<= preAllocated.length - 4) { * @param noTimeout {Boolean} - set to true to skip timeouts 2088 < 0) {<= preAllocated.length - 4) { * @param noTimeout {Boolean} - set to true to skip timeouts
2016 < 0) {<= preAllocated.length - 4) { */ 2089 < 0) {<= preAllocated.length - 4) { */
2017 < 0) {<= preAllocated.length - 4) { function eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout) { 2090 < 0) {<= preAllocated.length - 4) { function eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout) {
2018 < 0) {<= preAllocated.length - 4) { i = i || 0; 2091 < 0) {<= preAllocated.length - 4) { i = i || 0;
2019 < 0) {<= preAllocated.length - 4) { chunkSize = chunkSize || CHUNK_SIZE; 2092 < 0) {<= preAllocated.length - 4) { chunkSize = chunkSize || CHUNK_SIZE;
2020 < 0) {<= preAllocated.length - 4) { 2093 < 0) {<= preAllocated.length - 4) {
2021 < 0) {<= preAllocated.length - 4) { var threshold = i + chunkSize, 2094 < 0) {<= preAllocated.length - 4) { var threshold = i + chunkSize,
2022 < 0) {<= preAllocated.length - 4) { proceed = true; 2095 < 0) {<= preAllocated.length - 4) { proceed = true;
2023 < 0) {<= preAllocated.length - 4) { 2096 < 0) {<= preAllocated.length - 4) {
2024 < 0) {<= preAllocated.length - 4) { while (proceed && i < threshold && i < arr.length) { 2097 < 0) {<= preAllocated.length - 4) { while (proceed && i < threshold && i < arr.length) {
2025 < 0) {<= preAllocated.length - 4) { proceed = fn(arr[i], i); 2098 < 0) {<= preAllocated.length - 4) { proceed = fn(arr[i], i);
2026 < 0) {<= preAllocated.length - 4) { ++i; 2099 < 0) {<= preAllocated.length - 4) { ++i;
2027 < 0) {<= preAllocated.length - 4) { } 2100 < 0) {<= preAllocated.length - 4) { }
2028 < 0) {<= preAllocated.length - 4) { if (proceed) { 2101 < 0) {<= preAllocated.length - 4) { if (proceed) {
2029 < 0) {<= preAllocated.length - 4) { if (i < arr.length) { 2102 < 0) {<= preAllocated.length - 4) { if (i < arr.length) {
2030 < 0) {<= preAllocated.length - 4) { 2103 < 0) {<= preAllocated.length - 4) {
2031 < 0) {<= preAllocated.length - 4) { if (noTimeout) { 2104 < 0) {<= preAllocated.length - 4) { if (noTimeout) {
2032 < 0) {<= preAllocated.length - 4) { eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout); 2105 < 0) {<= preAllocated.length - 4) { eachAsync(arr, fn, finalFunc, chunkSize, i, noTimeout);
2033 < 0) {<= preAllocated.length - 4) { } else if (win.requestAnimationFrame) { 2106 < 0) {<= preAllocated.length - 4) { } else if (win.requestAnimationFrame) {
2034 < 0) {<= preAllocated.length - 4) { //If available, do requestAnimationFrame - shaves off a few ms 2107 < 0) {<= preAllocated.length - 4) { //If available, do requestAnimationFrame - shaves off a few ms
2035 < 0) {<= preAllocated.length - 4) { win.requestAnimationFrame(function() { 2108 < 0) {<= preAllocated.length - 4) { win.requestAnimationFrame(function() {
2036 < 0) {<= preAllocated.length - 4) { eachAsync(arr, fn, finalFunc, chunkSize, i); 2109 < 0) {<= preAllocated.length - 4) { eachAsync(arr, fn, finalFunc, chunkSize, i);
2037 < 0) {<= preAllocated.length - 4) { }); 2110 < 0) {<= preAllocated.length - 4) { });
2038 < 0) {<= preAllocated.length - 4) { } else { 2111 < 0) {<= preAllocated.length - 4) { } else {
2039 < 0) {<= preAllocated.length - 4) { setTimeout(function() { 2112 < 0) {<= preAllocated.length - 4) { setTimeout(function() {
2040 < 0) {<= preAllocated.length - 4) { eachAsync(arr, fn, finalFunc, chunkSize, i); 2113 < 0) {<= preAllocated.length - 4) { eachAsync(arr, fn, finalFunc, chunkSize, i);
2041 < 0) {<= preAllocated.length - 4) { }); 2114 < 0) {<= preAllocated.length - 4) { });
2042 < 0) {<= preAllocated.length - 4) { } 2115 < 0) {<= preAllocated.length - 4) { }
2043 < 0) {<= preAllocated.length - 4) { 2116 < 0) {<= preAllocated.length - 4) {
2044 < 0) {<= preAllocated.length - 4) { } else if (finalFunc) { 2117 < 0) {<= preAllocated.length - 4) { } else if (finalFunc) {
2045 < 0) {<= preAllocated.length - 4) { finalFunc(); 2118 < 0) {<= preAllocated.length - 4) { finalFunc();
2046 < 0) {<= preAllocated.length - 4) { } 2119 < 0) {<= preAllocated.length - 4) { }
2047 < 0) {<= preAllocated.length - 4) { } 2120 < 0) {<= preAllocated.length - 4) { }
2048 < 0) {<= preAllocated.length - 4) { } 2121 < 0) {<= preAllocated.length - 4) { }
2049 < 0) {<= preAllocated.length - 4) { 2122 < 0) {<= preAllocated.length - 4) {
2050 < 0) {<= preAllocated.length - 4) { //////////////////////////////////////////////////////////////////////////////// 2123 < 0) {<= preAllocated.length - 4) { ////////////////////////////////////////////////////////////////////////////////
2051 < 0) {<= preAllocated.length - 4) { // Following is the parts of the boost that's common between OGL/Legacy 2124 < 0) {<= preAllocated.length - 4) { // Following is the parts of the boost that's common between OGL/Legacy
2052 < 0) {<= preAllocated.length - 4) { 2125 < 0) {<= preAllocated.length - 4) {
2053 < 0) {<= preAllocated.length - 4) { /** 2126 < 0) {<= preAllocated.length - 4) { /**
2054 < 0) {<= preAllocated.length - 4) { * Return a full Point object based on the index. 2127 < 0) {<= preAllocated.length - 4) { * Return a full Point object based on the index.
2055 < 0) {<= preAllocated.length - 4) { * The boost module uses stripped point objects for performance reasons. 2128 < 0) {<= preAllocated.length - 4) { * The boost module uses stripped point objects for performance reasons.
2056 < 0) {<= preAllocated.length - 4) { * @param {Number} boostPoint A stripped-down point object 2129 < 0) {<= preAllocated.length - 4) { * @param {Number} boostPoint A stripped-down point object
2057 < 0) {<= preAllocated.length - 4) { * @returns {Object} A Point object as per http://api.highcharts.com/highcharts#Point 2130 < 0) {<= preAllocated.length - 4) { * @returns {Object} A Point object as per http://api.highcharts.com/highcharts#Point
2058 < 0) {<= preAllocated.length - 4) { */ 2131 < 0) {<= preAllocated.length - 4) { */
2059 < 0) {<= preAllocated.length - 4) { Series.prototype.getPoint = function(boostPoint) { 2132 < 0) {<= preAllocated.length - 4) { Series.prototype.getPoint = function(boostPoint) {
2060 < 0) {<= preAllocated.length - 4) { var point = boostPoint, 2133 < 0) {<= preAllocated.length - 4) { var point = boostPoint,
2061 < 0) {<= preAllocated.length - 4) { xData = this.xData || this.options.xData || this.processedXData || false; 2134 < 0) {<= preAllocated.length - 4) { xData = this.xData || this.options.xData || this.processedXData || false;
2062 < 0) {<= preAllocated.length - 4) { 2135 < 0) {<= preAllocated.length - 4) {
2063 < 0) {<= preAllocated.length - 4) { if (boostPoint && !(boostPoint instanceof this.pointClass)) { 2136 < 0) {<= preAllocated.length - 4) { if (boostPoint && !(boostPoint instanceof this.pointClass)) {
2064 < 0) {<= preAllocated.length - 4) { point = (new this.pointClass()).init( // eslint-disable-line new-cap 2137 < 0) {<= preAllocated.length - 4) { point = (new this.pointClass()).init( // eslint-disable-line new-cap
2065 < 0) {<= preAllocated.length - 4) { this, 2138 < 0) {<= preAllocated.length - 4) { this,
2066 < 0) {<= preAllocated.length - 4) { this.options.data[boostPoint.i], 2139 < 0) {<= preAllocated.length - 4) { this.options.data[boostPoint.i],
2067 < 0) {<= preAllocated.length - 4) { xData ? xData[boostPoint.i] : undefined 2140 < 0) {<= preAllocated.length - 4) { xData ? xData[boostPoint.i] : undefined
2068 < 0) {<= preAllocated.length - 4) { ); 2141 < 0) {<= preAllocated.length - 4) { );
2069 < 0) {<= preAllocated.length - 4) { 2142 < 0) {<= preAllocated.length - 4) {
2070 < 0) {<= preAllocated.length - 4) { point.category = point.x; 2143 < 0) {<= preAllocated.length - 4) { point.category = point.x;
2071 < 0) {<= preAllocated.length - 4) { 2144 < 0) {<= preAllocated.length - 4) {
2072 < 0) {<= preAllocated.length - 4) { point.dist = boostPoint.dist; 2145 < 0) {<= preAllocated.length - 4) { point.dist = boostPoint.dist;
2073 < 0) {<= preAllocated.length - 4) { point.distX = boostPoint.distX; 2146 < 0) {<= preAllocated.length - 4) { point.distX = boostPoint.distX;
2074 < 0) {<= preAllocated.length - 4) { point.plotX = boostPoint.plotX; 2147 < 0) {<= preAllocated.length - 4) { point.plotX = boostPoint.plotX;
2075 < 0) {<= preAllocated.length - 4) { point.plotY = boostPoint.plotY; 2148 < 0) {<= preAllocated.length - 4) { point.plotY = boostPoint.plotY;
2076 < 0) {<= preAllocated.length - 4) { point.index = boostPoint.i; 2149 < 0) {<= preAllocated.length - 4) { point.index = boostPoint.i;
2077 < 0) {<= preAllocated.length - 4) { } 2150 < 0) {<= preAllocated.length - 4) { }
2078 < 0) {<= preAllocated.length - 4) { 2151 < 0) {<= preAllocated.length - 4) {
2079 < 0) {<= preAllocated.length - 4) { return point; 2152 < 0) {<= preAllocated.length - 4) { return point;
2080 < 0) {<= preAllocated.length - 4) { }; 2153 < 0) {<= preAllocated.length - 4) { };
2081 < 0) {<= preAllocated.length - 4) { 2154 < 0) {<= preAllocated.length - 4) {
2082 < 0) {<= preAllocated.length - 4) { /** 2155 < 0) {<= preAllocated.length - 4) { /**
2083 < 0) {<= preAllocated.length - 4) { * Return a point instance from the k-d-tree 2156 < 0) {<= preAllocated.length - 4) { * Return a point instance from the k-d-tree
2084 < 0) {<= preAllocated.length - 4) { */ 2157 < 0) {<= preAllocated.length - 4) { */
2085 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'searchPoint', function(proceed) { 2158 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'searchPoint', function(proceed) {
2086 < 0) {<= preAllocated.length - 4) { return this.getPoint( 2159 < 0) {<= preAllocated.length - 4) { return this.getPoint(
2087 < 0) {<= preAllocated.length - 4) { proceed.apply(this, [].slice.call(arguments, 1)) 2160 < 0) {<= preAllocated.length - 4) { proceed.apply(this, [].slice.call(arguments, 1))
2088 < 0) {<= preAllocated.length - 4) { ); 2161 < 0) {<= preAllocated.length - 4) { );
2089 < 0) {<= preAllocated.length - 4) { }); 2162 < 0) {<= preAllocated.length - 4) { });
2090 < 0) {<= preAllocated.length - 4) { 2163 < 0) {<= preAllocated.length - 4) {
2091 < 0) {<= preAllocated.length - 4) { /** 2164 < 0) {<= preAllocated.length - 4) { /**
2092 < 0) {<= preAllocated.length - 4) { * Extend series.destroy to also remove the fake k-d-tree points (#5137). 2165 < 0) {<= preAllocated.length - 4) { * Extend series.destroy to also remove the fake k-d-tree points (#5137).
2093 < 0) {<= preAllocated.length - 4) { * Normally this is handled by Series.destroy that calls Point.destroy, 2166 < 0) {<= preAllocated.length - 4) { * Normally this is handled by Series.destroy that calls Point.destroy,
2094 < 0) {<= preAllocated.length - 4) { * but the fake search points are not registered like that. 2167 < 0) {<= preAllocated.length - 4) { * but the fake search points are not registered like that.
2095 < 0) {<= preAllocated.length - 4) { */ 2168 < 0) {<= preAllocated.length - 4) { */
2096 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'destroy', function(proceed) { 2169 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'destroy', function(proceed) {
2097 < 0) {<= preAllocated.length - 4) { var series = this, 2170 < 0) {<= preAllocated.length - 4) { var series = this,
2098 < 0) {<= preAllocated.length - 4) { chart = series.chart; 2171 < 0) {<= preAllocated.length - 4) { chart = series.chart;
2099 < 0) {<= preAllocated.length - 4) { 2172 < 0) {<= preAllocated.length - 4) {
2100 < 0) {<= preAllocated.length - 4) { if (chart.markerGroup === series.markerGroup) { 2173 < 0) {<= preAllocated.length - 4) { if (chart.markerGroup === series.markerGroup) {
2101 < 0) {<= preAllocated.length - 4) { series.markerGroup = null; 2174 < 0) {<= preAllocated.length - 4) { series.markerGroup = null;
2102 < 0) {<= preAllocated.length - 4) { } 2175 < 0) {<= preAllocated.length - 4) { }
2103 < 0) {<= preAllocated.length - 4) { 2176 < 0) {<= preAllocated.length - 4) {
2104 < 0) {<= preAllocated.length - 4) { if (chart.hoverPoints) { 2177 < 0) {<= preAllocated.length - 4) { if (chart.hoverPoints) {
2105 < 0) {<= preAllocated.length - 4) { chart.hoverPoints = grep(chart.hoverPoints, function(point) { 2178 < 0) {<= preAllocated.length - 4) { chart.hoverPoints = grep(chart.hoverPoints, function(point) {
2106 < 0) {<= preAllocated.length - 4) { return point.series === series; 2179 < 0) {<= preAllocated.length - 4) { return point.series === series;
2107 < 0) {<= preAllocated.length - 4) { }); 2180 < 0) {<= preAllocated.length - 4) { });
2108 < 0) {<= preAllocated.length - 4) { } 2181 < 0) {<= preAllocated.length - 4) { }
2109 < 0) {<= preAllocated.length - 4) { 2182 < 0) {<= preAllocated.length - 4) {
2110 < 0) {<= preAllocated.length - 4) { if (chart.hoverPoint && chart.hoverPoint.series === series) { 2183 < 0) {<= preAllocated.length - 4) { if (chart.hoverPoint && chart.hoverPoint.series === series) {
2111 < 0) {<= preAllocated.length - 4) { chart.hoverPoint = null; 2184 < 0) {<= preAllocated.length - 4) { chart.hoverPoint = null;
2112 < 0) {<= preAllocated.length - 4) { } 2185 < 0) {<= preAllocated.length - 4) { }
2113 < 0) {<= preAllocated.length - 4) { 2186 < 0) {<= preAllocated.length - 4) {
2114 < 0) {<= preAllocated.length - 4) { proceed.call(this); 2187 < 0) {<= preAllocated.length - 4) { proceed.call(this);
2115 < 0) {<= preAllocated.length - 4) { }); 2188 < 0) {<= preAllocated.length - 4) { });
2116 < 0) {<= preAllocated.length - 4) { 2189 < 0) {<= preAllocated.length - 4) {
2117 < 0) {<= preAllocated.length - 4) { /** 2190 < 0) {<= preAllocated.length - 4) { /**
2118 < 0) {<= preAllocated.length - 4) { * Do not compute extremes when min and max are set. 2191 < 0) {<= preAllocated.length - 4) { * Do not compute extremes when min and max are set.
2119 < 0) {<= preAllocated.length - 4) { * If we use this in the core, we can add the hook 2192 < 0) {<= preAllocated.length - 4) { * If we use this in the core, we can add the hook
2120 < 0) {<= preAllocated.length - 4) { * to hasExtremes to the methods directly. 2193 < 0) {<= preAllocated.length - 4) { * to hasExtremes to the methods directly.
2121 < 0) {<= preAllocated.length - 4) { */ 2194 < 0) {<= preAllocated.length - 4) { */
2122 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'getExtremes', function(proceed) { 2195 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'getExtremes', function(proceed) {
2123 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this) || (!this.hasExtremes || !this.hasExtremes())) { 2196 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this) || (!this.hasExtremes || !this.hasExtremes())) {
2124 < 0) {<= preAllocated.length - 4) { return proceed.apply(this, Array.prototype.slice.call(arguments, 1)); 2197 < 0) {<= preAllocated.length - 4) { return proceed.apply(this, Array.prototype.slice.call(arguments, 1));
2125 < 0) {<= preAllocated.length - 4) { } 2198 < 0) {<= preAllocated.length - 4) { }
2126 < 0) {<= preAllocated.length - 4) { }); 2199 < 0) {<= preAllocated.length - 4) { });
2127 < 0) {<= preAllocated.length - 4) { 2200 < 0) {<= preAllocated.length - 4) {
2128 < 0) {<= preAllocated.length - 4) { // Set default options 2201 < 0) {<= preAllocated.length - 4) { // Set default options
2129 < 0) {<= preAllocated.length - 4) { each([ 2202 < 0) {<= preAllocated.length - 4) { each([
2130 < 0) {<= preAllocated.length - 4) { 'area', 2203 < 0) {<= preAllocated.length - 4) { 'area',
2131 < 0) {<= preAllocated.length - 4) { 'arearange', 2204 < 0) {<= preAllocated.length - 4) { 'arearange',
2132 < 0) {<= preAllocated.length - 4) { 'column', 2205 < 0) {<= preAllocated.length - 4) { 'column',
2133 < 0) {<= preAllocated.length - 4) { 'line', 2206 < 0) {<= preAllocated.length - 4) { 'line',
2134 < 0) {<= preAllocated.length - 4) { 'scatter', 2207 < 0) {<= preAllocated.length - 4) { 'scatter',
2135 < 0) {<= preAllocated.length - 4) { 'heatmap', 2208 < 0) {<= preAllocated.length - 4) { 'heatmap',
2136 < 0) {<= preAllocated.length - 4) { 'bubble', 2209 < 0) {<= preAllocated.length - 4) { 'bubble',
2137 < 0) {<= preAllocated.length - 4) { 'treemap', 2210 < 0) {<= preAllocated.length - 4) { 'treemap',
2138 < 0) {<= preAllocated.length - 4) { 'heatmap' 2211 < 0) {<= preAllocated.length - 4) { 'heatmap'
2139 < 0) {<= preAllocated.length - 4) { ], 2212 < 0) {<= preAllocated.length - 4) { ],
2140 < 0) {<= preAllocated.length - 4) { function(type) { 2213 < 0) {<= preAllocated.length - 4) { function(type) {
2141 < 0) {<= preAllocated.length - 4) { if (plotOptions[type]) { 2214 < 0) {<= preAllocated.length - 4) { if (plotOptions[type]) {
2142 < 0) {<= preAllocated.length - 4) { plotOptions[type].boostThreshold = 5000; 2215 < 0) {<= preAllocated.length - 4) { plotOptions[type].boostThreshold = 5000;
2143 < 0) {<= preAllocated.length - 4) { plotOptions[type].boostData = []; 2216 < 0) {<= preAllocated.length - 4) { plotOptions[type].boostData = [];
2144 < 0) {<= preAllocated.length - 4) { } 2217 < 0) {<= preAllocated.length - 4) { }
2145 < 0) {<= preAllocated.length - 4) { } 2218 < 0) {<= preAllocated.length - 4) { }
2146 < 0) {<= preAllocated.length - 4) { ); 2219 < 0) {<= preAllocated.length - 4) { );
2147 < 0) {<= preAllocated.length - 4) { 2220 < 0) {<= preAllocated.length - 4) {
2148 < 0) {<= preAllocated.length - 4) { /** 2221 < 0) {<= preAllocated.length - 4) { /**
2149 < 0) {<= preAllocated.length - 4) { * Override a bunch of methods the same way. If the number of points is 2222 < 0) {<= preAllocated.length - 4) { * Override a bunch of methods the same way. If the number of points is
2150 < 0) {<= preAllocated.length - 4) { * below the threshold, run the original method. If not, check for a 2223 < 0) {<= preAllocated.length - 4) { * below the threshold, run the original method. If not, check for a
2151 < 0) {<= preAllocated.length - 4) { * canvas version or do nothing. 2224 < 0) {<= preAllocated.length - 4) { * canvas version or do nothing.
2152 < 0) {<= preAllocated.length - 4) { * 2225 < 0) {<= preAllocated.length - 4) { *
2153 < 0) {<= preAllocated.length - 4) { * Note that we're not overriding any of these for heatmaps. 2226 < 0) {<= preAllocated.length - 4) { * Note that we're not overriding any of these for heatmaps.
2154 < 0) {<= preAllocated.length - 4) { */ 2227 < 0) {<= preAllocated.length - 4) { */
2155 < 0) {<= preAllocated.length - 4) { each([ 2228 < 0) {<= preAllocated.length - 4) { each([
2156 < 0) {<= preAllocated.length - 4) { 'translate', 2229 < 0) {<= preAllocated.length - 4) { 'translate',
2157 < 0) {<= preAllocated.length - 4) { 'generatePoints', 2230 < 0) {<= preAllocated.length - 4) { 'generatePoints',
2158 < 0) {<= preAllocated.length - 4) { 'drawTracker', 2231 < 0) {<= preAllocated.length - 4) { 'drawTracker',
2159 < 0) {<= preAllocated.length - 4) { 'drawPoints', 2232 < 0) {<= preAllocated.length - 4) { 'drawPoints',
2160 < 0) {<= preAllocated.length - 4) { 'render' 2233 < 0) {<= preAllocated.length - 4) { 'render'
2161 < 0) {<= preAllocated.length - 4) { ], function(method) { 2234 < 0) {<= preAllocated.length - 4) { ], function(method) {
2162 < 0) {<= preAllocated.length - 4) { function branch(proceed) { 2235 < 0) {<= preAllocated.length - 4) { function branch(proceed) {
2163 < 0) {<= preAllocated.length - 4) { var letItPass = this.options.stacking && 2236 < 0) {<= preAllocated.length - 4) { var letItPass = this.options.stacking &&
2164 < 0) {<= preAllocated.length - 4) { (method === 'translate' || method === 'generatePoints'); 2237 < 0) {<= preAllocated.length - 4) { (method === 'translate' || method === 'generatePoints');
2165 < 0) {<= preAllocated.length - 4) { 2238 < 0) {<= preAllocated.length - 4) {
2166 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this) || 2239 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this) ||
2167 < 0) {<= preAllocated.length - 4) { letItPass || 2240 < 0) {<= preAllocated.length - 4) { letItPass ||
2168 < 0) {<= preAllocated.length - 4) { this.type === 'heatmap' || 2241 < 0) {<= preAllocated.length - 4) { this.type === 'heatmap' ||
2169 < 0) {<= preAllocated.length - 4) { this.type === 'treemap' 2242 < 0) {<= preAllocated.length - 4) { this.type === 'treemap'
2170 < 0) {<= preAllocated.length - 4) { ) { 2243 < 0) {<= preAllocated.length - 4) { ) {
2171 < 0) {<= preAllocated.length - 4) { 2244 < 0) {<= preAllocated.length - 4) {
2172 < 0) {<= preAllocated.length - 4) { // Clear image 2245 < 0) {<= preAllocated.length - 4) { // Clear image
2173 < 0) {<= preAllocated.length - 4) { if (method === 'render' && this.image && !isChartSeriesBoosting(this.chart)) { 2246 < 0) {<= preAllocated.length - 4) { if (method === 'render' && this.image && !isChartSeriesBoosting(this.chart)) {
2174 < 0) {<= preAllocated.length - 4) { this.image.attr({ 2247 < 0) {<= preAllocated.length - 4) { this.image.attr({
2175 < 0) {<= preAllocated.length - 4) { href: '' 2248 < 0) {<= preAllocated.length - 4) { href: ''
2176 < 0) {<= preAllocated.length - 4) { }); 2249 < 0) {<= preAllocated.length - 4) { });
2177 < 0) {<= preAllocated.length - 4) { this.animate = null; // We're zooming in, don't run animation 2250 < 0) {<= preAllocated.length - 4) { this.animate = null; // We're zooming in, don't run animation
2178 < 0) {<= preAllocated.length - 4) { } 2251 < 0) {<= preAllocated.length - 4) { }
2179 < 0) {<= preAllocated.length - 4) { 2252 < 0) {<= preAllocated.length - 4) {
2180 < 0) {<= preAllocated.length - 4) { proceed.call(this); 2253 < 0) {<= preAllocated.length - 4) { proceed.call(this);
2181 < 0) {<= preAllocated.length - 4) { 2254 < 0) {<= preAllocated.length - 4) {
2182 < 0) {<= preAllocated.length - 4) { // If a canvas version of the method exists, like renderCanvas(), run 2255 < 0) {<= preAllocated.length - 4) { // If a canvas version of the method exists, like renderCanvas(), run
2183 < 0) {<= preAllocated.length - 4) { } else if (this[method + 'Canvas']) { 2256 < 0) {<= preAllocated.length - 4) { } else if (this[method + 'Canvas']) {
2184 < 0) {<= preAllocated.length - 4) { this[method + 'Canvas'](); 2257 < 0) {<= preAllocated.length - 4) { this[method + 'Canvas']();
2185 < 0) {<= preAllocated.length - 4) { } 2258 < 0) {<= preAllocated.length - 4) { }
2186 < 0) {<= preAllocated.length - 4) { } 2259 < 0) {<= preAllocated.length - 4) { }
2187 < 0) {<= preAllocated.length - 4) { 2260 < 0) {<= preAllocated.length - 4) {
2188 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, method, branch); 2261 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, method, branch);
2189 < 0) {<= preAllocated.length - 4) { 2262 < 0) {<= preAllocated.length - 4) {
2190 < 0) {<= preAllocated.length - 4) { // A special case for some types - their translate method is already wrapped 2263 < 0) {<= preAllocated.length - 4) { // A special case for some types - their translate method is already wrapped
2191 < 0) {<= preAllocated.length - 4) { if (method === 'translate') { 2264 < 0) {<= preAllocated.length - 4) { if (method === 'translate') {
2192 < 0) {<= preAllocated.length - 4) { if (seriesTypes.column) { 2265 < 0) {<= preAllocated.length - 4) { if (seriesTypes.column) {
2193 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes.column.prototype, method, branch); 2266 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes.column.prototype, method, branch);
2194 < 0) {<= preAllocated.length - 4) { } 2267 < 0) {<= preAllocated.length - 4) { }
2195 < 0) {<= preAllocated.length - 4) { 2268 < 0) {<= preAllocated.length - 4) {
2196 < 0) {<= preAllocated.length - 4) { if (seriesTypes.arearange) { 2269 < 0) {<= preAllocated.length - 4) { if (seriesTypes.arearange) {
2197 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes.arearange.prototype, method, branch); 2270 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes.arearange.prototype, method, branch);
2198 < 0) {<= preAllocated.length - 4) { } 2271 < 0) {<= preAllocated.length - 4) { }
2199 < 0) {<= preAllocated.length - 4) { 2272 < 0) {<= preAllocated.length - 4) {
2200 < 0) {<= preAllocated.length - 4) { if (seriesTypes.treemap) { 2273 < 0) {<= preAllocated.length - 4) { if (seriesTypes.treemap) {
2201 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes.treemap.prototype, method, branch); 2274 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes.treemap.prototype, method, branch);
2202 < 0) {<= preAllocated.length - 4) { } 2275 < 0) {<= preAllocated.length - 4) { }
2203 < 0) {<= preAllocated.length - 4) { } 2276 < 0) {<= preAllocated.length - 4) { }
2204 < 0) {<= preAllocated.length - 4) { }); 2277 < 0) {<= preAllocated.length - 4) { });
2205 < 0) {<= preAllocated.length - 4) { 2278 < 0) {<= preAllocated.length - 4) {
2206 < 0) {<= preAllocated.length - 4) { /* 2279 < 0) {<= preAllocated.length - 4) { /*
2207 < 0) {<= preAllocated.length - 4) { * Returns true if the current browser supports webgl 2280 < 0) {<= preAllocated.length - 4) { * Returns true if the current browser supports webgl
2208 < 0) {<= preAllocated.length - 4) { */ 2281 < 0) {<= preAllocated.length - 4) { */
2209 < 0) {<= preAllocated.length - 4) { function hasWebGLSupport() { 2282 < 0) {<= preAllocated.length - 4) { function hasWebGLSupport() {
2210 < 0) {<= preAllocated.length - 4) { var i = 0, 2283 < 0) {<= preAllocated.length - 4) { var i = 0,
2211 < 0) {<= preAllocated.length - 4) { canvas, 2284 < 0) {<= preAllocated.length - 4) { canvas,
2212 < 0) {<= preAllocated.length - 4) { contexts = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'], 2285 < 0) {<= preAllocated.length - 4) { contexts = ['webgl', 'experimental-webgl', 'moz-webgl', 'webkit-3d'],
2213 < 0) {<= preAllocated.length - 4) { context = false; 2286 < 0) {<= preAllocated.length - 4) { context = false;
2214 < 0) {<= preAllocated.length - 4) { 2287 < 0) {<= preAllocated.length - 4) {
2215 < 0) {<= preAllocated.length - 4) { if (typeof win.WebGLRenderingContext !== 'undefined') { 2288 < 0) {<= preAllocated.length - 4) { if (typeof win.WebGLRenderingContext !== 'undefined') {
2216 < 0) {<= preAllocated.length - 4) { canvas = doc.createElement('canvas'); 2289 < 0) {<= preAllocated.length - 4) { canvas = doc.createElement('canvas');
2217 < 0) {<= preAllocated.length - 4) { 2290 < 0) {<= preAllocated.length - 4) {
2218 < 0) {<= preAllocated.length - 4) { for (; i < contexts.length; i++) { 2291 < 0) {<= preAllocated.length - 4) { for (; i < contexts.length; i++) {
2219 < 0) {<= preAllocated.length - 4) { try { 2292 < 0) {<= preAllocated.length - 4) { try {
2220 < 0) {<= preAllocated.length - 4) { context = canvas.getContext(contexts[i]); 2293 < 0) {<= preAllocated.length - 4) { context = canvas.getContext(contexts[i]);
2221 < 0) {<= preAllocated.length - 4) { if (typeof context !== 'undefined' && context !== null) { 2294 < 0) {<= preAllocated.length - 4) { if (typeof context !== 'undefined' && context !== null) {
2222 < 0) {<= preAllocated.length - 4) { return true; 2295 < 0) {<= preAllocated.length - 4) { return true;
2223 < 0) {<= preAllocated.length - 4) { } 2296 < 0) {<= preAllocated.length - 4) { }
2224 < 0) {<= preAllocated.length - 4) { } catch (e) { 2297 < 0) {<= preAllocated.length - 4) { } catch (e) {
2225 < 0) {<= preAllocated.length - 4) { 2298 < 0) {<= preAllocated.length - 4) {
2226 < 0) {<= preAllocated.length - 4) { } 2299 < 0) {<= preAllocated.length - 4) { }
2227 < 0) {<= preAllocated.length - 4) { } 2300 < 0) {<= preAllocated.length - 4) { }
2228 < 0) {<= preAllocated.length - 4) { } 2301 < 0) {<= preAllocated.length - 4) { }
2229 < 0) {<= preAllocated.length - 4) { 2302 < 0) {<= preAllocated.length - 4) {
2230 < 0) {<= preAllocated.length - 4) { return false; 2303 < 0) {<= preAllocated.length - 4) { return false;
2231 < 0) {<= preAllocated.length - 4) { } 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) {
-   2323 < 0) {<= preAllocated.length - 4) {
2232 < 0) {<= preAllocated.length - 4) { 2324 < 0) {<= preAllocated.length - 4) {
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 { 2332 < 0) {<= preAllocated.length - 4) { } else {
2241 < 0) {<= preAllocated.length - 4) { H.error(26); 2333 < 0) {<= preAllocated.length - 4) { H.error(26);
2242 < 0) {<= preAllocated.length - 4) { } 2334 < 0) {<= preAllocated.length - 4) { }
2243 < 0) {<= preAllocated.length - 4) { //eslint-disable -  
2244 < 0) {<= preAllocated.length - 4) { return; 2335 < 0) {<= preAllocated.length - 4) { } else {
2245 < 0) {<= preAllocated.length - 4) { //eslint-enable -  
2246 < 0) {<= preAllocated.length - 4) { } -  
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
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));
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,
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,
2290 < 0) {<= preAllocated.length - 4) { point, 2379 < 0) {<= preAllocated.length - 4) { point,
2291 < 0) {<= preAllocated.length - 4) { i; 2380 < 0) {<= preAllocated.length - 4) { i;
2292 < 0) {<= preAllocated.length - 4) { 2381 < 0) {<= preAllocated.length - 4) {
-   2382 < 0) {<= preAllocated.length - 4) { if (points) {
2293 < 0) {<= preAllocated.length - 4) { if (points) { 2383 < 0) {<= preAllocated.length - 4) { for (i = 0; i < points.length; i = i + 1) {
2294 < 0) {<= preAllocated.length - 4) { for (i = 0; i < points.length; i = i + 1) { 2384 < 0) {<= preAllocated.length - 4) { point = points[i];
2295 < 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) { }
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() {
2310 < 0) {<= preAllocated.length - 4) { var series = this, 2399 < 0) {<= preAllocated.length - 4) { var series = this,
2311 < 0) {<= preAllocated.length - 4) { options = series.options || {}, 2400 < 0) {<= preAllocated.length - 4) { options = series.options || {},
2312 < 0) {<= preAllocated.length - 4) { renderer = false, 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) {
-   2439 < 0) {<= preAllocated.length - 4) { // The k-d tree requires series points.
-   2440 < 0) {<= preAllocated.length - 4) { // Reduce the amount of points, since the time to build the
-   2441 < 0) {<= preAllocated.length - 4) { // tree increases exponentially.
2313 < 0) {<= preAllocated.length - 4) { chart = series.chart, 2442 < 0) {<= preAllocated.length - 4) { if (enableMouseTracking && !pointTaken[index]) {
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, -  
2352 < 0) {<= preAllocated.length - 4) { maxVal, -  
2353 < 0) {<= preAllocated.length - 4) { minI, -  
2354 < 0) {<= preAllocated.length - 4) { maxI, 2443 < 0) {<= preAllocated.length - 4) { pointTaken[index] = true;
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) -  
2358 < 0) {<= preAllocated.length - 4) { // ).get() : series.color, -  
2359 < 0) {<= preAllocated.length - 4) { -  
2360 < 0) {<= preAllocated.length - 4) { addKDPoint = function(clientX, plotY, i) { 2444 < 0) {<= preAllocated.length - 4) {
2361 < 0) {<= preAllocated.length - 4) { //Shaves off about 60ms compared to repeated concatination -  
2362 < 0) {<= preAllocated.length - 4) { index = clientX + ',' + plotY; 2445 < 0) {<= preAllocated.length - 4) { if (chart.inverted) {
2363 < 0) {<= preAllocated.length - 4) { 2446 < 0) {<= preAllocated.length - 4) { clientX = xAxis.len - clientX;
2364 < 0) {<= preAllocated.length - 4) { // The k-d tree requires series points. 2447 < 0) {<= preAllocated.length - 4) { plotY = yAxis.len - plotY;
2365 < 0) {<= preAllocated.length - 4) { // Reduce the amount of points, since the time to build the 2448 < 0) {<= preAllocated.length - 4) { }
-   2449 < 0) {<= preAllocated.length - 4) {
-   2450 < 0) {<= preAllocated.length - 4) { points.push({
-   2451 < 0) {<= preAllocated.length - 4) { clientX: clientX,
-   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) { 2457 < 0) {<= preAllocated.length - 4) { };
2371 < 0) {<= preAllocated.length - 4) { clientX = xAxis.len - clientX; 2458 < 0) {<= preAllocated.length - 4) {
2372 < 0) {<= preAllocated.length - 4) { plotY = yAxis.len - plotY; 2459 < 0) {<= preAllocated.length - 4) { // Get or create the renderer
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) { }); -  
2381 < 0) {<= preAllocated.length - 4) { } -  
2382 < 0) {<= preAllocated.length - 4) { }; -  
2383 < 0) {<= preAllocated.length - 4) { 2460 < 0) {<= preAllocated.length - 4) { renderer = createAndAttachRenderer(chart, series);
2384 < 0) {<= preAllocated.length - 4) { // Get or create the renderer 2461 < 0) {<= preAllocated.length - 4) {
2385 < 0) {<= preAllocated.length - 4) { renderer = createAndAttachRenderer(chart, series); -  
2386 < 0) {<= preAllocated.length - 4) { -  
2387 < 0) {<= preAllocated.length - 4) { if (!this.visible) { 2462 < 0) {<= preAllocated.length - 4) { if (!this.visible) {
2388 < 0) {<= preAllocated.length - 4) { if (!isChartSeriesBoosting(chart) && renderer) { 2463 < 0) {<= preAllocated.length - 4) { if (!isChartSeriesBoosting(chart) && renderer) {
2389 < 0) {<= preAllocated.length - 4) { renderer.clear(); 2464 < 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) { -  
2399 < 0) {<= preAllocated.length - 4) { this.destroyGraphics(); -  
2400 < 0) {<= preAllocated.length - 4) { } -  
2401 < 0) {<= preAllocated.length - 4) { 2465 < 0) {<= preAllocated.length - 4) { this.image.attr({
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)) { -  
2405 < 0) {<= preAllocated.length - 4) { this.markerGroup = series.plotGroup( -  
2406 < 0) {<= preAllocated.length - 4) { 'markerGroup', -  
2407 < 0) {<= preAllocated.length - 4) { 'markers', -  
-   2466 < 0) {<= preAllocated.length - 4) { href: ''
-   2467 < 0) {<= preAllocated.length - 4) { });
2408 < 0) {<= preAllocated.length - 4) { true, 2468 < 0) {<= preAllocated.length - 4) { }
-   2469 < 0) {<= preAllocated.length - 4) { return;
2409 < 0) {<= preAllocated.length - 4) { 1, 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) {
-   2477 < 0) {<= preAllocated.length - 4) { // If we're rendering per. series we should create the marker groups
-   2478 < 0) {<= preAllocated.length - 4) { // as usual.
-   2479 < 0) {<= preAllocated.length - 4) { if (!isChartSeriesBoosting(chart)) {
2410 < 0) {<= preAllocated.length - 4) { chart.seriesGroup -  
2411 < 0) {<= preAllocated.length - 4) { ); -  
2412 < 0) {<= preAllocated.length - 4) { } else { 2480 < 0) {<= preAllocated.length - 4) { this.markerGroup = series.plotGroup(
2413 < 0) {<= preAllocated.length - 4) { //Use a single group for the markers -  
2414 < 0) {<= preAllocated.length - 4) { this.markerGroup = chart.markerGroup; -  
2415 < 0) {<= preAllocated.length - 4) { } -  
2416 < 0) {<= preAllocated.length - 4) { -  
2417 < 0) {<= preAllocated.length - 4) { points = this.points = []; 2481 < 0) {<= preAllocated.length - 4) { 'markerGroup',
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); -  
2424 < 0) {<= preAllocated.length - 4) { renderer.pushSeries(series); -  
2425 < 0) {<= preAllocated.length - 4) { // Perform the actual renderer if we're on series level -  
2426 < 0) {<= preAllocated.length - 4) { renderIfNotSeriesBoosting(renderer, this, chart); 2482 < 0) {<= preAllocated.length - 4) { 'markers',
2427 < 0) {<= preAllocated.length - 4) { //console.log(series, chart); 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 {
-   2488 < 0) {<= preAllocated.length - 4) { //Use a single group for the markers
-   2489 < 0) {<= preAllocated.length - 4) { this.markerGroup = chart.markerGroup;
-   2490 < 0) {<= preAllocated.length - 4) { }
2428 < 0) {<= preAllocated.length - 4) { } 2491 < 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;
2432 < 0) {<= preAllocated.length - 4) { var x, 2496 < 0) {<= preAllocated.length - 4) {
2433 < 0) {<= preAllocated.length - 4) { y, 2497 < 0) {<= preAllocated.length - 4) { if (renderer) {
2434 < 0) {<= preAllocated.length - 4) { clientX, 2498 < 0) {<= preAllocated.length - 4) { allocateIfNotSeriesBoosting(renderer, this);
-   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, -  
2436 < 0) {<= preAllocated.length - 4) { isNull, 2501 < 0) {<= preAllocated.length - 4) { renderIfNotSeriesBoosting(renderer, this, chart);
2437 < 0) {<= preAllocated.length - 4) { low, 2502 < 0) {<= preAllocated.length - 4) { //console.log(series, chart);
-   2503 < 0) {<= preAllocated.length - 4) { }
2438 < 0) {<= preAllocated.length - 4) { chartDestroyed = typeof chart.index === 'undefined', 2504 < 0) {<= preAllocated.length - 4) {
-   2505 < 0) {<= preAllocated.length - 4) { /* This builds the KD-tree */
-   2506 < 0) {<= preAllocated.length - 4) { function processPoint(d, i) {
-   2507 < 0) {<= preAllocated.length - 4) { var x,
2439 < 0) {<= preAllocated.length - 4) { isYInside = true; 2508 < 0) {<= preAllocated.length - 4) { y,
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]; -  
2444 < 0) {<= preAllocated.length - 4) { y = d[1]; -  
2445 < 0) {<= preAllocated.length - 4) { } else { -  
2446 < 0) {<= preAllocated.length - 4) { x = d; -  
-   2509 < 0) {<= preAllocated.length - 4) { clientX,
-   2510 < 0) {<= preAllocated.length - 4) { plotY,
-   2511 < 0) {<= preAllocated.length - 4) { isNull,
-   2512 < 0) {<= preAllocated.length - 4) { low,
-   2513 < 0) {<= preAllocated.length - 4) { chartDestroyed = typeof chart.index === 'undefined',
-   2514 < 0) {<= preAllocated.length - 4) { isYInside = true;
2447 < 0) {<= preAllocated.length - 4) { y = yData[i]; 2515 < 0) {<= preAllocated.length - 4) {
-   2516 < 0) {<= preAllocated.length - 4) { if (!chartDestroyed) {
-   2517 < 0) {<= preAllocated.length - 4) { if (useRaw) {
-   2518 < 0) {<= preAllocated.length - 4) { x = d[0];
-   2519 < 0) {<= preAllocated.length - 4) { y = d[1];
-   2520 < 0) {<= preAllocated.length - 4) { } else {
2448 < 0) {<= preAllocated.length - 4) { } -  
2449 < 0) {<= preAllocated.length - 4) { -  
2450 < 0) {<= preAllocated.length - 4) { // Resolve low and high for range series 2521 < 0) {<= preAllocated.length - 4) { x = d;
2451 < 0) {<= preAllocated.length - 4) { if (isRange) { -  
-   2522 < 0) {<= preAllocated.length - 4) { y = yData[i];
-   2523 < 0) {<= preAllocated.length - 4) { }
2452 < 0) {<= preAllocated.length - 4) { if (useRaw) { 2524 < 0) {<= preAllocated.length - 4) {
-   2525 < 0) {<= preAllocated.length - 4) { // Resolve low and high for range series
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; -  
2464 < 0) {<= preAllocated.length - 4) { -  
2465 < 0) {<= preAllocated.length - 4) { // Optimize for scatter zooming -  
2466 < 0) {<= preAllocated.length - 4) { if (!requireSorting) { 2526 < 0) {<= preAllocated.length - 4) { if (isRange) {
2467 < 0) {<= preAllocated.length - 4) { isYInside = y >= yMin && y <= yMax; -  
2468 < 0) {<= preAllocated.length - 4) { } -  
2469 < 0) {<= preAllocated.length - 4) { -  
2470 < 0) {<= preAllocated.length - 4) { if (!isNull && x >= xMin && x <= xMax && isYInside) { -  
2471 < 0) {<= preAllocated.length - 4) { 2527 < 0) {<= preAllocated.length - 4) { if (useRaw) {
2472 < 0) {<= preAllocated.length - 4) { // We use ceil to allow the KD tree to work with sub pixels, 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)); -  
2475 < 0) {<= preAllocated.length - 4) { 2530 < 0) {<= preAllocated.length - 4) { low = y[0];
-   2531 < 0) {<= preAllocated.length - 4) { y = y[1];
2476 < 0) {<= preAllocated.length - 4) { if (sampling) { 2532 < 0) {<= preAllocated.length - 4) { } else if (isStacked) {
2477 < 0) {<= preAllocated.length - 4) { if (minI === undefined || clientX === lastClientX) { 2533 < 0) {<= preAllocated.length - 4) { x = d.x;
2478 < 0) {<= preAllocated.length - 4) { if (!isRange) { 2534 < 0) {<= preAllocated.length - 4) { y = d.stackY;
2479 < 0) {<= preAllocated.length - 4) { low = y; 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) {
-   2542 < 0) {<= preAllocated.length - 4) { isYInside = y >= yMin && y <= yMax;
-   2543 < 0) {<= preAllocated.length - 4) { }
-   2544 < 0) {<= preAllocated.length - 4) {
2480 < 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) {
-   2553 < 0) {<= preAllocated.length - 4) { if (!isRange) {
-   2554 < 0) {<= preAllocated.length - 4) { low = y;
-   2555 < 0) {<= preAllocated.length - 4) { }
2481 < 0) {<= preAllocated.length - 4) { if (maxI === undefined || y > maxVal) { 2556 < 0) {<= preAllocated.length - 4) { if (maxI === undefined || y > maxVal) {
2482 < 0) {<= preAllocated.length - 4) { maxVal = y; 2557 < 0) {<= preAllocated.length - 4) { maxVal = y;
-   2558 < 0) {<= preAllocated.length - 4) { maxI = i;
-   2559 < 0) {<= preAllocated.length - 4) { }
-   2560 < 0) {<= preAllocated.length - 4) { if (minI === undefined || low < minVal) {
-   2561 < 0) {<= preAllocated.length - 4) { minVal = low;
2483 < 0) {<= preAllocated.length - 4) { maxI = i; 2562 < 0) {<= preAllocated.length - 4) { minI = i;
2484 < 0) {<= preAllocated.length - 4) { } -  
2485 < 0) {<= preAllocated.length - 4) { if (minI === undefined || low < minVal) { -  
2486 < 0) {<= preAllocated.length - 4) { minVal = low; -  
2487 < 0) {<= preAllocated.length - 4) { minI = i; 2563 < 0) {<= preAllocated.length - 4) { }
2488 < 0) {<= preAllocated.length - 4) { } 2564 < 0) {<= preAllocated.length - 4) {
-   2565 < 0) {<= preAllocated.length - 4) { }
2489 < 0) {<= preAllocated.length - 4) { 2566 < 0) {<= preAllocated.length - 4) { if (clientX !== lastClientX) { // Add points and reset
2490 < 0) {<= preAllocated.length - 4) { } 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 {
-   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) { }
2491 < 0) {<= preAllocated.length - 4) { if (clientX !== lastClientX) { // Add points and reset 2584 < 0) {<= preAllocated.length - 4) { }
-   2585 < 0) {<= preAllocated.length - 4) { }
-   2586 < 0) {<= preAllocated.length - 4) {
-   2587 < 0) {<= preAllocated.length - 4) { return !chartDestroyed;
2492 < 0) {<= preAllocated.length - 4) { if (minI !== undefined) { // then maxI is also a number 2588 < 0) {<= preAllocated.length - 4) { }
-   2589 < 0) {<= preAllocated.length - 4) {
-   2590 < 0) {<= preAllocated.length - 4) { function doneProcessing() {
2493 < 0) {<= preAllocated.length - 4) { plotY = yAxis.toPixels(maxVal, true); 2591 < 0) {<= preAllocated.length - 4) { fireEvent(series, 'renderedCanvas');
2494 < 0) {<= preAllocated.length - 4) { yBottom = yAxis.toPixels(minVal, true); 2592 < 0) {<= preAllocated.length - 4) { // Pass tests in Pointer.
-   2593 < 0) {<= preAllocated.length - 4) { // Replace this with a single property, and replace when zooming
2495 < 0) {<= preAllocated.length - 4) { 2594 < 0) {<= preAllocated.length - 4) { // in below boostThreshold.
-   2595 < 0) {<= preAllocated.length - 4) { series.directTouch = false;
-   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) { 2598 < 0) {<= preAllocated.length - 4) { // Go back to prototype, ready to build
2498 < 0) {<= preAllocated.length - 4) { addKDPoint(clientX, yBottom, minI); 2599 < 0) {<= preAllocated.length - 4) { delete series.buildKDTree;
2499 < 0) {<= preAllocated.length - 4) { } 2600 < 0) {<= preAllocated.length - 4) { series.buildKDTree();
2500 < 0) {<= preAllocated.length - 4) { } -  
2501 < 0) {<= preAllocated.length - 4) { 2601 < 0) {<= preAllocated.length - 4) { }
2502 < 0) {<= preAllocated.length - 4) { minI = maxI = undefined; 2602 < 0) {<= preAllocated.length - 4) {
2503 < 0) {<= preAllocated.length - 4) { lastClientX = clientX; 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,
-   2608 < 0) {<= preAllocated.length - 4) { chart.renderer.forExport ? Number.MAX_VALUE : undefined
-   2609 < 0) {<= preAllocated.length - 4) { );
-   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) {
2506 < 0) {<= preAllocated.length - 4) { plotY = Math.ceil(yAxis.toPixels(y, true)); 2613 < 0) {<= preAllocated.length - 4) { /*
2507 < 0) {<= preAllocated.length - 4) { addKDPoint(clientX, plotY, i); 2614 < 0) {<= preAllocated.length - 4) { * We need to handle heatmaps separatly, since we can't perform the
2508 < 0) {<= preAllocated.length - 4) { } 2615 < 0) {<= preAllocated.length - 4) { * size/color calculations in the shader easily.
-   2616 < 0) {<= preAllocated.length - 4) { *
-   2617 < 0) {<= preAllocated.length - 4) { * This likely needs future optimization.
-   2618 < 0) {<= preAllocated.length - 4) { *
2509 < 0) {<= preAllocated.length - 4) { } 2619 < 0) {<= preAllocated.length - 4) { */
-   2620 < 0) {<= preAllocated.length - 4) { each(['heatmap', 'treemap'],
2510 < 0) {<= preAllocated.length - 4) { wasNull = isNull && !connectNulls; 2621 < 0) {<= preAllocated.length - 4) { function(t) {
2511 < 0) {<= preAllocated.length - 4) { } 2622 < 0) {<= preAllocated.length - 4) { if (seriesTypes[t]) {
2512 < 0) {<= preAllocated.length - 4) { -  
2513 < 0) {<= preAllocated.length - 4) { return !chartDestroyed; -  
2514 < 0) {<= preAllocated.length - 4) { } -  
2515 < 0) {<= preAllocated.length - 4) { -  
2516 < 0) {<= preAllocated.length - 4) { function doneProcessing() { 2623 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes[t].prototype, 'drawPoints', pointDrawHandler);
2517 < 0) {<= preAllocated.length - 4) { fireEvent(series, 'renderedCanvas'); -  
2518 < 0) {<= preAllocated.length - 4) { // Pass tests in Pointer. 2624 < 0) {<= preAllocated.length - 4) { seriesTypes[t].prototype.directTouch = false; // Use k-d-tree
2519 < 0) {<= preAllocated.length - 4) { // Replace this with a single property, and replace when zooming in -  
2520 < 0) {<= preAllocated.length - 4) { // below boostThreshold. -  
2521 < 0) {<= preAllocated.length - 4) { series.directTouch = false; 2625 < 0) {<= preAllocated.length - 4) { }
2522 < 0) {<= preAllocated.length - 4) { series.options.stickyTracking = true; 2626 < 0) {<= preAllocated.length - 4) { }
2523 < 0) {<= preAllocated.length - 4) { 2627 < 0) {<= preAllocated.length - 4) { );
2524 < 0) {<= preAllocated.length - 4) { delete series.buildKDTree; // Go back to prototype, ready to build 2628 < 0) {<= preAllocated.length - 4) {
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( -  
2530 < 0) {<= preAllocated.length - 4) { isStacked ? series.data : (xData || rawData), -  
2531 < 0) {<= preAllocated.length - 4) { processPoint, -  
2532 < 0) {<= preAllocated.length - 4) { doneProcessing, 2629 < 0) {<= preAllocated.length - 4) { if (seriesTypes.bubble) {
2533 < 0) {<= preAllocated.length - 4) { chart.renderer.forExport ? Number.MAX_VALUE : undefined -  
2534 < 0) {<= preAllocated.length - 4) { ); -  
2535 < 0) {<= preAllocated.length - 4) { } -  
2536 < 0) {<= preAllocated.length - 4) { }); 2630 < 0) {<= preAllocated.length - 4) { // By default, the bubble series does not use the KD-tree, so force it
2537 < 0) {<= preAllocated.length - 4) { 2631 < 0) {<= preAllocated.length - 4) { // to.
2538 < 0) {<= preAllocated.length - 4) { /* Used for treemap|heatmap.drawPoints */ -  
2539 < 0) {<= preAllocated.length - 4) { function pointDrawHandler(proceed) { -  
2540 < 0) {<= preAllocated.length - 4) { if (!isSeriesBoosting(this)) { -  
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 2635 < 0) {<= preAllocated.length - 4) { // Needed for markers to work correctly
2545 < 0) {<= preAllocated.length - 4) { var renderer = createAndAttachRenderer(this.chart, this); 2636 < 0) {<= preAllocated.length - 4) { wrap(
2546 < 0) {<= preAllocated.length - 4) { 2637 < 0) {<= preAllocated.length - 4) { seriesTypes.bubble.prototype,
2547 < 0) {<= preAllocated.length - 4) { if (renderer) { -  
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) { } 2640 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(this)) {
2551 < 0) {<= preAllocated.length - 4) { 2641 < 0) {<= preAllocated.length - 4) { return false;
2552 < 0) {<= preAllocated.length - 4) { renderIfNotSeriesBoosting(renderer, this); 2642 < 0) {<= preAllocated.length - 4) { }
2553 < 0) {<= preAllocated.length - 4) { } -  
2554 < 0) {<= preAllocated.length - 4) { 2643 < 0) {<= preAllocated.length - 4) { return proceed.apply(this, [].slice.call(arguments, 1));
2555 < 0) {<= preAllocated.length - 4) { /* -  
-   2644 < 0) {<= preAllocated.length - 4) { }
2556 < 0) {<= preAllocated.length - 4) { * We need to handle heatmaps separatly, since we can't perform the size/color 2645 < 0) {<= preAllocated.length - 4) { );
-   2646 < 0) {<= preAllocated.length - 4) { }
-   2647 < 0) {<= preAllocated.length - 4) {
2557 < 0) {<= preAllocated.length - 4) { * calculations in the shader easily. 2648 < 0) {<= preAllocated.length - 4) { seriesTypes.scatter.prototype.fill = true;
2558 < 0) {<= preAllocated.length - 4) { * 2649 < 0) {<= preAllocated.length - 4) {
-   2650 < 0) {<= preAllocated.length - 4) { extend(seriesTypes.area.prototype, {
2559 < 0) {<= preAllocated.length - 4) { * This likely needs future optimization. 2651 < 0) {<= preAllocated.length - 4) { fill: true,
2560 < 0) {<= preAllocated.length - 4) { * 2652 < 0) {<= preAllocated.length - 4) { fillOpacity: true,
2561 < 0) {<= preAllocated.length - 4) { */ 2653 < 0) {<= preAllocated.length - 4) { sampling: true
2562 < 0) {<= preAllocated.length - 4) { each(['heatmap', 'treemap'], 2654 < 0) {<= preAllocated.length - 4) { });
2563 < 0) {<= preAllocated.length - 4) { function(t) { -  
2564 < 0) {<= preAllocated.length - 4) { if (seriesTypes[t]) { 2655 < 0) {<= preAllocated.length - 4) {
2565 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes[t].prototype, 'drawPoints', pointDrawHandler); -  
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) { 2661 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'setVisible', function(proceed, vis) {
2572 < 0) {<= preAllocated.length - 4) { // By default, the bubble series does not use the KD-tree, so force it to. 2662 < 0) {<= preAllocated.length - 4) { proceed.call(this, vis, false);
2573 < 0) {<= preAllocated.length - 4) { delete seriesTypes.bubble.prototype.buildKDTree; 2663 < 0) {<= preAllocated.length - 4) { if (this.visible === false && this.ogl && this.canvas && this.image) {
2574 < 0) {<= preAllocated.length - 4) { seriesTypes.bubble.prototype.directTouch = false; -  
2575 < 0) {<= preAllocated.length - 4) { 2664 < 0) {<= preAllocated.length - 4) { this.ogl.clear();
2576 < 0) {<= preAllocated.length - 4) { // Needed for markers to work correctly -  
2577 < 0) {<= preAllocated.length - 4) { wrap(seriesTypes.bubble.prototype, 'markerAttribs', function(proceed) { -  
2578 < 0) {<= preAllocated.length - 4) { if (isSeriesBoosting(this)) { 2665 < 0) {<= preAllocated.length - 4) { this.image.attr({
2579 < 0) {<= preAllocated.length - 4) { return false; -  
2580 < 0) {<= preAllocated.length - 4) { } 2666 < 0) {<= preAllocated.length - 4) { href: ''
2581 < 0) {<= preAllocated.length - 4) { return proceed.apply(this, [].slice.call(arguments, 1)); -  
2582 < 0) {<= preAllocated.length - 4) { }); 2667 < 0) {<= preAllocated.length - 4) { });
2583 < 0) {<= preAllocated.length - 4) { } -  
2584 < 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) { -  
2587 < 0) {<= preAllocated.length - 4) { extend(seriesTypes.area.prototype, { 2670 < 0) {<= preAllocated.length - 4) { }
-   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) { /**
2590 < 0) {<= preAllocated.length - 4) { sampling: true 2674 < 0) {<= preAllocated.length - 4) { * Take care of the canvas blitting
2591 < 0) {<= preAllocated.length - 4) { }); 2675 < 0) {<= preAllocated.length - 4) { */
2592 < 0) {<= preAllocated.length - 4) { 2676 < 0) {<= preAllocated.length - 4) { H.Chart.prototype.callbacks.push(function(chart) {
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) { }); -  
2597 < 0) {<= preAllocated.length - 4) { -  
2598 < 0) {<= preAllocated.length - 4) { wrap(Series.prototype, 'setVisible', function(proceed, vis) { -  
2599 < 0) {<= preAllocated.length - 4) { proceed.call(this, vis, false); 2677 < 0) {<= preAllocated.length - 4) {
2600 < 0) {<= preAllocated.length - 4) { if (this.visible === false && this.ogl && this.canvas && this.image) { -  
2601 < 0) {<= preAllocated.length - 4) { this.ogl.clear(); 2678 < 0) {<= preAllocated.length - 4) { /* Convert chart-level canvas to image */
2602 < 0) {<= preAllocated.length - 4) { this.image.attr({ 2679 < 0) {<= preAllocated.length - 4) { function canvasToSVG() {
2603 < 0) {<= preAllocated.length - 4) { href: '' 2680 < 0) {<= preAllocated.length - 4) { if (chart.ogl && isChartSeriesBoosting(chart)) {
-   2681 < 0) {<= preAllocated.length - 4) { chart.ogl.render(chart);
2604 < 0) {<= preAllocated.length - 4) { }); 2682 < 0) {<= preAllocated.length - 4) { }
2605 < 0) {<= preAllocated.length - 4) { } else { 2683 < 0) {<= preAllocated.length - 4) { }
2606 < 0) {<= preAllocated.length - 4) { this.chart.redraw(); 2684 < 0) {<= preAllocated.length - 4) {
2607 < 0) {<= preAllocated.length - 4) { } 2685 < 0) {<= preAllocated.length - 4) { /* Clear chart-level canvas */
2608 < 0) {<= preAllocated.length - 4) { }); 2686 < 0) {<= preAllocated.length - 4) { function preRender() {
2609 < 0) {<= preAllocated.length - 4) { 2687 < 0) {<= preAllocated.length - 4) {
2610 < 0) {<= preAllocated.length - 4) { /** 2688 < 0) {<= preAllocated.length - 4) { if (!isChartSeriesBoosting(chart) && chart.didBoost) {
2611 < 0) {<= preAllocated.length - 4) { * Take care of the canvas blitting 2689 < 0) {<= preAllocated.length - 4) { chart.didBoost = false;
2612 < 0) {<= preAllocated.length - 4) { */ 2690 < 0) {<= preAllocated.length - 4) { // Clear the canvas
2613 < 0) {<= preAllocated.length - 4) { H.Chart.prototype.callbacks.push(function(chart) { 2691 < 0) {<= preAllocated.length - 4) { if (chart.image) {
2614 < 0) {<= preAllocated.length - 4) { 2692 < 0) {<= preAllocated.length - 4) { chart.image.attr({
2615 < 0) {<= preAllocated.length - 4) { /* Convert chart-level canvas to image */ 2693 < 0) {<= preAllocated.length - 4) { href: ''
2616 < 0) {<= preAllocated.length - 4) { function canvasToSVG() { 2694 < 0) {<= preAllocated.length - 4) { });
2617 < 0) {<= preAllocated.length - 4) { if (chart.ogl && isChartSeriesBoosting(chart)) { 2695 < 0) {<= preAllocated.length - 4) { }
2618 < 0) {<= preAllocated.length - 4) { chart.ogl.render(chart); 2696 < 0) {<= preAllocated.length - 4) { }
2619 < 0) {<= preAllocated.length - 4) { } 2697 < 0) {<= preAllocated.length - 4) {
2620 < 0) {<= preAllocated.length - 4) { } 2698 < 0) {<= preAllocated.length - 4) { if (chart.canvas && chart.ogl && isChartSeriesBoosting(chart)) {
2621 < 0) {<= preAllocated.length - 4) { 2699 < 0) {<= preAllocated.length - 4) { chart.didBoost = true;
2622 < 0) {<= preAllocated.length - 4) { /* Clear chart-level canvas */ 2700 < 0) {<= preAllocated.length - 4) {
2623 < 0) {<= preAllocated.length - 4) { function preRender() { 2701 < 0) {<= preAllocated.length - 4) { // Allocate
2624 < 0) {<= preAllocated.length - 4) { if (chart.canvas && chart.ogl && isChartSeriesBoosting(chart)) { 2702 < 0) {<= preAllocated.length - 4) { chart.ogl.allocateBuffer(chart);
2625 < 0) {<= preAllocated.length - 4) { // Allocate 2703 < 0) {<= preAllocated.length - 4) { }
2626 < 0) {<= preAllocated.length - 4) { chart.ogl.allocateBuffer(chart); 2704 < 0) {<= preAllocated.length - 4) {
2627 < 0) {<= preAllocated.length - 4) { } 2705 < 0) {<= preAllocated.length - 4) { //see #6518 + #6739
2628 < 0) {<= preAllocated.length - 4) { 2706 < 0) {<= preAllocated.length - 4) { if (chart.markerGroup && chart.xAxis && chart.xAxis.length > 0 && chart.yAxis && chart.yAxis.length > 0) {
2629 < 0) {<= preAllocated.length - 4) { //see #6518 2707 < 0) {<= preAllocated.length - 4) { chart.markerGroup.translate(
2630 < 0) {<= preAllocated.length - 4) { if (chart.markerGroup) { 2708 < 0) {<= preAllocated.length - 4) { chart.xAxis[0].pos,
2631 < 0) {<= preAllocated.length - 4) { chart.markerGroup.translate( 2709 < 0) {<= preAllocated.length - 4) { chart.yAxis[0].pos
2632 < 0) {<= preAllocated.length - 4) { chart.xAxis[0].pos, 2710 < 0) {<= preAllocated.length - 4) { );
2633 < 0) {<= preAllocated.length - 4) { chart.yAxis[0].pos 2711 < 0) {<= preAllocated.length - 4) { }
2634 < 0) {<= preAllocated.length - 4) { ); 2712 < 0) {<= preAllocated.length - 4) {
2635 < 0) {<= preAllocated.length - 4) { } 2713 < 0) {<= preAllocated.length - 4) { }
2636 < 0) {<= preAllocated.length - 4) { } 2714 < 0) {<= preAllocated.length - 4) {
2637 < 0) {<= preAllocated.length - 4) { 2715 < 0) {<= preAllocated.length - 4) { addEvent(chart, 'predraw', preRender);
2638 < 0) {<= preAllocated.length - 4) { addEvent(chart, 'predraw', preRender); 2716 < 0) {<= preAllocated.length - 4) { addEvent(chart, 'render', canvasToSVG);
2639 < 0) {<= preAllocated.length - 4) { addEvent(chart, 'render', canvasToSVG); 2717 < 0) {<= preAllocated.length - 4) { });
2640 < 0) {<= preAllocated.length - 4) { }); 2718 < 0) {<= preAllocated.length - 4) { } // if hasCanvasSupport
2641 < 0) {<= preAllocated.length - 4) { 2719 < 0) {<= preAllocated.length - 4) {
2642 < 0) {<= preAllocated.length - 4) { }(Highcharts)); 2720 < 0) {<= preAllocated.length - 4) { }(Highcharts));
2643 < 0) {<= preAllocated.length - 4) { })); 2721 < 0) {<= preAllocated.length - 4) { }));
2644 < 0) {<= preAllocated.length - 4) { 2722 < 0) {<= preAllocated.length - 4) {